您的位置:首页 > 数据库 > Oracle

《深入解析ORACLE》学习笔记(1)---ORACLE数据库启动与关闭

2010-09-14 14:22 609 查看
[声明:本文是学习著名ORACLE DBA盖国强先生的大作《深入解析ORACLE--DBA 入门 进阶与诊断案例》的学习笔记与心得体会。在此声明,文中摘录了书中部分内容,非是出于抄袭目的,而是有感于盖国强先生所写确实经典。在此声明对原作者的尊重与敬佩。]

第一章 ORACLE启动与关闭

一.Oracle数据库由以下四部分组成
1.操作系统文件级别的数据文件
2.逻辑级别的表空间、试图、表、索引、序列、触发器、存储过程、包等对象
3.Oracle的后台进程
4.内存结构SGA,PGA
二.Oracle数据库的启动
Oracle启动分为三个过程:
1.创建实例,启动数据库到nomount状态
2.挂载数据库到mount状态
3.打开数据库到open状态
下面分别简单介绍各个过程:
过程一:创建实例,启动数据库到nomount状态过程
Oracle要想启动数据库,必须有一个参数文件,此文件内包含了要启动的数据库的控制文件,数据库的名字,数据库的内存设置参数,等等,一系列重要信息。ORACLE根据系统中ORACLE_SID来寻找此参数文件,根据寻找到的参数文件建立数据库实例,之后,各个后台进程依次被启动,这样,数据库就进入了nomount状态。
参数文件的选择机制:
在Oracle9i之前,数据库的参数文件是一个文本格式的文件pfile,而从Oracle9i开始的版本里面,增加了spfile文件,该文件是一个二进制文件。
Oracle在启动的时候,会到特定的路径下寻找启动参数文件,该路径是在Oracle中硬编码的,用户是无法更改该路径的,该路径就是$ORACLE_HOME/dbs。Oracle会先选择spfile<ORACLE_SID>.ora文件作为启动参数文件,如果该文件不存在,会继续寻找spfile.ora文件,如果这两者都不存在,Oracle会寻找最后的一线希望—init<ORACLE_SID>.ora文件,也就是古老的文本格式参数文件pfile。假如连这最后的希望都破灭的话,Oracle会很郁闷,最终,它会放弃创建和启动实例(Instance)。
这一过程并不会涉及到数据库的物理数据文件,即使没有数据库文件,该过程也可以顺利完成。
Oracle实例启动所必须的参数和文件如下:
ORACLE_SID环境变量
ORACLE_SID对应的参数文件
DB_NAME(存储与参数文件中,若要创建并启动实例,参数文件中只需存储这一个参数便足够了)
有了以上三个前提,Oracle实例就可以成功创建并启动了,因为其他创建实例的必须条件都可以使用默认值。
过程二:挂载数据文件,启动数据库到mount状态
Oracle在这一过程,才真正涉及到数据库的物理数据文件。通过参数文件内指定的控制文件的位置信息,Oracle例程找到并打开控制文件,读取到数据文件和日志文件的位置,挂载数据文件和日志文件,另外,控制文件中还记录了检查点信息。但若例程没有找到控制文件,则会提示错误,并停止mount过程。
控制文件信息在参数文件中记录着3个,已达到复用的安全性,三个文件的内容是完全一样的,只需要有一个正确就可以挂载数据文件。
这个过程除了会检测控制文件的存在性以及正确性外,还会检查几个文件。
1. 口令文件
Orapw<ORACLE_SID>,此文件位于$ORACLE_HOME/dbs目录下,存放SYSDBA/SYSOPER用户的用户名及口令。在Oracle9i时代,该文件丢失,会提示错误,mount失败退出;而在Oracle10g之后,该文件丢失也不会影响mount,只是不能远程登陆以及进行授权操作。
口令文件的查找机制:
寻找Orapw<ORACLE_SID>,若此文件没找到,则继续寻找Orapw文件。若两者都查找失败,Oralce例程就会做出处理了。
2. 锁文件
lk<ORACLE_SID>,此文件位于$ORACLE_HOME/dbs目录下,在数据库启动时创建,用于操作系统对数据库的锁定。当数据库启动时锁定,当数据库关闭时释放。
过程三:打开数据文件,启动数据库到open状态
Oracle在这一过程,将打开上一过程中挂载的数据文件和日志文件,然后进行检查点及完整性检查,若正常,则启动数据库;若异常,则需要进行修复。
简单描述下Open阶段的一致性校验过程:
校验过程包括两项:第一次检查数据文件头中的检查点计数(CNT)是否和控制文件中的检查点计数(CNT)一致。用以确认数据文件是否来自同一版本。第二次检查数据文件头的开始的系统改变号(SCN)和控制文件中记录的结束系统改变号(SCN)是否一致,用以确认是否要对数据文件进行恢复。
检查通过后,打开数据库,锁定数据文件。数据库启动成功。

数据库启动过程的信息将被写入告警日志文件中,若出现启动故障,可以检查该文件,并分析其中的错误信息来定位故障原因,从而采取相应措施进行修正。该文件默认位于$ORACLE_HOME/rdbms/log目录下。

三.Oracle数据库的关闭
数据库关闭就是数据库启动的逆过程,同样分为3个阶段。分别是CLOSE,DISMOUNT,SHUTDOWN。
数据库关闭主要是介绍下几种不同的关闭方式。
方式一:shutdown normal
此方式是正常关闭数据库,也是shutdown指令默认行为。发出该命令后,数据库将阻止任何新的连接,并开始等待,直到当前的所有连接都断开后,才关闭数据库。这是对数据一致性而言最安全的关闭方式,但可能要等待很长时间。
方式二:shutdown immediate
此方式是常使用,指令发出后,所有事务中断,未提交的事务回滚,强制断开连接的用户并使其退出。接下来,执行检查点,将数据写回数据文件,关闭数据库。
方式三:shutdown transactional
此方式阻止任何新连接和新事务的发起,并在完成当前事务后关闭数据库。
方式四:shutdown abort
此方式等于服务器断电。强制断开连接,中断所有事务,立即关闭数据库。
未完成事务不回滚,数据库不执行检查点。下次启动需要进行实例恢复。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: