| I'm not sure what you mean about applying the "knock-offs" to Oracle on
Unix. Databases work differently under Unix. On a proprietary system,
the operating system generally handles the basic file system, memory
allocation, disk I/O, memory management, etc. On Unix systems, the
database software generally supersedes the operating system and does
the above at the DB level. There was an April, 89 article in Database
Programming & Design about how high-performance UNIX database vendors
function. They interviewed engineers at Oracle, AT&T, Sybase, and
Informix. In the case of Informix (the leader in the Unix market), the
disk space for the database is literally turned over to the RDBMS
software, which then bypasses the operating system to access and manage
the disk. UNIX has no strong native file system. On a UNIX system, the
RDBMS becomes the file system. So the orginal V6 comparison really
won't hold for UNIX.
---- Michael Booth
|
| Mike, thanks again for your response. I recall that article and will reread it
to learn some more.
I understand some of the differences between UNIX and VMS and how they affect
databases. When I referred to "knock-offs", I was looking specifically at
items that an operational assessment might uncover, such as:
_ 1. allocation of file space beyond assigned limits (extents);
_ 2. recovery from media failures;
_ 3. single processes for certain functions;
_ 4. multiversionning problem.
From my limited knowledge about Oracle, all of these items could be problems
that a properly designed operational assessment would expose. We have the chance
to influence the tests, so I was attempting to determine if these same problems
would exist in the UNIX environment. It seems like they would, but I was hoping
for some verification.
Finally, I must admit that I don't understand #4 above sufficiently well enough
to design a test scenario that would make it clear to the customer. Can one of
you Oracle experts please help out by laying out a scenario that would cause
the ORA-1555 error to occur? (only if this problem also exists in UNIX)
Thanks again for the help. Rusty.
|
| Two things:
1. Watch out for parameter PRE_PAGE_SGA which would be contained in
the INIT.ORA startup file (probably named the same for both
environments). On VMS, this parameter can cause the entire database
to be paged into each processes memory. I assume it would/could work
in a similar manner on U*x.
2. To have a chance at the ora-1555 error, here's what you have to do.
- establish small rollback segment sizes and only a few. The rollback
segment is used to recreate the read consistent view that a program
needs when repeating a read within the same txn.
- keep the sga as small as possible since it is used in concert with
the rollback seqments to recreate the record for a read_only (snapshot)
reader.
- write two programs. Program A must be designed to run a long time
and should select a lot of records. I believe you want to start the
transaction read_only as well. Within THE SAME TRANSACTION, repeatedly
read the same records performing various routines. For example, read
all records and sort by name, then read all records and sort by number,
print reports, etc. But DO NOT commit or rollback ... keep the txn
alive. Program B must be designed to update the majority of the
records that program A are repeatedly reading. So, when you start
program A, start one or more copies of program B. In program B, update
some of the records, delete some, etc. Commit often. What should
happen is this:
The first time through, program A should select a set of records. Then
as program B modifies the records, program A will loop and attempt to
read the SAME records again. When this happens, Oracle will recognize
that the data pages have been changed by program B but will read them
for program A. In order to get the pages and records correct, Oracle
will begin to read back through the rollback segments looking at time
stamps (and probably dbkeys) until it finds the RUJ type records from
which it can recreate the records before returning control to program
A. After sufficient activity, Oracle will reach the beginning of the
rollback segments without finding the appropriate records and thus
will be unable to recreate Program A's read_only records. At this
point, program A should abort with the ora-1555 "rollback segment not
old enough" message.
- be sure to run the oracle test over-and-over to be certain you can
reproduce this condition. Be aware that Oracle will tell the customer
to make the rollback segments larger, etc. So be prepared for that.
The important thing to note (and would be good to measure) is the
tremendous CPU and dio load when Oracle is managing read_only txns of
this nature.
Let us know if you are able to reproduce this condition.
-- gerry
|