【Shutdown】同一會話存在未提交事務時使用immediate選項無法關閉資料庫
這是一個事實,當同一會話存在未提交事務時使用immediate選項無法關閉資料庫。簡單看一下這個現象。
1.模擬未提交事務
這裡為了簡便,會話session1直接在sys使用者下建立表t進行測試。
sys@ora10g> create table t (x number);
Table created.
sys@ora10g> insert into t values (1);
1 row created.
2.使用immediate選項關閉資料庫
sys@ora10g> shutdown immediate;
ORA-01097: cannot shutdown while in a transaction - commit or rollback first
OK,錯誤提示“ORA-01097”已經給出,提示資訊解釋的非常清楚。因此在同一個會話session1中如果存在未提交的事務使用immediate選項是沒有辦法關閉資料庫的。
3.在其他會話中存在未提交事務時可被immediate選項關閉
1)首先我們提交上面第一個會話session1中的事務。
sys@ora10g> commit;
Commit complete.
2)另外開啟一個session2
在開一個會話session2同樣模擬一個未提交的事務
sys@ora10g> create table t2 (x number);
Table created.
sys@ora10g> insert into t2 values (2);
1 row created.
這裡不要提交事務。
3)回到session1中執行具有immediate選項的關閉資料庫命令
回到第一個視窗執行關閉資料庫的操作
sys@ora10g> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
可見此時關閉動作可以成功完成。
可以進一步確認第二個會話session2已經被強制殺死。這也是immediate選項本應具有的能力。
sec@ora10g> select * from t;
select * from t
*
ERROR at line 1:
ORA-03135: connection lost contact
ERROR:
ORA-03114: not connected to ORACLE
4.體驗無敵的abort方式關閉資料庫
1)啟動資料庫
sys@ora10g> startup;
ORACLE instance started.
Total System Global Area 209715200 bytes
Fixed Size 2071640 bytes
Variable Size 125830056 bytes
Database Buffers 75497472 bytes
Redo Buffers 6316032 bytes
Database mounted.
Database opened.
2)重新模擬同一會話中未提交事務
sys@ora10g> select * from t;
X
----------
1
sys@ora10g> delete from t;
1 row deleted.
3)確認immediate選項無法關閉資料庫
sys@ora10g> shutdown immediate;
ORA-01097: cannot shutdown while in a transaction - commit or rollback first
4)使用abort選項關閉資料庫
sys@ora10g> shutdown abort;
ORACLE instance shut down.
sys@ora10g>
可見abort選項的“閃電斷電式”關閉資料庫的方法是毫無任何羈絆的!
5.小結
這裡給出的是一個現象和事實。從中可以體會出不同關閉資料庫方式的細微差別(這裡僅僅討論了immediate和abort選項)。
Good luck.
secooler
11.01.08
-- The End --
1.模擬未提交事務
這裡為了簡便,會話session1直接在sys使用者下建立表t進行測試。
sys@ora10g> create table t (x number);
Table created.
sys@ora10g> insert into t values (1);
1 row created.
2.使用immediate選項關閉資料庫
sys@ora10g> shutdown immediate;
ORA-01097: cannot shutdown while in a transaction - commit or rollback first
OK,錯誤提示“ORA-01097”已經給出,提示資訊解釋的非常清楚。因此在同一個會話session1中如果存在未提交的事務使用immediate選項是沒有辦法關閉資料庫的。
3.在其他會話中存在未提交事務時可被immediate選項關閉
1)首先我們提交上面第一個會話session1中的事務。
sys@ora10g> commit;
Commit complete.
2)另外開啟一個session2
在開一個會話session2同樣模擬一個未提交的事務
sys@ora10g> create table t2 (x number);
Table created.
sys@ora10g> insert into t2 values (2);
1 row created.
這裡不要提交事務。
3)回到session1中執行具有immediate選項的關閉資料庫命令
回到第一個視窗執行關閉資料庫的操作
sys@ora10g> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
可見此時關閉動作可以成功完成。
可以進一步確認第二個會話session2已經被強制殺死。這也是immediate選項本應具有的能力。
sec@ora10g> select * from t;
select * from t
*
ERROR at line 1:
ORA-03135: connection lost contact
ERROR:
ORA-03114: not connected to ORACLE
4.體驗無敵的abort方式關閉資料庫
1)啟動資料庫
sys@ora10g> startup;
ORACLE instance started.
Total System Global Area 209715200 bytes
Fixed Size 2071640 bytes
Variable Size 125830056 bytes
Database Buffers 75497472 bytes
Redo Buffers 6316032 bytes
Database mounted.
Database opened.
2)重新模擬同一會話中未提交事務
sys@ora10g> select * from t;
X
----------
1
sys@ora10g> delete from t;
1 row deleted.
3)確認immediate選項無法關閉資料庫
sys@ora10g> shutdown immediate;
ORA-01097: cannot shutdown while in a transaction - commit or rollback first
4)使用abort選項關閉資料庫
sys@ora10g> shutdown abort;
ORACLE instance shut down.
sys@ora10g>
可見abort選項的“閃電斷電式”關閉資料庫的方法是毫無任何羈絆的!
5.小結
這裡給出的是一個現象和事實。從中可以體會出不同關閉資料庫方式的細微差別(這裡僅僅討論了immediate和abort選項)。
Good luck.
secooler
11.01.08
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-683634/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- shutdown immediate 持久無法關閉資料庫之解決方案資料庫
- shutdown immediate物理備庫長時間無法關閉案列
- 資料庫無法shutdown immediate的案例資料庫
- oracle 正常關閉shutdown immediate與開啟open資料庫alertOracle資料庫
- 因歸檔日誌無法歸檔造成的 oracle shutdown immediate無法關閉Oracle
- 11G的SYS連線阻止SHUTDOWN IMMEDIATE關閉資料庫資料庫
- MySQL多例項使用mysqld_multi stop 無法關閉資料庫MySql資料庫
- zt_Resolving Shutdown Immediate Hang Situations_shutdown immediate關庫慢
- 關閉資料庫遇到SHUTDOWN: Active processes prevent shutdown operation資料庫
- ora-24324資料庫無法關閉資料庫
- spring宣告式事務無法關閉sessionSpringSession
- 關閉資料庫時SHUTDOWN: waiting for active calls to complete.處理資料庫AI
- mongodb關閉資料庫例項MongoDB資料庫
- 【YashanDB知識庫】資料庫審計shutdown immediate操作導致資料庫異常退出資料庫
- 資料庫shutdown之後無法啟動的問題資料庫
- SQL Server 查出未提交事務(長事務)SQLSQLServer
- 資料庫shutdown immediate,control.ctl 檔案不能刪除資料庫
- 存在活躍事務時,UNDO被刪除,資料庫ABORT時的恢復資料庫
- 資料庫中事務、會話、執行緒這幾個概念是什麼關係資料庫會話執行緒
- [20151218]未提交事務儲存在那裡.txt
- 未提交事務造成的等待事件事件
- 輕鬆地將PHP會話儲存在MySQL資料庫PHP會話MySql資料庫
- 資料庫連線未關閉的問題資料庫
- 關於開啟資料庫時的resetlogs選項資料庫
- ORACLE DSG資料同步軟體程式導致資料庫無法正常關閉Oracle資料庫
- 事務已提交另外會話查詢不到的問題解析會話
- 在資料庫繁忙時如何快速有效的關閉MySQL服務資料庫MySql
- Shutdown immediate命令長時間等待分析一例
- [20160818]關閉資料庫會話的dblink.txt資料庫會話
- (轉) oracle 臨時表(事務級、會話級)Oracle會話
- 資料庫關閉資料庫
- 3.3.3 使用immiedit模式關閉資料庫模式資料庫
- 為DbContextScope新增資料庫事務提交完成事件Context資料庫事件
- 分散式資料庫事務的兩階段提交介紹分散式資料庫
- Oracle undo 表空間資料檔案丟失強制啟動資料庫(沒有未提交的事務)Oracle資料庫
- 【故障處理】資料庫無法正常關閉ORA-01089資料庫
- 備份 master 資料庫時的注意事項AST資料庫
- mongoDB因root啟動關閉資料庫導致mongo普通使用者無法啟動MongoDB資料庫