首页 > 数据库 > Oracle > 深入理解ORACLE启动过程
深入理解ORACLE启动过程
ORACLE SERVER由实例(Instance)和数据库(database)组成,而实例是由一组后台进程和一块共享内存区域(sga)组成,而后台进程是数据库和操作系统进行交互的通道,后台进程的命名由ORACLE_SID决定,ORACLE根据ORACLE_SID来寻找参数文件启动实例。数据库是指存储在磁盘上的一组物理文件。
ORACLE启动分3个过程:
NOMOUNT状态:启动实例
MOUNT状态:打开控制文件
OPEN状态:打开控制文件中描述的文件
NOMOUNT状态:
ORACLE需要寻找SPFILE(oracle 10g默认,pfile也可以)文件,来创建实例和分配内存。
MOUNT状态:
在此状态需要打开控制文件,而控制文件中包含日志文件,数据文件的位置信息,检查点信息等重要信息。
在ORACLE9i中,丢失口令文件会报错,可以通过orapw工具重建。在oracle 10g不会报错,通过v$pwfile_users视图查询。
lk_文件在数据库启动时创建,用于操作系统对数据库的锁定。
口令文件存在$ORACLE_HOME/dbs
alter
alter
重建控制文件:
SQL>startup nomount;
SQL>create
maxlogfiles
maxlogmembers
maxdatafiles
maxinstances
maxloghistory
logfile
group
group
group
datafile
'/data/app/oracle/oradata/orcl/system01.dbf',
'/data/app/oracle/oradata/orcl/undotbs01.dbf',
'/data/app/oracle/oradata/orcl/sysaux01.dbf'
character
OPEN状态
首先会检查数据文件头中检查点计数与控制文件中检查点计数是否一致。其次检查数据文件头的开始SCN和控制文件中记录该文件的结束SCN是否一致,如果控制文件中结束的SCN等于数据文件头中开始的SCN,说明不需要恢复。
SQL>show parameter backgroud_dump_dest;
如果数据库中的某个文件丢失,那么在MOUNT阶段不会在前台显示告警日志,会记录在alter_.log中。
Oracle

SHUTDOWN状态
第一状态没什么好解释的,oracle的所有文件都静静的躺在磁盘里,一切都还未开始,属于关机状态
NOMOUNT状态
Starting
*
-first
-if
-if
Specifying
*
*
*
The
Parameter
-----------------------------------------------------------------------
*
/ora10/product/10.2.0/db_1/dbs
[ora10@localhost
-rw-r-----
-rw-r-----
-rw-r--r--
查找参数文件的顺序如上面列表的,读取优先级
spfilechongshi.ora
如果三个文件都找不到的话,那么将启动失败。
*
*
*
[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状态。
Mounting
*
*
*
---------------------------------------------------------------------------------
*
*
查看参数文件:
[ora10@localhost
......
*.control_files='/ora10/product/oradata/ora10/control01.ctl','/ora10/product/ora
data/ora10/control02.ctl','/ora10/product/oradata/ora10/control03.ctl'
.......
控制文件:
[ora10@localhost
[ora10@localhost
总计
-rw-r-----
-rw-r-----
-rw-r-----
*
[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
open状态
opening
opening
opening
If
During
-----------------------------------------------------------------------------------------
打开数据库包括下列任务:
打开在线数据日志文件
打开联机重做日志文件
在这最后阶段,该服务器验证所有数据文件和联机重做日志文件可以打开并检查数据库的一致性。如果需要,该系统监控进程开始实例恢复。
[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.
数据库关闭的三种方式
1、shutdown
正常方式关闭数据库。
2、shutdown
立即方式关闭数据库。
在SVRMGRL中执行shutdown
而是在Oracle执行某些清除工作后才关闭(终止会话、释放会话资源),
当使用shutdown不能关闭数据库时,shutdown
3、shutdown
直接关闭数据库,正在访问数据库的会话会被突然终止,
如果数据库中有大量操作正在执行,这时执行shutdown
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22477960/viewspace-1116839/ ,如需转载,请注明出处,否则将追究法律责任。