ORACLE數據庫的啟動與關閉
一、數據庫的啟動(STARTUP)
要啟動和關閉數據庫,必須要以具有ORACLE管理員權限的用戶登陸,通常也就是以具有SYSDBA權限的用戶登陸。所以我們最好還是設置DBA用戶具有SYSDBA權限。
I)啟動一個數據庫需要三個步驟:
1、創建一個ORACLE實例(非安裝階段)
2、由實例安裝數據庫(安裝階段)
3、打開數據庫(打開階段)
命令:
a、STARTUP NOMOUNT(僅僅創建一個ORACLE實例)
b、STARTUP MOUNT(創建實例并且安裝數據庫,但沒有打開數據庫)
c、STARTUP(創建實例、安裝數據庫、打開數據庫)
情況一:
STARTUP NOMOUNT;
ALTER DATABASE MOUNT;
ALTER DATABASE OPEN;
情況二:
STARTUP MOUNT;
ALTER DATABASE OPEN;
情況三:
STARTUP;
II)其他打開方式
除了前面介紹的三種數據庫打開方式選項外,還有另外其他的一些選項。
(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 ABORT
這是關閉數據庫的最后一招,也是在沒有任何辦法關閉數據庫的情況下才不得不采用的方式,一般不要采用。如果下列情況出現時可以考慮采用這種方式關閉數據庫。
a、 數據庫處于一種非正常工作狀態,不能用shutdown normal或者shutdown immediate這樣的命令關閉數據庫;
b、 需要立即關閉數據庫;
c、 在啟動數據庫實例時遇到問題;
所有正在運行的SQL語句都將立即中止。所有未提交的事務將不回滾。Oracle也不等待目前連接到數據庫的用戶退出系統。下一次啟動數據庫時需要實例恢復,因此,下一次啟動可能比平時需要更多的時間。
4、SHUTDOWN TRANSACTIONAL
該選項僅在Oracle 8i后才可以使用。該命令常用來計劃關閉數據庫,它使當前連接到系統且正在活動的事務執行完畢,運行該命令后,任何新的連接和事務都是不允許的。在所有活動的事務完成后,數據庫將和SHUTDOWN IMMEDIATE同樣的方式關閉數據庫。