Chinaunix首页 | 论坛 | 博客
  • 博客访问: 685024
  • 博文数量: 95
  • 博客积分: 1754
  • 博客等级: 上尉
  • 技术积分: 1607
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-12 10:06
文章分类

全部博文(95)

文章存档

2015年(3)

2013年(15)

2012年(77)

分类: Oracle

2012-06-19 22:04:48

深入理解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 system set controlfile='控制文件路径' scope=spfile;

alter system set lock_name_space=orcl  scope=spfile;

 

重建控制文件:

SQL>startup nomount;

SQL>create controlfile reuse database "orcl" noresetlogs archivelog

maxlogfiles 5

maxlogmembers 3

maxdatafiles 100

maxinstances 1

maxloghistory 1134

logfile

group 3 '/data/app/oracle/oradata/orcl/redo03.log' size 10m,

group 4 '/data/app/oracle/oradata/orcl/redo04.log' size 10m,

group 5 '/data/app/oracle/oradata/orcl/redo05.log' size 10m

datafile

'/data/app/oracle/oradata/orcl/system01.dbf',

'/data/app/oracle/oradata/orcl/undotbs01.dbf',

'/data/app/oracle/oradata/orcl/sysaux01.dbf'

character set zhs16gbk;

 

OPEN状态

首先会检查数据文件头中检查点计数与控制文件中检查点计数是否一致。其次检查数据文件头的开始SCN和控制文件中记录该文件的结束SCN是否一致,如果控制文件中结束的SCN等于数据文件头中开始的SCN,说明不需要恢复。

 

SQL>show parameter backgroud_dump_dest;

如果数据库中的某个文件丢失,那么在MOUNT阶段不会在前台显示告警日志,会记录在alter_.log中。 

 

 

阅读(6600) | 评论(0) | 转发(4) |
给主人留下些什么吧!~~