資料庫監聽突然出現了問題,重新設定之後,重啟資料庫。發現不管是用shutdown 還是跟上參數 immediate都是同樣效果,等了10多分鐘一點反應都沒有。
查了查資料,看了下每個參數的用法,發現可能是串連請求還在串連資料庫,沒有關閉所以只能等著。一狠心強行關掉了SSH,結果杯具了。
啟動的時候就說:
詳細的shutdown和startup參數解釋如下:
shutdown有四個參數:normal、transactional、immediate、abort。預設不帶任何參數時表示是normal。
shutdown normal:不允許新的串連、等待會話結束、等待事務結束、做一個檢查點並關閉資料檔案。啟動時不需要執行個體恢複。
shutdown transactional:不允許新的串連、不等待會話結束、等待事務結束、做一個檢查點並關閉資料檔案。啟動時不需要執行個體恢複。
shutdown immediate:不允許新的串連、不等待會話結束、不等待事務結束、做一個檢查點並關閉資料檔案。沒有結束的事務是自動ROLLBACK的。啟動時不需要執行個體恢複。
shutdown abort:不允許新的串連、不等待會話結束、不等待事務結束、不做檢查點且沒有關閉資料檔案。啟動時自動進行執行個體恢複。
另外,對於normal、transactional、immediate,db bUFFER cACHE的內容寫入了資料檔案,沒有提交的事務被復原,所有的資源被釋放,資料庫被“乾淨”的關閉。
對於abort,db bUFFER cACHE的內容沒有寫入資料檔案,沒有提交的事務也沒有復原。資料庫沒有DISMOUNT和關閉,資料檔案也沒有關閉。當資料庫啟動時,需要通過REDO LOG恢複資料,通過復原段對交易回復,對資源進行釋放。startup [force] [restrict] [pfile= FILENAME] [open [recover][ DATABASE] | mount | nomount]
startup open:startup預設的參數就是open,開啟資料庫,允許資料庫的訪問。當前執行個體的控制檔案中所描述的所有檔案都已經開啟。
startup mount:mount資料庫,僅僅給dba進行管理操作,不允許資料庫的使用者訪問。僅僅只是當前執行個體的控制檔案被開啟,資料檔案未開啟。
startup nomount:僅僅通過初始設定檔案,分配出sga區,啟動資料庫後台進程,沒有開啟控制檔案和資料檔案。不能任何訪問資料庫。
startup pfile= FILENAME:以FILENAME為初始設定檔案啟動資料庫,不是採用預設初始設定檔案。
startup force:中止當前資料庫的運行,並開始重新正常的啟動資料庫。
startup restrict:只允許具有restricted session許可權的使用者訪問資料庫。
startup recover:資料庫啟動,並開始介質恢複。
使用shutdown的時候 normal和immediate可能都因為串連沒有釋放而造成資料庫無法重啟的現象。
可以採用以下兩個方案:
代碼
SQL>shutdown abort; --這個方法是不等待會話結束就直接關閉掉資料庫,一般情況下事不推薦使用的。實在關不掉的話,一般也沒有什麼問題。跟直接KILL進程差不多。
SQL>startup --shutdown abort以後在啟動資料庫。
SQL>startup force; --這個方法是直接關閉掉資料庫然後再重啟資料庫,這個方式也可以達到關閉的目的,我個人使用的時候兩個方法都行。