正在看的ORACLE教程是:深刻理解Oracle資料庫的啟動和關閉。
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記憶體結構和大小的列表,如下所示:
2、STARTUP MOUNT
該命令建立執行個體並且安裝資料庫,但沒有開啟資料庫。Oracle系統讀取控制檔案中關於資料檔案和重作記錄檔的內容,但並不開啟該檔案。這種開啟檔案常在資料庫維護操作中使用,如對資料檔案的更名、改變重作日誌以及開啟歸檔方式等。在這種開啟檔案下,除了可以看到SGA系統列表以外,系統還會給出"資料庫裝載完畢"的提示。
3、STARTUP
該命令完成建立執行個體、安裝執行個體和開啟資料庫的所有三個步驟。此時資料庫使資料檔案和重作記錄檔線上,通常還會請求一個或者是多個復原段。這時系統除了可以看到前面Startup Mount方式下的所有提示外,還會給出一個"資料庫已經開啟"的提示。此時,資料庫系統處於正常工作狀態,可以接受使用者請求。
如果採用STARTUP NOMOUNT或者是STARTUP MOUNT的資料庫開啟命令方式,必須採用ALTER DATABASE命令來執行開啟資料庫的操作。例如,如果你以STARTUP NOMOUNT方式開啟資料庫,也就是說執行個體已經建立,但是資料庫沒有安裝和開啟。這是必須運行下面的兩條命令,資料庫才能正確啟動。
而如果以STARTUP MOUNT方式啟動資料庫,只需要運行下面一條命令即可以開啟資料庫:
4、其他開啟檔案
除了前面介紹的三種資料庫開啟檔案選項外,還有另外其他的一些選項。
(1) STARTUP RESTRICT
這種方式下,資料庫將被成功開啟,但僅僅允許一些特權使用者(具有DBA角色的使用者)才可以使用資料庫。這種方式常用來對資料庫進行維護,如資料的匯入/匯出操作時不希望有其他使用者串連到資料庫操作資料。
(2) STARTUP FORCE
該命令其實是強行關閉資料庫(shutdown abort)和啟動資料庫(startup)兩條命令的一個綜合。該命令僅在關閉資料庫遇到問題不能關閉資料庫時採用。
(3) ALTER DATABASE OPEN READ ONLY;
該命令在建立執行個體以及安裝資料庫後,以唯讀方式開啟資料庫。對於那些僅僅提供查詢功能的產品資料庫可以採用這種方式開啟。
[NextPage]
三、資料庫的關閉(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也不等待目前串連到資料庫的使用者退出系統。下一次啟動資料庫時需要執行個體恢複,因此,下一次啟動可能比平時需要更多的時間。
表1可以清楚地看到上述四種不同關閉資料庫的區別和聯絡。
表1 Shutdown資料庫不同方式對比表
其中:A-Abort I-Immediate T-Transaction N-Nornal
上一頁