Oracle Restart啟動資料庫例項故障一例
Oracle Restart是11gR2中推出的重要高可用(High Availability)特性。在Single Instance情況下,Clusterware形成一個可用性維護框架,Oracle元件服務都是在這個維護管理框架上進行管理。
Oracle Restart從職責上負責兩方面的功能,一個是Oracle各個服務元件的自動啟動。鑑於元件間複雜的依賴關係,使用Restart自動的進行啟動順序調節是比較好的一種策略。另一個功能是高可用支援,如果某一個元件意外被終止執行,比如異常中斷,Oracle Restart是可以定期的檢查“治下”元件的生存情況,一旦檢查出問題就會進行自動的啟動。
目前單例項Oracle使用Oracle Restart支援的元件內容有:監聽器Listener、Oracle例項和資料庫、ASM例項、ASM磁碟組、資料庫服務Service和ONS(Oracle Notification Service)。
本篇記錄筆者遇到的一個故障場景,不甚複雜,和行業大牛們大作不敢相比。權當思路記錄,留待需要的朋友不時之需。
1、問題故障出現
在一臺11gR2的Oracle上,筆者部署了單例項ASM例項和磁碟組結構,並且在上面部署了Single Instance Oracle。由於是測試使用,筆者在上面進行過一些測試和實驗,今天啟動伺服器之後,發現問題。
[grid@SimpleLinux simplelinux]$ uptime
13:58:13 up 2:24, 1 user, load average: 0.03, 0.02, 0.00
[grid@SimpleLinux simplelinux]$ ps -ef | grep pmon
grid 3212 1 0 11:35 ? 00:00:01 asm_pmon_+ASM
grid 27724 27685 0 13:58 pts/0 00:00:00 grep pmon
根據標準的Oracle Restart配置,ASM例項、ASM磁碟組和資料庫例項都是在Restart管理範圍,應該是隨著伺服器啟動而自動啟動。但是從實際情況看,ASM例項已經自動啟動,資料庫例項沒有啟動。
同RAC結構一樣,Restart也是藉助伺服器啟動過程中,以ohasd為首的高可用守護程式進行步步啟動動作。
這種情況下,檢視日誌資訊是最好的選擇,看看那個環節出現問題。
[grid@SimpleLinux simplelinux]$ pwd
/u01/app/grid/product/11.2.0/grid/log/simplelinux
[grid@SimpleLinux simplelinux]$ ls -l | grep alert
-rw-rw---- 1 grid oinstall 14494 Oct 17 11:35 alertsimplelinux.log
對grid和clusterware的日誌,都是保留在$ORACLE_HOME/log下的目錄從中。Alert.log是主日誌,也是檢查的起始點。通常是裡面發現的問題,進行進一步的分析動作。
[ohasd(2744)]CRS-2767:Resource state recovery not attempted for 'ora.diskmon' as its target state is OFFLINE
2013-10-17 11:35:34.373
[cssd(3130)]CRS-1601:CSSD Reconfiguration complete. Active nodes are simplelinux .
2013-10-17 11:35:50.094
[/u01/app/grid/product/11.2.0/grid/bin/oraagent.bin(3072)]CRS-5010:Update of configuration file "/u01/app/oracle/product/11.2.0/db_1/dbs/initora11g.ora" failed: details at "(:CLSN00014:)" in "/u01/app/grid/product/11.2.0/grid/log/simplelinux/agent/ohasd/oraagent_grid/oraagent_grid.log"
2013-10-17 11:35:55.645
[/u01/app/grid/product/11.2.0/grid/bin/oraagent.bin(3072)]CRS-5010:Update of configuration file "/u01/app/oracle/product/11.2.0/db_1/dbs/initora11g.ora" failed: details at "(:CLSN00014:)" in "/u01/app/grid/product/11.2.0/grid/log/simplelinux/agent/ohasd/oraagent_grid/oraagent_grid.log"
2013-10-17 11:35:55.806
[ohasd(2744)]CRS-2807:Resource 'ora.ora11g.db' failed to start automatically.
我們定位到了問題片段,從上面標紅的內容看。Clusterware在啟動dismon服務之後,試圖啟動資料庫,也就是ora.ora11g.db。在訪問一個引數檔案(注意是pfile)過程中,發現問題。
進一步檢查指出的oraagent_grid.log日誌,也沒有過多的資訊提示。
2013-10-17 11:35:50.049: [ora.ora11g.db][3013430160] {0:0:2} [start] sclsnInstAgent::sUpdateOratab file updated with dbName ora11g value /u01/app/oracle/product/11.2.0/db_1:N
2013-10-17 11:35:50.049: [ora.ora11g.db][3013430160] {0:0:2} [start] sclsnInstAgent::sUpdateOratab CSS unlock
2013-10-17 11:35:50.090: [ora.ora11g.db][3013430160] {0:0:2} [start] (:CLSN00014:)Failed to open file /u01/app/oracle/product/11.2.0/db_1/dbs/initora11g.ora
2013-10-17 11:35:50.091: [ AGENT][3013430160] {0:0:2} UserErrorException: Locale is
2013-10-17 11:35:50.091: [ora.ora11g.db][3013430160] {0:0:2} [start] clsnUtils::error Exception type=2 string=
CRS-5010: Update of configuration file "/u01/app/oracle/product/11.2.0/db_1/dbs/initora11g.ora" failed: details at "(:CLSN00014:)" in "/u01/app/grid/product/11.2.0/grid/log/simplelinux/agent/ohasd/oraagent_grid/oraagent_grid.log"
從資訊上看,是對pfile沒有能夠開啟。
2、問題解決
Oracle Restart是一個很複雜的體系,在沒有經驗和資料的情況下,筆者也不能證明說是Oracle Bug之類的。
一種思路可以進行嘗試。對於Oracle Restart,各種元件都是在上面可插拔的。根據需要,我們可以進行動態的配置註冊過程。從之前的情況看,資料庫本身是沒有問題的,應該就是配置過程中的故障。那麼,modify配置是有問題的。可不可以將database ora11g剔除出Restart體系,之後再新增過來。
Srvctl的add和remove命令可以幫助我們實現功能。而且在add過程中,只有-o引數是強制的,輸入ORACLE_HOME目錄。
[oracle@SimpleLinux dbs]$ srvctl remove database -d ora11g
Remove the database ora11g? (y/[n]) y
[oracle@SimpleLinux dbs]$ srvctl add database -d ora11g -o /u01/app/oracle/product/11.2.0/db_1
[oracle@SimpleLinux dbs]$ srvctl config database -d ora11g
Database unique name: ora11g
Database name:
Oracle home: /u01/app/oracle/product/11.2.0/db_1
Oracle user: oracle
Spfile:
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Database instance: ora11g
Disk Groups:
Services:
Spfile為空。試著重新啟動。
[oracle@SimpleLinux dbs]$ srvctl start database -d ora11g
[oracle@SimpleLinux dbs]$ ps -ef | grep pmon
grid 3215 1 0 14:47 ? 00:00:00 asm_pmon_+ASM
oracle 5265 1 0 15:22 ? 00:00:00 ora_pmon_ora11g
oracle 5386 3578 0 15:22 pts/0 00:00:00 grep pmon
[oracle@SimpleLinux dbs]$ srvctl config database -d ora11g
Database unique name: ora11g
Database name:
Oracle home: /u01/app/oracle/product/11.2.0/db_1
Oracle user: oracle
Spfile:
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Database instance: ora11g
Disk Groups: DATA,RECO
Services:
啟動成功!最後嘗試看看reboot系統時,能否自動啟動。
--重新啟動系統
[root@SimpleLinux simplelinux]# ps -ef | grep pmon
grid 3213 1 0 15:27 ? 00:00:00 asm_pmon_+ASM
oracle 3270 1 0 15:27 ? 00:00:00 ora_pmon_ora11g
root 3336 3042 0 15:27 pts/0 00:00:00 grep pmon
[grid@SimpleLinux ~]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 17-OCT-2013 15:32:07
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date 17-OCT-2013 15:27:06
Uptime 0 days 0 hr. 5 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/grid/product/11.2.0/grid/network/admin/listener.ora
Listener Log File /u01/app/grid/diag/tnslsnr/SimpleLinux/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=SimpleLinux.localdomain)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM", status READY, has 1 handler(s) for this service...
Service "ora11g" has 1 instance(s).
Instance "ora11g", status READY, has 1 handler(s) for this service...
Service "ora11gXDB" has 1 instance(s).
Instance "ora11g", status READY, has 1 handler(s) for this service...
The command completed successfully
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ----------------------------------------------------------
spfile string /u01/app/oracle/product/11.2.0/db_1/dbs/spfileora11g.ora
問題解決。
3、結論和反思
從直觀的感覺看,這應該是Restart和原有命令協調的一個故障。原有create pfile之後,Restart似乎不能夠支援pfile的啟動了。另外,在修復過程中,我們始終看到不能對spfile修改引數生效,也是一個疑惑點。
能夠肯定的是,在新增資料庫ora11g的時候,沒有明確指定啟動spfile的位置,那麼應該是進入了自動檢索目錄spfile-pfile的過程。所以系統得到修復。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9034054/viewspace-1976355/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle Restart啟動資料庫例項故障一例( Oracle ASM儲存Spfile解析)OracleREST資料庫ASM
- Oracle資料庫例項啟動步驟分析Oracle資料庫
- 由AIX系統故障導致系統重啟,使Oracle資料庫自動啟動例項AIOracle資料庫
- Oracle 資料庫例項啟動關閉過程Oracle資料庫
- oracle dataguard資料同步故障處理一例Oracle
- 4.1.3 使用 Oracle Restart 元件啟停資料庫OracleREST元件資料庫
- 【02】Oracle資料庫的例項啟動關閉詳解Oracle資料庫
- 通過SQL*Plus遠端啟動Oracle資料庫例項SQLOracle資料庫
- 3.1.5.4 啟動例項並mount 資料庫資料庫
- 3.1.5.1 關於啟動資料庫例項資料庫
- oracle 資料庫例項Oracle資料庫
- 軟硬碟都無法啟動故障一例 (轉)硬碟
- Oracle例項和Oracle資料庫Oracle資料庫
- oracle資料庫與oracle例項Oracle資料庫
- 例項管理及資料庫的啟動關閉資料庫
- 一臺MySQL資料庫啟動多個例項MySql資料庫
- RAC環境只啟動單例項資料庫單例資料庫
- oracle 12c 資料庫例項監聽無法註冊問題一例Oracle資料庫
- oracle資料庫連線後,hang機一例Oracle資料庫
- ORACLE 11gR2 單例項資料庫自啟Oracle單例資料庫
- ORACLE 11G 無法連線到資料庫例項故障排除Oracle資料庫
- oracle資料庫例項狀態Oracle資料庫
- 基於asm的單例項資料庫啟動時報錯ORA-15032 ORA-15063一例ASM單例資料庫
- 資料庫診斷一例資料庫
- RAC環境下單例項啟動Oracle資料庫重建控制檔案案例單例Oracle資料庫
- oracle資料庫建立資料庫例項-九五小龐Oracle資料庫
- 又一例SPFILE設定錯誤導致資料庫無法啟動資料庫
- 在本地修改預設啟動的資料庫例項名資料庫
- 啟動資料庫例項的限制模式(restrict mode)的方法資料庫模式REST
- 資料庫DML監控一例資料庫
- mysql資料庫恢復一例MySql資料庫
- 2 Day DBA-管理Oracle例項-關閉和啟動Oracle例項-使用OEMDC關閉和啟動Oracle例項Oracle
- MySQL SLAVE故障一例MySql
- 網路故障一例
- 資料庫異常關閉後無法啟動問題處理一例資料庫
- 3.1.5.7 啟動例項、掛載資料庫並啟動完整的媒體恢復資料庫
- 自動重新啟動oracle例項 for windowsOracleWindows
- 【轉】新建例項開啟已有的資料庫 — 資料庫與例項的區分測試資料庫