1. 程式人生 > 其它 >Oracle資料庫的啟動和關閉過程

Oracle資料庫的啟動和關閉過程

一、Oracle資料庫的完整啟動過程是分步驟完成的,包含以下3個步驟

啟動例項-->載入資料庫-->開啟資料庫

因為Oracle資料庫啟動過程中不同的階段可以對資料庫進行不同的維護操作,對應我們不同的需求,所以就需不同的模式啟動資料庫。

1. Oracle啟動需要經歷四個狀態:SHUTDOWN 、NOMOUNT 、MOUNT 、OPEN

2. Oracle關閉的四種方式:Normal, Immediate, Transactional, Abort

3. 啟動和關閉過程詳解

二、資料庫啟動過程

1.NoMount 模式(啟動例項不載入資料庫)

(1). 命令:startup nomount

(2). 講解:這種啟動模式只會建立例項,並不載入資料庫,Oracle僅為例項建立各種記憶體結構和服務程序,不會開啟任何資料檔案。

在NoMount模式下,只能訪問那些與SGA區相關的資料字典檢視,包括VPARAMETER、VSGA、VPROCESS和VSESSION等,這些檢視中的資訊都是從SGA區中獲取的,與資料庫無關。

(3). 模式用途:

建立新資料庫;
重建控制檔案;
2.Mount模式(載入資料庫但不開啟資料庫)

(1). 命令:startup mount

(2). 講解:這種啟動模式將為例項載入資料庫,但保持資料庫為關閉狀態。因為載入資料庫時需要開啟資料庫控制檔案,但資料檔案和重做日誌檔案都都無法進行讀寫,所以使用者還無法對資料庫進行操作。

在Mount模式下,只能訪問那些與控制檔案相關的資料字典檢視,包括VTHREAD、VCONTROLFILE、VDATABASE、VDATAFILE 和 V$LOGFILE等,這些檢視都是從控制檔案中獲取的。

(3). 模式用途:

重新命名資料檔案;
新增、刪除或重新命名重做日誌檔案;
執行資料庫完全恢復操作;
改變資料庫的歸檔模式;
3.Open模式(正常開啟資料庫)

(1). 命令:startup [open]

(2). 講解:正常按3個步驟啟動資料庫。

(3). 模式用途:

平時不對資料庫做什麼維護,像只做應用開發,用這個模式就好了;
4.強制啟動模式

(1). 命令:startup force

(2). 用途&講解:

在某些情況下,使用前面的各種模式都無法成功啟動資料庫時,可以嘗試強制啟動模式。
5. 其他

使用Alter Database語句,還可以在各啟動模式間切換。並且,還可以對資料庫設定不同的狀態用於不同的操作,如受/非受限抽狀態、只讀。

三、資料庫關閉過程

1. Nomal(正常關閉方式)

(1). 命令:shutdown nomal

(2). 講解:正常方式關閉資料時,Oracle執行如下操作:

阻止任何使用者建立新的連線。
等待當前所有正在連線的使用者主動斷開連線(此方式下Oracle不會立即斷掉當前使用者的連線,這些使用者仍然操作相關的操作)
一旦所有的使用者都斷開連線,則立即關閉、解除安裝資料庫,並終止例項。(所以,一般以正常方式關閉資料庫時,應該通知所有線上的使用者儘快斷開連線)
2. Immediate(立即關閉方式)

(1). 命令:shutdown immediate

(2). 講解:

阻止任何使用者建立新的連線,同時阻止當前連線的使用者開始任何新的事務。
Oracle不等待線上使用者主動斷開連線,強制終止使用者的當前事務,將任何未提交的事務回退。(如果存在太多未提交的事務,此方式將會耗費很長時間終止和回退事務)
直接關閉、解除安裝資料庫,並終止例項。
3. Transactional(事務關閉方式)

(1). 命令:shutdown transactional

(2). 講解:這種方式介於正常關閉方式跟立即關閉方式之間,響應時間會比較快,處理也將比較得當。執行過程如下:

阻止任何使用者建立新的連線,同時阻止當前連線的使用者開始任何新的事務。
等待所有未提交的活動事務提交完畢,然後立即斷開使用者的連線。
直接關閉、解除安裝資料庫,並終止例項。
4. Abort(終止關閉方式)

(1). 命令:shutdown abort

(2). 講解:這是比較粗暴的一種關閉方式,當前面3種方式都無法關閉時,可以嘗試使用終止方式來關閉資料庫。但是以這種方式關閉資料庫將會丟失一部份資料資訊,當重新啟動例項並開啟資料庫時,後臺程序SMON會執行例項恢復操作。一般情況下,應當儘量避免使用這種方式來關閉資料庫。執行過程如下:

阻止任何使用者建立新的連線,同時阻止當前連線的使用者開始任何新的事務。
立即終止當前正在執行的SQL語句。
任何未提交的事務均不被退名。
直接斷開所有使用者的連線,關閉、解除安裝資料庫,並終止例項。

四、資料庫啟動過程

Step1. SQLPLUS /'as sysdba'

SQL*Plus: Release 10.2.0.1.0 - Production on Sat Mar 3 22:48:27 2012 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connected to an idle instance. Step2. Startup nomount ORACLE instance started. --> Total System Global Area 167772160 bytes Fixed Size 1218316 bytes Variable Size 104859892 bytes Database Buffers 58720256 bytes Redo Buffers 2973696 bytes oracle@db1:~> ps -ef | grep ora_ oracle 3626 1 0 22:48 ? 00:00:00 ora_pmon_orcl1 oracle 3628 1 0 22:48 ? 00:00:00 ora_psp0_orcl1 oracle 3630 1 0 22:48 ? 00:00:00 ora_mman_orcl1 oracle 3632 1 0 22:48 ? 00:00:00 ora_dbw0_orcl1 oracle 3634 1 0 22:48 ? 00:00:00 ora_lgwr_orcl1 oracle 3636 1 0 22:48 ? 00:00:00 ora_ckpt_orcl1 oracle 3638 1 0 22:48 ? 00:00:00 ora_smon_orcl1 oracle 3640 1 0 22:48 ? 00:00:00 ora_reco_orcl1 oracle 3642 1 0 22:48 ? 00:00:00 ora_cjq0_orcl1 oracle 3644 1 0 22:48 ? 00:00:00 ora_mmon_orcl1 oracle 3646 1 0 22:48 ? 00:00:00 ora_mmnl_orcl1 oracle 3648 1 0 22:48 ? 00:00:00 ora_d000_orcl1 oracle 3650 1 0 22:48 ? 00:00:00 ora_s000_orcl1 Step3. Startup mount Oracle instance started. --> Total System Global Area 167772160 bytes Fixed Size 1218316 bytes Variable Size 104859892 bytes Database Buffers 58720256 bytes Redo Buffers 2973696 bytes Database mounted. Step4. Startup ORACLE instance started. --> Total System Global Area 167772160 bytes Fixed Size 1218316 bytes Variable Size 104859892 bytes Database Buffers 58720256 bytes Redo Buffers 2973696 bytes Database mounted. Database opened.