Oracle 數據庫(三)—— 啓動和關閉 Oracle 數據庫實例

一、啓動數據庫實例

Oracle數據庫實例的啓動過程分爲3個步驟,分別是啓動實例、加載數據庫、打開數據庫。用戶可以根據實際情況的需要,以不同的模式啓動數據庫。

啓動數據庫所使用的命令格式如下:

STARTUP [nomount|mount|open|force] [restrict] [pfile=filename]
  • nomount:表示啓動實例不加載數據庫。
  • mount:表示啓動實例、加載數據庫並保持數據庫的關閉狀態。
  • open:表示啓動實例、加載並打開數據庫,這個是默認選項。
  • force:表示終止實例並重新啓動數據庫。
  • restrict:用於指定以受限制的會話方式啓動數據庫。
  • pfile:於指定啓動實例時所使用的文本參數文件,filename就是文件名。

1.1 NOMOUNT 模式

這種啓動模式只會創建實例(即創建Oracle實例的各種內存結構和服務進程),並不加載數據庫,也不會打開任何數據文件。

使用NOMOUNT模式啓動數據庫實例示例:

SQL> connect system/test as sysdba
已連接。
SQL> shutdown immediate
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> startup nomount
ORACLE 例程已經啓動。

Total System Global Area 6814535680 bytes
Fixed Size                  2188688 bytes
Variable Size            3539995248 bytes
Database Buffers         3254779904 bytes
Redo Buffers               17571840 bytes

在上面的示例代碼中,首先用戶要以sysdba的身份登錄,才具有關閉和啓動數據實例的權限。在使用shutdown命令關閉數據庫實例之後,然後使用startup nomount命令啓動數據庫實例。

通常在創建新數據庫或重建控制文件時,使用NOMOUNT模式啓動數據庫實例。

NOMOUNT模式通常在進行數據庫維護時使用。比如,執行數據庫完全恢復操作、更改數據庫的歸檔模式等。

1.2 MOUNT 模式

這種模式將啓動實例、加載數據庫並保持數據庫的關閉狀態。

使用MOUNT模式啓動數據庫實例示例:

SQL> connect system/test as sysdba
已連接。
SQL> shutdown immediate
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> startup mount
ORACLE 例程已經啓動。

Total System Global Area 6814535680 bytes
Fixed Size                  2188688 bytes
Variable Size            3539995248 bytes
Database Buffers         3254779904 bytes
Redo Buffers               17571840 bytes
數據庫裝載完畢。

上面的代碼中,首先使用shutdown命令關閉數據庫實例,然後再使用startupmount命令啓動數據庫實例。

1.3 OPEN 模式

這種模式將啓動實例、加載並打開數據庫,這就是常規的啓動模式,用戶想要對數據庫進行多種操作,就必須使用OPEN模式啓動數據庫實例。

使用OPEN模式啓動數據庫實例示例:

SQL> connect system/test as sysdba
已連接。
SQL> shutdown immediate
ORA-01109: 數據庫未打開

已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> startup
ORACLE 例程已經啓動。

Total System Global Area 6814535680 bytes
Fixed Size                  2188688 bytes
Variable Size            3539995248 bytes
Database Buffers         3254779904 bytes
Redo Buffers               17571840 bytes
數據庫裝載完畢。
數據庫已經打開。

在上面的代碼中,startup命令的後面不帶有任何參數, 就表示以OPEN模式啓動數據庫實例。

1.4 FORCE模式

這種模式將終止實例並重新啓動數據庫,這種啓動模式具有一定的強制性。 比如,在其他啓動模式失效時,可以嘗試使用這種啓動模式。

使用FORCE模式啓動數據庫實例示例:

SQL> connect system/test as sysdba
已連接。
SQL> shutdown immediate
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> startup force
ORACLE 例程已經啓動。

Total System Global Area 6814535680 bytes
Fixed Size                  2188688 bytes
Variable Size            3539995248 bytes
Database Buffers         3254779904 bytes
Redo Buffers               17571840 bytes
數據庫裝載完畢。
數據庫已經打開。

二、關閉數據庫實例

與啓動數據庫實例相同,關閉數據庫實例也分爲3個步驟,分別是關閉數據庫、卸載數據庫、關閉Oracle實例。在SQL*Plus中,可以使用shutdown語句關閉數據庫。

其具體語法格式如下:

SHUTDOWN [normal|transactional|immediate|abort]
  • normal:表示以正常方式關閉數據庫。
  • transactional:示在當前所有的活動事務被提交完畢之後,關閉數據庫
  • immediate:表示在儘可能短的時間內立即關閉數據庫。
  • abort:表示以終止方式來關閉數據庫。

2.1 NORMAL方式

這種方式稱作正常關閉方式,如果對關閉數據庫的時間沒有限制,通常會使用這種方式來關閉數據庫。

使用NORMAL方式關閉數據庫示例:

shutdown normal
數據庫已經關閉。
已經卸載數據庫。

ORACLE 例程已關閉

從上面的代碼可以看出,Oracle在執行shutdown命令後, 所返回的響應信息就是關閉數據庫實例的過程。當以正常方式關閉數據庫時,Oracle將執行如下操作:

  • 阻止任何用戶建立新的連接。
  • 等待當前所有正在連接的用戶主動斷開連接。
  • 當所有的用戶都斷開連接後,將立即關閉數據庫。

2.2 NSACTIONAL方式

這種方式稱作事務關閉方式,它的首要任務是能夠保證當前所有的活動事務都可以被提交,並在儘可能短的時間內關閉數據庫。

使用TRANSACTIONAL方式關閉數據庫示例:

shutdown transactional
數據庫已經關閉。
已經卸載數據庫。

ORACLE 例程已關閉

以事務方式關閉數據庫時,Oracle將執行如下操作:

  • 阻止用戶建立新連接和開始新事務。
  • 等待所有活動事務提交後,再斷開用戶連接。
  • 當所有的活動事務提交完畢、所有的用戶都斷開連接後,將關閉數據庫。

2.3 IMMEDIATE方式

MMEAI單間的含義樣這種方式稱作立即關方式,這種方限在共可能時間內關團數費件。

使用MEDAIR關閉數據庫示例:

shutdown immediate
數據庫已經關閉。
已經卸載數據庫。

ORACLE 例程已關閉

在這種關閉方式下,Oracle不但會立即中斷當前用戶的連接,而且會強行終止用戶的當前活動事務,將未完成的事務回退。以立即關閉方式關閉數據庫時,Oracle將執行如下操作:

  • 阻止用戶建立新連接和開始新事務。
  • 將未提交的活動事務回退。
  • 關閉數據庫。

2.4 ABORT方式

這種方式稱作終止關閉方式,終止關閉方式具有一定的強制性和破壞性。使用這種方式會強制中斷任何數據庫操作,這樣可能會丟失一部分數據信息, 影響數據庫的完整性。除了由於使用其他3種方式無法關閉數據庫而使用它之外,應該儘量避免使用這種方式。

使用ABORT方式關閉數據庫示例:

shutdown immediate
ORACLE 例程已關閉

以立即關閉方式關閉數據庫時,Oracle將執行如下操作:

  • 阻止用戶建立新連接和開始新事務。
  • 取消未提交的活動事務,而不是回退。
  • 立即終正在執行的任何SQL語句。
  • 立即關閉數據庫。

參考文獻:

  1. Oracle 11g從入門到精通 第二版,明日科技 著,清華大學出版社有限公司
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章