【体系结构】Oracle 11g实例和数据库启动过程详解

实例和数据库启动概览

通常情况下,可以使用SQL*Plus命令、OEM或者SRVCTL来手动启动实例,然后装载和打开数据库,使它能够被用户使用。下图展示了实例和数据库的启动顺序:

说明:
  • 启动实例,不装载数据库:该实例已启动,但尚未与数据库关联;
  • 装载数据库:该实例已启动,并通过读取控制文件与数据库相关联,此时数据库对用户来说,是处于关闭状态;
  • 打开数据库:该实例已启动,并与打开的数据库相关联,数据文件中包含的数据可以被授权的用户访问。
如何启动实例?

当Oracle数据库启动实例时,它执行以下步骤:
1、在特定于平台的默认位置搜索服务器参数文件(server parameter file),如果没有找到,则查找初始化参数文件(initialization parameter file),可以通过带有spfile或pfile参数的startup命令覆盖默认启动行为;
2、读取参数文件以确定初始化参数的值;
3、根据初始化参数设置分配SGA;
4、启动Oracle后台进程;
5、打开alert log和trace文件,并将所有显式参数设置以有效参数语法的形式写入alert log;
在该阶段,数据库不会和实例相关联,需要数据库处于Nomount状态的场景包括数据库创建和某些备份和恢复操作。

如何装载数据库?

实例装载数据库,以将数据库和该实例相关联。要装载数据库,实例将获取在CONTROL_FILES初始化参数指定的数据库控制文件的名称,并打开这些文件。数据库读取控制文件以查找数据文件和在线重做日志文件的名称。
数据库处于mounted状态时,数据库是关闭的,此时只有数据库管理员可以访问,并可以完成一些特定的维护操作,但是,对于常规操作,数据库是不可用的。
如果数据库允许多个实例同时mount同一个数据库,那么CLUSTER_DATABASE参数设置可以使数据库对多个实例可用,数据库的行为取决于如下设置:
1、如果mount数据库的第一个实例的CLUSTER_DATABASE是false(默认值),那么只有这个实例可以mount数据库;
2、如果第一个实例的CLUSTER_DATABASE是ture,那么其他实例可以mount数据库,如果它们的CLUSTER_DATABASE参数设置为true的话。mount数据库的实例的数量取决于创建数据库时指定的最大值。

如何打开数据库?

打开已装载的数据库,可以进行一些常规的数据库操作,任何有效用户都可以连接并访问一个已打开的数据库。打开数据库时,数据库将执行以下操作:
1、打开表空间中在线(online)的数据文件:如果表空间处于离线状态,则数据文件也是离线状态;
2、获取撤销表空间(undo tablespace):如果存在多个撤销表空间,那么UNDO_TABLESPACE初始化参数指定要使用的撤销表空间,如果该参数未设置,则选择第一个可用的撤销表空间;
3、打开在线重做日志文件(online redo log)。



猜你喜欢

转载自blog.csdn.net/Alen_Liu_SZ/article/details/80062790