深刻理解 oracle 資料庫的啟動和關閉

paulyibinyi發表於2007-12-13

oracle資料庫提供了幾種不同的資料庫啟動和關閉方式,本文將詳細介紹這些啟動和關閉方式之間的區別以及它們各自不同的功能。

一、啟動和關閉oracle資料庫

對於大多數oracle dba來說,啟動和關閉oracle資料庫最常用的方式就是在命令列方式下的server manager。從oracle 8i以後,系統將server manager的所有功能都集中到了sql*plus中,也就是說從8i以後對於資料庫的啟動和關閉可以直接透過sql*plus來完成,而不再另外需要server manager,但系統為了保持向下相容,依舊保留了server manager工具。另外也可透過圖形使用者工具(gui)的oracle enterprise manager來完成系統的啟動和關閉,圖形使用者介面instance manager非常簡單,這裡不再詳述。

要啟動和關閉資料庫,必須要以具有oracle 管理員許可權的使用者登陸,通常也就是以具有sysdba許可權的使用者登陸。一般我們常用internal使用者來啟動和關閉資料庫(internal使用者實際上是sys使用者以sysdba連線的同義詞)。oracle資料庫的新版本將逐步淘汰internal這個內部使用者,所以我們最好還是設定dba使用者具有sysdba許可權。

二、資料庫的啟動(startup)

啟動一個資料庫需要三個步驟:

1、 建立一個oracle例項(非安裝階段)
2、 由例項安裝資料庫(安裝階段)
3、 開啟資料庫(開啟階段)

在startup命令中,可以透過不同的選項來控制資料庫的不同啟動步驟。

1、startup nomount

nonount選項僅僅建立一個oracle例項。讀取init.ora初始化引數檔案、啟動後臺程式、初始化系統全域性區(sga)。init.ora檔案定義了例項的配置,包括記憶體結構的大小和啟動後臺程式的數量和型別等。例項名根據oracle_sid設定,不一定要與開啟的資料庫名稱相同。當例項開啟後,系統將顯示一個sga記憶體結構和大小的列表,如下所示:

sql> startup nomount  oracle 例程已經啟動。  total system global area 35431692 bytes  fixed size 70924 bytes  variable size 18505728 bytes  database buffers 16777216 bytes  redo buffers 77824 bytes

2、startup mount

該命令建立例項並且安裝資料庫,但沒有開啟資料庫。oracle系統讀取控制檔案中關於資料檔案和重作日誌檔案的內容,但並不開啟該檔案。這種開啟方式常在資料庫維護操作中使用,如對資料檔案的更名、改變重作日誌以及開啟歸檔方式等。在這種開啟方式下,除了可以看到sga系統列表以外,系統還會給出"資料庫裝載完畢"的提示。

3、startup

該命令完成建立例項、安裝例項和開啟資料庫的所有三個步驟。此時資料庫使資料檔案和重作日誌檔案線上,通常還會請求一個或者是多個回滾段。這時系統除了可以看到前面startup mount方式下的所有提示外,還會給出一個"資料庫已經開啟"的提示。此時,資料庫系統處於正常工作狀態,可以接受使用者請求。


如果採用startup nomount或者是startup mount的資料庫開啟命令方式,必須採用alter database命令來執行開啟資料庫的操作。例如,如果你以startup nomount方式開啟資料庫,也就是說例項已經建立,但是資料庫沒有安裝和開啟。這是必須執行下面的兩條命令,資料庫才能正確啟動。

alter database mount;  alter database open;


而如果以startup mount方式啟動資料庫,只需要執行下面一條命令即可以開啟資料庫:

alter database open;

4、其他開啟方式


除了前面介紹的三種資料庫開啟方式選項外,還有另外其他的一些選項。


(1) startup restrict


這種方式下,資料庫將被成功開啟,但僅僅允許一些特權使用者(具有dba角色的使用者)才可以使用資料庫。這種方式常用來對資料庫進行維護,如資料的匯入/匯出操作時不希望有其他使用者連線到資料庫運算元據。


(2) startup force


該命令其實是強行關閉資料庫(shutdown abort)和啟動資料庫(startup)兩條命令的一個綜合。該命令僅在關閉資料庫遇到問題不能關閉資料庫時採用。


(3) alter database open read only


該命令在建立例項以及安裝資料庫後,以只讀方式開啟資料庫。對於那些僅僅提供查詢功能的產品資料庫可以採用這種方式開啟。


三、資料庫的關閉(shutdown)


對於資料庫的關閉,有四種不同的關閉選項,下面對其進行一一介紹。


1、shutdown normal


這是資料庫關閉shutdown命令的確省選項。也就是說如果你發出shutdown這樣的命令,也即是shutdown nornal的意思。


發出該命令後,任何新的連線都將再不允許連線到資料庫。在資料庫關閉之前,oracle將等待目前連線的所有使用者都從資料庫中退出後才開始關閉資料庫。採用這種方式關閉資料庫,在下一次啟動時不需要進行任何的例項恢復。但需要注意一點的是,採用這種方式,也許關閉一個資料庫需要幾天時間,也許更長。


2、shutdown immediate


這是我們常用的一種關閉資料庫的方式,想很快地關閉資料庫,但又想讓資料庫乾淨的關閉,常採用這種方式。


當前正在被oracle處理的sql語句立即中斷,系統中任何沒有提交的事務全部回滾。如果系統中存在一個很長的未提交的事務,採用這種方式關閉資料庫也需要一段時間(該事務回滾時間)。系統不等待連線到資料庫的所有使用者退出系統,強行回滾當前所有的活動事務,然後斷開所有的連線使用者。


3、shutdown transactional


該選項僅在oracle 8i後才可以使用。該命令常用來計劃關閉資料庫,它使當前連線到系統且正在活動的事務執行完畢,執行該命令後,任何新的連線和事務都是不允許的。在所有活動的事務完成後,資料庫將和shutdown immediate同樣的方式關閉資料庫。


4、shutdown abort


這是關閉資料庫的最後一招,也是在沒有任何辦法關閉資料庫的情況下才不得不採用的方式,一般不要採用。如果下列情況出現時可以考慮採用這種方式關閉資料庫。


1、資料庫處於一種非正常工作狀態,不能用shutdown normal或者shutdown immediate這樣的命令關閉資料庫;


2、需要立即關閉資料庫;


3、在啟動資料庫例項時遇到問題;


所有正在執行的sql語句都將立即中止。所有未提交的事務將不回滾。oracle也不等待目前連線到資料庫的使用者退出系統。下一次啟動資料庫時需要例項恢復,因此,下一次啟動可能比平時需要更多的時間

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7199859/viewspace-553/,如需轉載,請註明出處,否則將追究法律責任。

相關文章