要啟動和關閉資料庫,必須要以具有Oracle 管理員許可權的用戶登陸,通常也就是以具有SYSDBA許可權的用戶登陸。一般我們常用SYS用戶以SYSDBA連接來啟動和關閉資料庫。下麵介紹Oracle資料庫幾種不同的資料庫啟動和關閉方式之間的區別以及它們各自不同的功能。 一、資料庫的啟動(STARTUP) ...
要啟動和關閉資料庫,必須要以具有Oracle 管理員許可權的用戶登陸,通常也就是以具有SYSDBA許可權的用戶登陸。一般我們常用SYS用戶以SYSDBA連接來啟動和關閉資料庫。下麵介紹Oracle資料庫幾種不同的資料庫啟動和關閉方式之間的區別以及它們各自不同的功能。
一、資料庫的啟動(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. "的提示。此時,資料庫系統處於正常工作狀態,可以接受用戶請求。 4、其他打開方式 STARTUP FORCE 該命令其實是強行關閉資料庫(shutdown abort)和啟動資料庫(startup)兩條命令的一個綜合。該命令僅在關閉資料庫遇到問題不能關閉資料庫時採用。 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 這是關閉資料庫的最後一招,也是在沒有任何辦法關閉資料庫的情況下才不得不採用的方式,一般不要採用。如果下列情況出現時可以考慮採用這種方式關閉資料庫。 ①、 資料庫處於一種非正常工作狀態,不能用shutdown normal或者shutdown immediate這樣的命令關閉資料庫; ②、 需要立即關閉資料庫; ③、 在啟動資料庫實例時遇到問題; 所有正在運行的SQL語句都將立即中止。所有未提交的事務將不回滾。Oracle也不等待目前連接到資料庫的用戶退出系統。下一次啟動資料庫時需要進行實例恢復,因此,下一次啟動可能比平時需要更多的時間。關閉方式 | Abort | Immediate | Transaction | Nornal |
允許新的連接 | × | × | × | × |
等待直到當前會話中止 | × | × | × | √ |
等待直到當前事務中止 | × | × | √ | √ |
強制CheckPoint,關閉所有文件 | × | √ | √ | √ |