kill -9 殺掉oracle所有程式卻不能啟動和連線資料庫的解決辦法!
透過sqlplus "/as sysdba"登入資訊我們可以知道,sqlplus認為oracle資料庫並沒有關閉。
oracle的程式都不存在了,但sqlplus為什麼認為oracle沒有關閉呢?它是根據什麼來判斷的?
4、檢視此時的共享記憶體段情況
[oracle@rep ~]$ ipcs -as
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x91c11414 491531 oracle 640 142606336 10
------ Semaphore Arrays --------
key semid owner perms nsems
0xeddca300 360448 oracle 640 154
------ Message Queues --------
key msqid owner perms used-bytes messages
從上面的資訊可以看出,oracle之前佔用的共享記憶體段和訊號段都還在,而sqlplus是根據這些資訊來判斷資料庫是否關閉的。
我們雖然kill了oracle的程式,但是並沒有清除其對應的共享記憶體段和訊號段。
原因找到的,下面就是清除共享記憶體段和訊號段了。
清除共享記憶體段:
要清除oracle共享記憶體段,必須保證沒有任何連線連線到oracle資料庫上,否則清除共享記憶體段會失敗。
我們用暴力方法強制殺死連線到oracle的程式:
[root@rep ~]# ps -ef|grep ora|awk '{print $2}'|xargs kill -9
[root@rep ~]# su - oracle
[oracle@rep ~]$ ipcrm -m 491531
清除訊號段:
[oracle@rep ~]$ ipcrm -s 360448
檢視此時共享記憶體等資訊:
[oracle@rep ~]$ ipcs -as
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
------ Semaphore Arrays --------
key semid owner perms nsems
------ Message Queues --------
key msqid owner perms used-bytes messages
從上面資訊看到,共享記憶體段和訊號段已經被清除。
5、啟動oracle
清除完訊號段後,我們再用sys登入資料庫,就會發現,sqlplus已經認為資料庫是關閉的了。
此時我們可以正常啟動資料庫:
[oracle@rep ~]$ sqlplus "/as sysdba"
SQL*Plus: Release 9.2.0.4.0 - Production on D??úáù 7?? 28 14:17:46 2007
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to an idle instance.
idle> startup
ORACLE instance started.
Total System Global Area 135337420 bytes
Fixed Size 452044 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
Database mounted.
Database opened.
其實這種情況下,我們只需要清除訊號段就可以正常啟動資料庫,但為了更徹底一點,我們選擇了把共享記憶體也一併清除。
一般遇到這種情況有兩種解決方法:
1、直接重啟OS
2、清除共享記憶體和訊號量
最後簡單總結一下:
1、oracle程式終止不代表資料庫關閉
2、oracle程式異常中止時要及時清除對應的共享記憶體段和訊號段
3、sqlplus是根據訊號段來判斷oracle資料庫是否是關閉的
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7916042/viewspace-977160/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle自動斷開資料庫連線的解決辦法Oracle資料庫
- 掉電無法啟動資料庫問題解決資料庫
- 陣列櫃損壞修復後oracle資料庫不能正常啟動解決辦法陣列Oracle資料庫
- MYSQL++ 資料庫連線超時的解決辦法LTMySql資料庫
- PHP資料庫連線失敗–couldnotfinddriver解決辦法PHP資料庫
- 連線oracle錯誤解決辦法Oracle
- 不能連線資料庫如何解決資料庫
- 時區錯誤導致oracle的EM不能啟動解決辦法Oracle
- Win7本地連線經常掉線的解決辦法Win7
- 無線網路經常掉線的解決辦法
- Windows 7下載掉線解決辦法Windows
- 連線sql server時,不能使用127.0.0.1的解決辦法SQLServer127.0.0.1
- Navicat Premium_11不能連線oracle11g的解決辦法(ORA-28547)REMOracle
- Oracle 資料庫連線錯誤解決方法Oracle資料庫
- linux as4網路卡不能啟動的解決辦法Linux
- 解決資料庫連線池連線mysql時,每隔8小時mysql自動斷開所有連線的問題資料庫MySql
- 資料庫漏洞解決辦法資料庫
- Oracle10g出現Enterprise Manager 無法連線到資料庫例項解決辦法Oracle資料庫
- 資料庫連線不能建立.資料庫
- oracle 9iAgent無法啟動解決方案Oracle
- 解決無法連線SQL Server資料庫的方法BWSQLServer資料庫
- 使用 localhost 無法連線 MySQL 資料庫的解決方案localhostMySql資料庫
- SSH 連線卡頓解決辦法
- 【sqlserver】殺掉所有死鎖程式SQLServer
- HGAdmin無法連線本地資料庫解決方式資料庫
- jdbc連線oracle rac資料庫的寫法JDBCOracle資料庫
- 解決不能透過mysql.sock連線MySQL問題的辦法(轉)MySql
- 天貓魔盒斷電重啟後不能自動連無線怎麼辦?解決方法
- mysql資料庫連線過多的錯誤,可能的原因分析及解決辦法(轉)MySql資料庫
- windows無法配置此無線連線的解決辦法Windows
- 請關掉你的資料庫連線!並且請使用資料庫連線池資料庫
- 行動硬碟不能識別的解決辦法硬碟
- 不能建立sqlserver資料庫連線SQLServer資料庫
- JDBC連線資料庫時,Oracle9i的連線引數配置JDBC資料庫Oracle
- Oracle資料庫頻繁歸檔問題的解決辦法Oracle資料庫
- oracle資料庫cpu佔用居高不下的解決辦法Oracle資料庫
- jboss不支援client利用資料來源取得資料庫連線?有沒有好的解決辦法?client資料庫
- 遠端連線MySQL資料庫提示:ERROR 1130 (HY000)的解決辦法MySql資料庫Error