天天看點

Oracle shutdown immediate無法關閉資料庫解決方法

在測試伺服器上使用shutdown immediate指令關閉資料庫時,長時間無法關閉資料庫,如下所示

在另外一個會話中,檢視告警日志的輸出結果,如下所示:告警日志資訊在輸出active processes prevent shutdown operation後,就再無提示資訊。

關于shutdwon immediate關閉資料庫方式:

立即關閉方式(immediate)

     立即關閉方式能夠在盡可能短的時間内關閉資料庫,以立即方式關閉資料庫時,oracle将執行以下一些操作:

         *阻止任何使用者建立新的連接配接,同時阻止目前連接配接的使用者開始任何新的事物。

         *任何未送出的事物均被回退。

         *oracle不再等待使用者主動斷開連接配接,而是直接關閉、解除安裝資料庫,并終止執行個體。

方法1:

此時可以通過下面指令kill掉系統中(local=no)的oracle程序

[oracle@db-server ~]$ ps -ef|grep ora|grep -v grep|grep -v ora_|grep local=no|awk '{print $2}'

[oracle@db-server ~]$ ps -ef|grep ora|grep -v grep|grep -v ora_|grep local=no|awk '{print $2}'|xargs kill

此時可以順利關閉資料庫。

方法2:

使用ctrl+c取消操作,然後使用shutdown abort指令關閉資料庫。當然生産環境還是慎用shutdown abort指令,使用它往往是在沒有辦法的情況下。因為

shutdown abort 執行後,所有正在運作的sql語句都将立即中止。所有未送出的事務将不復原。oracle也不等待目前連接配接到資料庫的使用者退出系統。下一次啟動資料庫時需要執行個體恢複,是以,下一次啟動可能比平時需要更多的時間。

方法3:網上比較通用的方法

1 :首先停應用服務。

2 :其次停止監聽服務(listener)

3 :間隔一段時間後,運作自己寫的腳本去檢查一下還有沒有使用者程序,如有, kill.

4 :shutdown immediate;

當然,有時候實際情況往往有些出入,例如步驟1,dba沒有應用伺服器的權限。無法停止應用服務。當然也不妨礙後面步驟的執行。