要啟動和關閉資料庫,必須要以具有Oracle 管理員權限的使用者登陸,通常也就是以具有SYSDBA許可權的使用者登陸。一般我們常用SYS使用者以SYSDBA串連來啟動和關閉資料庫。下面介紹Oracle資料庫幾種不同的資料庫啟動和關閉方式之間的區別以及它們各自不同的功能。 1 資料庫的啟動(STARTUP) 在Startup命令中,可以通過不同的選項來控制資料庫的不同啟動步驟。 1、STARTUP NOMOUNT NONOUNT選項僅僅建立一個Oracle執行個體。讀取init.ora初始化參數檔案、啟動後台進程、初始化系統全域區(SGA)。Init.ora檔案定義了執行個體的配置,包括記憶體結構的大小和啟動後台進程的數量和類型等。執行個體名根據Oracle_SID設定,不一定要與開啟的資料庫名稱相同。當執行個體開啟後,系統將顯示一個SGA記憶體結構和大小的列表,如下所示: SQL> startup nomount ORACLE instance started. 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系統讀取控制檔案中關於資料檔案和redo log檔案的內容,但並不開啟這些檔案。這種開啟檔案常在資料庫維護操作時使用,如對資料檔案的更名、改變redo log以及開啟歸檔方式、執行資料庫的full database recovery。在這種開啟檔案下,除了可以看到SGA系統列表以外,系統還會給出" Database mounted. "的提示。 3、STARTUP 該命令完成建立執行個體、安裝執行個體和開啟資料庫的所有三個步驟。此時資料庫使資料檔案和redo log檔案線上,通常還會請求一個或者是多個復原段。這時系統除了可以看到前面Startup Mount方式下的所有提示外,還會給出一個" Database opened. "的提示。此時,資料庫系統處於正常工作狀態,可以接受使用者請求。 如果採用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; 該命令在建立執行個體以及安裝資料庫後,以唯讀方式開啟資料庫。對於那些僅僅提供查詢功能的產品資料庫可以採用這種方式開啟。 2 資料庫的關閉(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也不等待目前串連到資料庫的使用者退出系統。下一次啟動資料庫時需要進行執行個體恢複,因此,下一次啟動可能比平時需要更多的時間。 下表為上述四種不同關閉資料庫的區別和聯絡。
關閉方式 |
Abort |
Immediate |
Transaction |
Nornal |
允許新的串連 |
× |
× |
× |
× |
等待直到當前會話中止 |
× |
× |
× |
√ |
等待直到當前事務中止 |
× |
× |
√ |
√ |
強制CheckPoint,關閉所有檔案 |
× |
√ |
√ |
√ |
程式員的基礎教程:菜鳥程式員