日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数据库异常关闭后无法启动问题处理

發布時間:2024/4/11 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库异常关闭后无法启动问题处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
某系統突然掉電,系統啟動后發現Oracle無法啟動。啟動時報如下錯誤: <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

?

ORA-01102 cannot mount database in EXCLUSIVE mode ?

?

出現1102錯誤可能有以下幾種可能:

?

一、在HA系統中,已經有其他節點啟動了實例,將雙機共享的資源(如磁盤陣列上的裸設備)占用了;

?

?

?

二、說明Oracle被異常關閉時,有資源沒有被釋放,一般有以下幾種可能,

?

1 Oracle的共享內存段或信號量沒有被釋放;

?

2 Oracle的后臺進程(如SMONPMONDBWn等)沒有被關閉;

?

3 用于鎖內存的文件lk<sid>sgadef<sid>.dbf文件沒有被刪除。

?

首先,雖然我們的系統是HA系統,但是備節點的實例始終處在關閉狀態,這點通過在備節點上查數據庫狀態可以證實。

?

其次、是因系統掉電引起數據庫宕機的,系統在接電后被重啟,因此我們排除了第二種可能種的12點。最可疑的就是第3點了。

$ORACLE_HOME/dbs目錄:

$ cd $ORACLE_HOME/dbs $ ls sgadef* sgadef* not found $ ls lk* lkORA92 ?

果然,lk<sid>文件沒有被刪除。將它刪除掉

?

$ rm lk* ?

再啟動數據庫,成功。

?

如果懷疑是共享內存沒有被釋放,可以用以下命令查看:

?

$ipcs -mop IPC status from /dev/kmem as of Thu Jul? 6 14:41:43 2006 T????? ID???? KEY??????? MODE??????? OWNER???? GROUP NATTCH? CPID? LPID Shared Memory: m?????? 0 0x411c29d6 --rw-rw-rw-????? root????? root????? 0?? 899?? 899 m?????? 1 0x4e0c0002 --rw-rw-rw-????? root????? root????? 2?? 899?? 901 m?????? 2 0x4120007a --rw-rw-rw-????? root????? root????? 2?? 899?? 901 m? 458755 0x0c6629c9 --rw-r-----????? root?????? sys????? 2? 9113 17065 m?????? 4 0x06347849 --rw-rw-rw-????? root????? root????? 1? 1661? 9150 m?? 65541 0xffffffff --rw-r--r--????? root????? root????? 0? 1659? 1659 m? 524294 0x5e100011 --rw-------????? root????? root????? 1? 1811? 1811 m? 851975 0x5fe48aa4 --rw-r-----??? oracle? oinstall???? 66? 2017 25076 ?

然后它ID號清除共享內存段:

?

$ipcrm –m 851975 ?

對于信號量,可以用以下命令查看:

?

$ ipcs -sop IPC status from /dev/kmem as of Thu Jul? 6 14:44:16 2006 T????? ID???? KEY??????? MODE??????? OWNER???? GROUP Semaphores: s?????? 0 0x4f1c0139 --ra-------????? root????? root ... ... s????? 14 0x6c200ad8 --ra-ra-ra-????? root????? root s????? 15 0x6d200ad8 --ra-ra-ra-????? root????? root s????? 16 0x6f200ad8 --ra-ra-ra-????? root????? root s????? 17 0xffffffff --ra-r--r--????? root????? root s????? 18 0x410c05c7 --ra-ra-ra-????? root????? root s????? 19 0x00446f6e --ra-r--r--????? root????? root s????? 20 0x00446f6d --ra-r--r--????? root????? root s????? 21 0x00000001 --ra-ra-ra-????? root????? root s?? 45078 0x67e72b58 --ra-r-----??? oracle? oinstall ?

?

根據信號量ID,用以下命令清除信號量:

?

$ipcrm -s 45078 ?

如果是Oracle進程沒有關閉,用以下命令查出存在的oracle進程:

?

$ ps -ef|grep ora ? oracle 29976???? 1? 0? Jun 22? ????????? 0:52 ora_dbw0_ora92 ? oracle 29978???? 1? 0? Jun 22? ????????? 0:51 ora_dbw1_ora92 ? oracle? 5128???? 1? 0? Jul? 5? ????????? 0:00 oracleora92 (LOCAL=NO) ... ... ?

然后用kill -9命令殺掉進程

?

$kill -9 <PID> ?

總結:

?

當發生1102錯誤時,可以按照以下流程檢查、排錯:

?

如果是HA系統,檢查其他節點是否已經啟動實例; 檢查Oracle進程是否存在,如果存在則殺掉進程; 檢查信號量是否存在,如果存在,則清除信號量; 檢查共享內存段是否存在,如果存在,則清除共享內存段; 檢查鎖內存文件lk<sid>sgadef<sid>.dbf是否存在,如果存在,則刪除。

轉載于:https://blog.51cto.com/baochangjun/200581

總結

以上是生活随笔為你收集整理的数据库异常关闭后无法启动问题处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。