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
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;
該命令在建立執行個體連同安裝資料庫後,以唯讀方式開啟資料庫。對於那些僅僅提供查詢功能的產品資料庫能夠採用這種方式開啟。
三、資料庫的關閉(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能夠清楚地看到上述四種不同關閉資料庫的區別和聯絡。
關閉方式 A I T N
允許新的串連 × × × ×
等待直到當前會話中止 × × × √
等待直到當前事務中止 × × √ √
強制CheckPoint,關閉任何文檔 × √ √ √
其中:A-Abort I-Immediate T-Transaction N-Nornal
pl/sql developer的Commander Windows下執行shutdown命令報“ORA-00900: 無效 SQL 陳述式”,
但在伺服器本地sqlplus下卻可以執行關閉資料庫命令,PL/SQL DEVELOPER只支援部分的sql*plus命令?
另外在資料庫unmount(instance 已經啟動)的情況下,PL/SQL DEVELOPER無法串連上,
報“ORA-12528: TNS:監聽程式:所有適用常式都無法建立新串連”。
在instance已經啟動但資料庫還沒mount的情況下PL/SQL DEVELOPER等用戶端都無法串連到執行個體上
如何查看Oracle當前資料庫執行個體名
資料庫執行個體名在編程的很多地方都需要用到,設定資料庫的jdbc:oracle:thin:@192.168.2.1:1521:WW ,還有sqlPlus的連接字串中也需要用到 conn sys/password@WW as sysdba; 如何查看當前資料庫執行個體名呢?方式有三:
·使用SQL語句:select instance_name from v$instance;
·使用show命令:show parameter instance
·查看參數檔案:查看init.ora檔案