關於Oracle中重啟資料庫的一個bug
關於drop database在oracle中是致命的操作,這個操作自己在測試環境中體驗過,會完全刪除資料檔案,因此這個操作非常敏感但是實用性不強,不過話說過來,這個操作也不是隨便就能執行的,除了操作敏感的許可權之外,其實還是有一些前提條件的。
在資料庫open狀態,是無法執行這個命令的。
SQL> drop database TEST;
drop database TEST
*
ERROR at line 1:
ORA-00933: SQL command not properly ended
需要重啟到mount階段。
SQL> alter database mount exclusive;
Database altered.
SQL> drop database TEST;
drop database TEST
*
ERROR at line 1:
ORA-00933: SQL command not properly ended
同時還要保證處於exclustrict模式。
SQL> drop database;--要執行還是不容易的。
drop database
*
ERROR at line 1:
ORA-12719: operation requires database is in RESTRICTED mode
SQL> alter system enable restricted session;
System altered.
SQL> drop database;
Database dropped.
今天網友提供了一個精簡的兩個命令。就把停庫,重啟到Mount,設定restrict mode,drop database的步驟都完成了。
自己在本地的測試庫中也嘗試了一下,看看能不能啟動到restrict模式下.,結果執行的時候報了一個ORA錯誤就退出了。
idle> startup force mount restrict;
ORA-00000: normal, successful completion
在資料庫open狀態,是無法執行這個命令的。
SQL> drop database TEST;
drop database TEST
*
ERROR at line 1:
ORA-00933: SQL command not properly ended
需要重啟到mount階段。
SQL> alter database mount exclusive;
Database altered.
SQL> drop database TEST;
drop database TEST
*
ERROR at line 1:
ORA-00933: SQL command not properly ended
同時還要保證處於exclustrict模式。
SQL> drop database;--要執行還是不容易的。
drop database
*
ERROR at line 1:
ORA-12719: operation requires database is in RESTRICTED mode
SQL> alter system enable restricted session;
System altered.
SQL> drop database;
Database dropped.
今天網友提供了一個精簡的兩個命令。就把停庫,重啟到Mount,設定restrict mode,drop database的步驟都完成了。
自己在本地的測試庫中也嘗試了一下,看看能不能啟動到restrict模式下.,結果執行的時候報了一個ORA錯誤就退出了。
idle> startup force mount restrict;
ORA-00000: normal, successful completion
其實對於這個問題,oerr的解釋感覺有些牽強,至少對於我來說是不可接受的。
$ oerr ora 00000
00000, 00000, "normal, successful completion"
// *Cause: Normal exit.
// *Action: None.
順著這個問題在metalink上看了一圈,突然有一個帖子引起了我的注意,就是關於錢包的一個設定。
關於錢包的設定,可以參考我之前對比MySQL和Oracle無密碼登入的案例。http://blog.itpub.net/23718752/viewspace-1659551/
metalink中相關的文章是Bug 11706168 - ORA-00000 during STARTUP with SQLNET.WALLET_OVERRIDE=TRUE (Doc ID 11706168.8)
由此可見很可能就是我碰到的這個bug.
我們來簡單驗證和復現一下。
如果啟用錢包的這個override特性,就出出現問題。
sys@TEST11G> startup force
ORA-00000: normal, successful completion
sys@TEST11G> !cat sqlnet.ora|grep SQLNET
SQLNET.WALLET_OVERRIDE=true
如果禁用,就會發現能夠正常重啟了。
idle> startup force
ORACLE instance started.
Total System Global Area 435224576 bytes
Fixed Size 1337044 bytes
Variable Size 272632108 bytes
Database Buffers 155189248 bytes
Redo Buffers 6066176 bytes
Database mounted.
Database opened.
idle> !cat sqlnet.ora|grep SQLNET
#SQLNET.WALLET_OVERRIDE=true
$ oerr ora 00000
00000, 00000, "normal, successful completion"
// *Cause: Normal exit.
// *Action: None.
順著這個問題在metalink上看了一圈,突然有一個帖子引起了我的注意,就是關於錢包的一個設定。
關於錢包的設定,可以參考我之前對比MySQL和Oracle無密碼登入的案例。http://blog.itpub.net/23718752/viewspace-1659551/
metalink中相關的文章是Bug 11706168 - ORA-00000 during STARTUP with SQLNET.WALLET_OVERRIDE=TRUE (Doc ID 11706168.8)
由此可見很可能就是我碰到的這個bug.
我們來簡單驗證和復現一下。
如果啟用錢包的這個override特性,就出出現問題。
sys@TEST11G> startup force
ORA-00000: normal, successful completion
sys@TEST11G> !cat sqlnet.ora|grep SQLNET
SQLNET.WALLET_OVERRIDE=true
如果禁用,就會發現能夠正常重啟了。
idle> startup force
ORACLE instance started.
Total System Global Area 435224576 bytes
Fixed Size 1337044 bytes
Variable Size 272632108 bytes
Database Buffers 155189248 bytes
Redo Buffers 6066176 bytes
Database mounted.
Database opened.
idle> !cat sqlnet.ora|grep SQLNET
#SQLNET.WALLET_OVERRIDE=true
對於這個問題的測試還沒有完,我們可以深究一下,這個問題在什麼場景下還會出現。
其實在同一個session中進行資料庫的重啟也是會有問題的。
我們在同一個session內重啟,停庫
idle> startup
ORACLE instance started.
Total System Global Area 435224576 bytes
Fixed Size 1337044 bytes
Variable Size 272632108 bytes
Database Buffers 155189248 bytes
Redo Buffers 6066176 bytes
Database mounted.
Database opened.
idle> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
當再次重啟的時候,就會出現這個問題了,當然這個問題還是和錢包相關的。
idle> startup
ORA-00000: normal, successful completion
其實在同一個session中進行資料庫的重啟也是會有問題的。
我們在同一個session內重啟,停庫
idle> startup
ORACLE instance started.
Total System Global Area 435224576 bytes
Fixed Size 1337044 bytes
Variable Size 272632108 bytes
Database Buffers 155189248 bytes
Redo Buffers 6066176 bytes
Database mounted.
Database opened.
idle> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
當再次重啟的時候,就會出現這個問題了,當然這個問題還是和錢包相關的。
idle> startup
ORA-00000: normal, successful completion
idle> !cat sqlnet.ora|grep SQLNET
SQLNET.WALLET_OVERRIDE=true
最後亮出那個精簡的命令,看看效果。
sys@TEST11G> startup force mount restrict;
ORACLE instance started.
Total System Global Area 435224576 bytes
Fixed Size 1337044 bytes
Variable Size 272632108 bytes
Database Buffers 155189248 bytes
Redo Buffers 6066176 bytes
Database mounted.
可以看到資料庫可以很快的重啟到Mount階段,然後設定為restrict模式。
當然,startup force也就是個人本地測試環境玩玩,工作中的環境中一概要撇清關係,因為後果是很嚴重的,別說破壞性操作,就算新特性的使用都是謹慎又謹慎的,這也是我們DBA存在的一種意義和價值所在。
SQLNET.WALLET_OVERRIDE=true
最後亮出那個精簡的命令,看看效果。
sys@TEST11G> startup force mount restrict;
ORACLE instance started.
Total System Global Area 435224576 bytes
Fixed Size 1337044 bytes
Variable Size 272632108 bytes
Database Buffers 155189248 bytes
Redo Buffers 6066176 bytes
Database mounted.
可以看到資料庫可以很快的重啟到Mount階段,然後設定為restrict模式。
當然,startup force也就是個人本地測試環境玩玩,工作中的環境中一概要撇清關係,因為後果是很嚴重的,別說破壞性操作,就算新特性的使用都是謹慎又謹慎的,這也是我們DBA存在的一種意義和價值所在。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-1676065/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle關於nvl的一個BugOracle
- 關於查詢不用重啟或者關閉資料庫的引數資料庫
- PL/SQL Develop的一個Bug[Oracle資料庫中慎用小寫表名]SQLdevOracle資料庫
- 一個關於recyclerView的bugView
- 關於UIInterfaceOrientation的一個bugUI
- 關於Oracle 資料庫備份的幾個概念Oracle資料庫
- 關於資料庫中的一些name資料庫
- 一個Oracle soft 啟用2個Clone 的資料庫Oracle資料庫
- 關於提高Oracle資料庫效能的四個誤區Oracle資料庫
- oracle中於資料庫相關的常用命令????Oracle資料庫
- 重啟資料庫的一場鬧劇資料庫
- 關於資料庫批次查詢的一個想法資料庫
- Oracle資料庫的啟動與關閉Oracle資料庫
- Oracle資料庫的啟動和關閉Oracle資料庫
- 快速掌握重啟Oracle資料庫的操作步驟Oracle資料庫
- 關於oracle 12c多租戶可插拔資料庫的啟停分析(一)Oracle資料庫
- 關於如何形成一個好的資料庫設計資料庫
- 關於一個資料庫列設計的問題資料庫
- 定時從一個資料庫表中的資料儲存到另外一個資料庫中的表,而且怎麼處理重複的資料?...資料庫
- ORACLE資料庫的啟動和關閉(轉)Oracle資料庫
- 記php-fpm重啟導致的一個bugPHP
- oracle 9i for linux 9.2.0.4 中開啟autotrace中的一個bug。OracleLinux
- 一個關於資料庫關閉很有意思的現象資料庫
- 關於oracle中的sql資料型別OracleSQL資料型別
- 關於 oracle 設定引數時,scope型別為memory,重啟資料庫後引數失效Oracle型別資料庫
- 一則資料庫無法重啟的案例分析資料庫
- 關於Oracle資料庫與MySQL資料庫的幾點區別Oracle資料庫MySql
- Oracle中關於資料庫例項名與資料庫服務名(轉載)Oracle資料庫
- 關於Oracle資料庫的時間查詢Oracle資料庫
- 3.1.5.1 關於啟動資料庫例項資料庫
- 隨系統啟動關閉的oracle資料庫Oracle資料庫
- RAC資料庫重啟案例資料庫
- oracle的一個bugOracle
- 一個關於資料庫閃回區問題的處理資料庫
- 1.4.1. 關於Oracle 資料庫版本號Oracle資料庫
- MySQL關於timestamp和mysqldump的一個“bug”MySql
- 一個關於臨時物件的BUG(下) (轉)物件
- 關於oracle資料庫訊號量的問題Oracle資料庫