ORA-01097錯誤解決辦法及探索shutdown immediate

pingley發表於2012-04-04
ORA-01097錯誤解決辦法及探索shutdown immediate
很晚了要關機睡覺了,先把oralce 資料庫關閉,結果出現下面的錯誤。
SQL> shutdown immediate
ORA-01097: cannot shutdown while in a transaction - commit or rollback first
提示說在一個事物未提交或者回滾前不能shutdown.我才想到我對一個測試用的表,進行了下面的更新而沒有提交。
SQL> update test01
  2  set (id,name)
  3  = ( select 102,'huawei' from dual)
  4  where id=100;
1 row updated.
現在來提交下。
SQL> commit
  2  ;
Commit complete.
再次嘗試關閉資料庫OK 了。
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
雖然這個錯誤很簡單,但是不能放過每一次學習的機會,趁此學些下shutdown immediate。正如它的名字使用這種方式關閉資料庫是比較快速的。並且在下次重啟的時候不需要做例項恢復。
使用shutdown immediate 會經歷以下的情景。
1、不允許對資料庫發起新的連線,會話不能發起新的事務。
2、沒有提交的事務要先提交或者回滾。(正如你所看到了oracle 不會自動的完成該項工作所以你需要自己來提交或者回滾事務)不過出現這種情況,可能會延遲關閉資料庫的時間具體取決於事務的長度與數量。
3、 oracle 資料庫會主動的斷開與使用者的連線。
第二天開機以後我模擬了昨天關機的情景,是為了想證明oracle 會不會自動的幫我們做提交或者回滾。先往測試表中插入一條記錄,不提交。
SQL> insert into test01 
  2  values (103,'newland');
1 row created.
嘗試關機。
SQL> shutdown immediate
ORA-01097: cannot shutdown while in a transaction - commit or rollback first
再關
SQL> shutdown immediate
再關。。。
ORA-01097: cannot shutdown while in a transaction - commit or rollback first
再關。。。。。。。
SQL> shutdown immediate
ORA-01097: cannot shutdown while in a transaction - commit or rollback first
顯然oracle 不會自動的幫會話提交事務或者回滾事務。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26110315/viewspace-720298/,如需轉載,請註明出處,否則將追究法律責任。

相關文章