Oracle 的啟動需要經歷四個狀態,SHUTDOWN 、NOMOUNT 、MOUNT 、OPEN、
SHUTDOWN狀態
第一狀態沒什么好解釋的,oracle的所有文件都靜靜的躺在磁盤里,一切都還未開始,屬於關機狀態
NOMOUNT狀態
Starting the instance (nomount)
* Reading the initialization file from $ORACLE_HOME/dbs in the following order:
-first spfileSID.ora
-if not found then, spfile.ora
-if not found then, initSID.ora
Specifying the PFILE parameter with STARTUP overrides the default behavior.
* Allocating the SGA
* Starting the background processes
* Opening the alertSID.log file and the trace files
The database must be named with the DB_NAME parameter either in the initialization
Parameter file or in the STARTUP command.
-----------------------------------------------------------------------
* 讀取環境變量下dbs目錄下的參數文件(spfile/pfile)
[ora10@localhost dbs]$ pwd
/ora10/product/10.2.0/db_1/dbs
[ora10@localhost dbs]$ ll
-rw-r----- 1 ora10 dba 3584 07-19 22:07 spfilechongshi.ora
-rw-r----- 1 ora10 dba 3584 07-23 22:00 spfile.ora
-rw-r--r-- 1 ora10 dba 1106 07-19 21:47 initchongshi.ora
查找參數文件的順序如上面列表的,讀取優先級
spfilechongshi.ora > spfile.ora>initchongshi.ora
如果三個文件都找不到的話,那么將啟動失敗。
* 啟動算法,分配內存
* 啟動后台進程
* 開放alertSID.log文件和跟蹤文件
[ora10@localhost dbs]$ sqlplus
SQL*Plus: Release 10.2.0.1.0 - Production on Tue Jul 24 22:33:54 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Enter user-name: /as sysdba
Connected to an idle instance.
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 205520896 bytes
Fixed Size 1218532 bytes
Variable Size 79693852 bytes
Database Buffers 121634816 bytes
Redo Buffers 2973696 bytes
現在就處在一個nomount狀態。
mount狀態
Mounting a database includes the following tasks:
* Associating a database with a previously started instance
* Locating and opening the control files specified in the parameter file
* Reading the control files to obtain the names and status of the data files and online redo log files.However,no checks are performed to verify the existence of the data files and online redo log files at this time.
---------------------------------------------------------------------------------
* 把一個數據庫和啟動的實例關聯起來
* 在參數文件(spfile/pfile)中找到控制文件進行讀取
查看參數文件:
[ora10@localhost dbs]$ strings spfileora10.ora | more
......
*.control_files='/ora10/product/oradata/ora10/control01.ctl','/ora10/product/ora
data/ora10/control02.ctl','/ora10/product/oradata/ora10/control03.ctl'
.......
控制文件:
[ora10@localhost ~]$ cd /ora10/product/oradata/ora10/
[ora10@localhost ora10]$ ll
總計 954196
-rw-r----- 1 ora10 dba 7061504 07-23 23:01 control01.ctl
-rw-r----- 1 ora10 dba 7061504 07-23 23:01 control02.ctl
-rw-r----- 1 ora10 dba 7061504 07-23 23:01 control03.ctl
* 讀取控制文件,獲得的數據文件和聯機重做日志文件,然而,在這個時候沒有進行檢查以驗證存在的數據文件和聯機重做日志文件
[ora10@localhost dbs]$ sqlplus
SQL*Plus: Release 10.2.0.1.0 - Production on Tue Jul 24 23:02:28 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Enter user-name: /as sysdba
Connected to an idle instance.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 205520896 bytes
Fixed Size 1218532 bytes
Variable Size 79693852 bytes
Database Buffers 121634816 bytes
Redo Buffers 2973696 bytes
Database mounted.
現在進入了數據庫的mount狀態,我們通過mount啟動的時候,下面會多一句提示“Database mounted.” 數據庫准備就緒。
open狀態
opening the database includes the following tasks
opening the online data log files
opening the onling redo log files
If any of the datafiles or noline redo log files are not present when you attempt to open the database ,the oracle server returns an error.
During this final stage,the oracle server verfies that all the data files and online redo log files can be opened and checks the consistency of the database . If necessary , the SMON background process initiates instance recovery.
-----------------------------------------------------------------------------------------
打開數據庫包括下列任務:
打開在線數據日志文件
打開聯機重做日志文件
如果任何數據文件或非線性重做日志文件不存在,當您試圖打開的數據庫,服務器返回錯誤。
在這最后階段,該服務器驗證所有數據文件和聯機重做日志文件可以打開並檢查數據庫的一致性。如果需要,該系統監控進程開始實例恢復。
[ora10@localhost dbs]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Wed Jul 25 21:50:55 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 205520896 bytes
Fixed Size 1218532 bytes
Variable Size 79693852 bytes
Database Buffers 121634816 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.
在上面的命令中,startup后面不加其它信息的話,系統會為我們直接啟動到第4個狀態。
數據庫關閉的三種方式
1、shutdown normal
正常方式關閉數據庫。
2、shutdown immediate
立即方式關閉數據庫。
在SVRMGRL中執行shutdown immediate,數據庫並不立即關閉,
而是在Oracle執行某些清除工作后才關閉(終止會話、釋放會話資源),
當使用shutdown不能關閉數據庫時,shutdown immediate可以完成數據庫關閉的操作。
3、shutdown abort
直接關閉數據庫,正在訪問數據庫的會話會被突然終止,
如果數據庫中有大量操作正在執行,這時執行shutdown abort后,重新啟動數據庫需要很長時間。