共計 2701 個字符,預計需要花費 7 分鐘才能閱讀完成。
行業資訊
數據庫
MySQL 數據庫
解決 oracle 數據庫 ORA-01081: cannot start already-running ORACLE – shut it down first 的方法
解決 oracle 數據庫 ORA-01081: cannot start already-running ORACLE – shut it down first 的方法
發布時間:2020-11-13 17:49:39
來源:丸趣 TV
閱讀:5164
作者:小新
欄目:MySQL 數據庫
自動寫代碼機器人,免費開通
這篇文章主要介紹解決 oracle 數據庫 ORA-01081: cannot start already-running ORACLE – shut it down first 的方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
當檢查 oracle 實例后臺進程不存在這時啟動啟動數據庫報錯:
ORA-01081: cannot start already-running ORACLE – shut it down first
造成此種原因是
Orphaned shared memory segments and semaphores did not get cleared properly
from the last instance shutdown.
在 oracle 實例最后一次 shutdown 時,某一個孤立的共享內存段和信號沒有被清理干凈
解決方法
可以利用 ipcs 來找出共享內存段或者信號,利用 ipcrm 來手動清除
orphaned shared memory segments(孤立的共享內存段)和 semaphores(信號量)
[root@wl ~]# ipcs -a
—— Shared Memory Segments ——–
key shmid owner perms bytes nattch status
0x00000000 688138 oracle 640 4096 0
0x00000000 720907 oracle 640 4096 0
—— Semaphore Arrays ——–
key semid owner perms nsems
0x000000a7 0 root 600 1
0x00000000 688138 oracle 640 4096 0
0x00000000 720907 oracle 640 4096 0
[root@wl ~]# ipcs -m
—— Shared Memory Segments ——–
key shmid owner perms bytes nattch status
0x00000000 688138 oracle 640 4096 0
0x00000000 720907 oracle 640 4096 0
[root@wl ~]# ipcrm – m 720907
ipcs:檢查分配的共享內存
ipcrm:手動釋放共享內存段
取得 ipc 信息:
ipcs [-m|-q|-s]
-m 輸出有關共享內存 (shared memory) 的信息
-q 輸出有關信息隊列 (message queue) 的信息
-s 輸出有關“信號量”(semaphore)的信息
-a 使用所有打印選項. (針對 -b, -c, -o, -p, and - t 的速記符)
Example:
ipcrm -m shmid 號 – for shared memory
ipcrm -s semid 號 – for semaphores
OR
Shutdown all the instances belonging to the user. Next, run ipcs -b to find the remaining IPC
facilities, owned by the same user, and remove them. However, if you re running multiple production
instances, this may not be acceptable.
在多實例的情況下
1. 運行
ipcs -a /tmp/ipcs_before.out
2. 用 SQL*Plus 連接所有實例做一個簡單的查詢
select * from dual;
3. 再次運行
ipcs -a /tmp/ipcs_after.out
4. 對比 /tmp/ipcs_before.out 與 /tmp/ipcs_after.out 文件
查找 LPID 沒有改變的共享內存段
These are the orphaned shared memory segments you are looking for:
LPID 顯示最后過程中附加或者分立共享內存段的進程 ID
因為,通過在每一個活著的實例中執行查詢,你會涉及到屬于各自實例的共享內存段,
但是未涉及的共享內存段將變成孤立的一個
5. After identifying the orphaned shared memory segments, you can find
the orphaned semaphores by locating the semaphores with the same
value of CTIME in ipcs -a output as the value of CTIME for the
orphaned shared memory segments: CTIME shows the time when the
associated entry was created or changed.
在識別孤立的共享內存段后,可以通過 ipcs - a 的輸出確定具有相同 CTIME 值的信號找到孤立的共享內存段
作為相關孤立共享內存段的值
以上是解決 oracle 數據庫 ORA-01081: cannot start already-running ORACLE – shut it down first 的方法的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注丸趣 TV 行業資訊頻道!
向 AI 問一下細節丸趣 TV 網 – 提供最優質的資源集合!