Re: Parallel Oracle NCR3600
Date: 29 Jul 1994 11:35:58 GMT
Message-ID: <31apiu$rnc_at_dcsun4.us.oracle.com>
Just to avoid some confusion...
The parallel server locks being talked about in this thread are NOT Oracle row level locks. The following example will illustrate the difference:
- Assume that the Parallel Server is set up so each distributed lock in the DLM (distributed lock manager) supplied by the O/S is defined in the init.ora to lock 1 page/block (the smallest unit that can be passed between nodes is a page/block, not a row). Note: most production systems set the init.ora so each parallel lock controls sets (>1) of blocks because a parallel lock is a resource (i.e. takes up space/ memory in the O/S).
- A user types a statement such as update emp set sal=5555 where empno=10 in sqlplus but does not type commit (yet).
- A user connected to another node in the parallel server types update emp set sal = 666 where empno = 20
- Assume that both rows are on the same block (physically) or the same set of blocks covered by one distributed lock manager lock. You now have what is called a "ping" because the block needs to be moved from one SGA (shared memory) to another machine's SGA to maintain "cache coherency".
- The one machine must pass the block to the send machine (to update empno = 20). After the transfer from one SGA to the other, the block still has a row in it (empno=10) that has an Oracle row lock (not committed) in it and the user in step#3 can commit his/her change while the user in step #2 has not decided to commit or rollback (could have done select for update).
- The conclusion is that distributed locks are for locking sets of blocks that are being requested to be changed by another server in the parallel server, but you still have row level locking going on for SQL operations.
DLM Locks != Oracle row locks
7. A good example of using the parllel server would be a 4 node system in
which 2 nodes are used for DSS and 2 for OLTP and multiple applications are really runing OLTP so users can log into the appropriate machine, but still have ONE database to manage. Since all DSS is going on in the shared memory on 2 servers, these machines will not "ping" any blocks from the OLTP servers (remember, Oracle has no read locks).
8. Comments about "every implementation" writes to disk to do a ping are not
correct. While most operating systems (which provide the DLM) handle it this way, some (e.g. IBM SP2, Ncube, Encore Infinity) have a much higher speed interconnect than ethernet.
-=:[<{()}>]:=--=:[<{()}>]:=--=:[<{()}>]:=--=:[<{()}>]:=--=:[<{()}>]:=--=:[<{()}
David Natelson Oracle Corporation dnatelso_at_oracle.com
-=:[<{()}>]:=--=:[<{()}>]:=--=:[<{()}>]:=--=:[<{()}>]:=--=:[<{()}>]:=--=:[<{()}
Received on Fri Jul 29 1994 - 13:35:58 CEST