在測試伺服器上使用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沒有應用伺服器的權限。無法停止應用服務。當然也不妨礙後面步驟的執行。