Oracle數據庫提供了幾種不一樣的數據庫啓動和關閉方式,本文將詳細介紹這些啓動和關閉方式之間的區別以及它們各自不一樣的功能。數據庫
1、啓動和關閉Oracle數據庫spa
要啓動和關閉數據庫,必需要以具備Oracle 管理員權限的用戶登錄,一般也就是以具備SYSDBA權限的用戶登錄。通常咱們經常使用INTERNAL用戶來啓動和關閉數據庫(INTERNAL用戶其實是SYS用戶以SYSDBA鏈接的同義詞)。Oracle數據庫的新版本將逐步淘汰INTERNAL這個內部用戶,因此咱們最好仍是設置DBA用戶具備SYSDBA權限。日誌
2、數據庫的啓動(STARTUP)orm
啓動一個數據庫須要三個步驟:進程
1、 建立一個Oracle實例(非安裝階段)事務
2、 由實例安裝數據庫(安裝階段)內存
3、 打開數據庫(打開階段)ci
在Startup命令中,能夠經過不一樣的選項來控制數據庫的不一樣啓動步驟。產品
1、STARTUP NOMOUNTit
NOMOUNT選項僅僅建立一個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;
該命令在建立實例以及安裝數據庫後,以只讀方式打開數據庫。對於那些僅僅提供查詢功能的產品數據庫能夠採用這種方式打開。
數據庫打開分爲三個階段 :
1- nomount : 做用—維護數據庫系統文件,
2- mount:做用—維護用戶文件,
3- open:做用:進行數據訪問,對數據作增、刪、改、查
3、數據庫的關閉(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 I T N
容許新的鏈接 × × × ×
等待直到當前會話停止 × × × √
等待直到當前事務停止 × × √ √
強制CheckPoint,關閉全部文件 × √ √ √
其中:A-Abort I-Immediate T-Transaction N-Nornal
若是你的數據庫出現問題:
1- shutdown abort;
2- startup;
3- shutdown immediate;
staru