Hi All,
Here is a simple scenario...
- Three sqlplus sessions started (817 or 901 database, doesn't matter)
- Two sessions (1 and 2) are used to simulate transaction activities
and the third one (3) to shutdown database.
- To start transaction I issue
sqlplus> SET TRANSACTION READ ONLY; in two sessions 1 and 2
(which prevents session from being disconnected with SHUTDOWN
TRANSACTIONAL;)
- Issue
sqlplus> SHUTDOWN TRANSACTIONAL; in session (3).
- Issue COMMIT; in session (1) which terminates transaction.(session
is up).
- Issue a simple select in session (1) which is suppose to be
disconnected after transaction is terminated with COMMIT;
(select * from dual, select * from dba_tablespaces... etc...)
STATEMENT SELECT RUNS FINE !!!!!!
HERE THE PROBLEM. IF YOU USE SET TRANSACTION READ ONLY IN APPLICATION
TO START THE TRANSACTION AND IF ORACLE WAITS UNTIL ALL TRANSACTIONS ARE
TERMINATED BEFORE SHUTING DOWN TRANSACTIONAL THEN UNDER HEAVY LOAD THE
DATABASE WILL NEVER SHUT DOWN.
7. Issue COMMIT; in session (2) which terminates the last active
transaction.
Both session (1 and 2) are disconnected and database shuts down.
--> Is it how this was designed...?
--> Here is what the manual says:
After submitting this statement, no client can start a new transaction
on this instance. If clients attempt to start a new transaction, they
are disconnected. After all transactions have completed, any client
still connected to the instance is disconnected.
Any help would be greatly appreciated...
Regards,
TheSlawek
Received on Thu Dec 06 2001 - 16:14:31 CST