學院開設了資料庫實踐課程,授課老師選擇Oracle資料庫作為課程學習對象。昨天剛裝上Oracle10g,今天便躍躍欲試了。於是,一陣小激動下,開啟命令列,敲入sqlplus / as sysdba。
呵呵,不就悲劇就發生了。腦子一熱,我想試試重啟下資料庫,準備敲入shutdown immediate,結果一激動,把immediate給漏了,所以系統shutdown的預設參數便成了normal,相當於我敲入了shutdown normal。後來查資料才知道,該命令會等待所有的使用者斷開再執行,而當時我開了另外一個視窗,並以其他賬戶登入,所以shutdown執行會掛起。可沒經驗的我,本能的按下Ctrl+C,強制退出命令。結果嘛,當我再次以sysdba的許可權登陸的時候,顯示可以串連,但是進行其他動作的時候,卻接受到錯誤提示:ERROR:ORA-01012: not logged on。沒有登陸,怎麼可能,明明通過口令驗證了呀~
於是,試著以普通使用者帳號登陸下試試,結果scott賬戶沒能登陸資料庫,並受到如下錯誤提示:ERROR:ORA-01090: "正在關閉- 不允許串連"。哎呀,難道是剛才強制退出的結果?於是,切換到sysdba許可權的賬戶下,輸入shutdown immediate,結果顯示:"正在關閉—不允許串連"。於是調用startup命令,企圖開啟資料庫,可以想象又受到錯誤提示“cannot start already-running ORACLE - shut it down first”。看來剛才的那個shutdown還在後台執行,上網查了一下解決方案,結果很多人建議重啟下系統,這樣在下次重啟的時候Oracle資料庫也會重啟,剛才的問題也就解決了。 但是,有多年DBA經驗的老師告訴我們,在很多情況下,DBA要在遇到資料庫問題的時候,應當採用耗時最短的解決辦法來解決問題,否則由此帶來的企業以個人的損失將無可估量。所以,對於網友建議的重啟系統,不是最優的解決辦法。思索了一番,既然剛才shutdown命令未執行完便被我強制退出而造成現在的假死狀態,看看有什麼命令可以立馬強制資料庫的關閉。於是試著敲入shutdown abort,然後再輸入startup命令啟動資料庫,這時候再以任何賬戶登入都沒問題了,而且耗時很短。