数据库的启动过程分为三个步骤,也就代表相应的三个状态,如下:
nomount (创建并启动实例)---> mount (装载数据库)---> Open (打开数据库)
根据数据库的参数文件,创建并启动实例和一些后台进度及服务进程,创建SGA 的内存结构,但此处并不检查数据库的物理文件。
用实例去打开数据库的控制文件,从中找出数据库名称、数据文件及重做日志文件的位置、名称等数据库的物理结构信息,但并没有去打开数据文件和重做日志文件,主要是打开数据库阶段做准备的,此过程中,如果发现控制文件有损坏,那么将无法进行数据库的装载。
此过程主要是实例打开处理联机状态的数据文件和重做日志文件,如果数据文件和重做日志文件被损坏了,那么将返回数据库错误信息,无法进行打开数据库的操作,需要将数据库进行恢复操作。
数据库的关闭与数据库的启动是一个互逆的过程,如下所示:
关闭数据库--->卸载数据库--->关闭实例
就是关闭数据库文件及重做日志文件。
是把控制文件关闭
关闭实例,释放内存结构,停止数据库的后台进程及服务进程。
在启动数据库之前应该先启动数据库的监听服务,否则客户端工具无法连接到数据库上来,启动监听服务的方式可以在WINDOWS 系统服务中进行启动,也可以通过命令行的方式进行启动。
LSNRCTL START 启动监听服务;
LSNRCTL STATUS 查看监听服务状态;
LSNRCTL STOP 停止监听服务。
省略
对应数据库启动的三个步骤,数据库启动有三个模式,每个模式下可以完成特定的任务,完成之后可心通过 Alter database 更改为更高模式,直到打开数据库为止,如下图 5-1 :
启动模式 |
说明 |
nomount 模式 |
创建并启动数据库实例 |
mount 模式 |
启动数据库实例并装载数据库 |
open 模式 |
启动数据库实例,装载数据库,打开数据库 |
启动数据库的基本语法如下:
STARTUP [NOMOUNT|MOUNT|OPEN|FORCE] [RESTRICT][PFILE=filename]
5 . 1 STARTUP NOMOUNT
如果 DBA 要执行如下任务,就必须以此模式启动:
它是先读取数据库初始化参数文件,创建并启动实例,此时用户可以和数据库进行通信,访问 SGA 区相关的数据字典视图,但不能使用数据库中的任何文件。
5 . 2 STARTUP MOUNT
如果 DBA 要执行如下任务,就必须以此模式启动:
通过初始化参数文件中的 CONTROL_FILES 参数找到数据库的控制文件,读取控制文件获取物理结构信息,如数据文件,重做日志文件的位置及名称,实现数据库的装载。此时用户不仅可以访问 SGA 相关的数据字典视图,还可以访问与控制文件相关的数据字典视图。
5 . 3 STARTUP [OPEN]
以常规方式启动数据库,此时具有 CREATE SESSION 权限的用户都可以连接到数据库,并进行基本的数据库访问操作。
5 . 4 START FORCE
如果 DBA 要执行如下任务,就必须以此模式启动:
l 无法通过 SHUTDOW NORMAL , SHUTDOWN IMMEDIATE , SHUTDOWN TRANSACTION 语句关闭数据库实例时;
l 在启动实例时出现无法恢复的错误。
它是在上术各种启动模式都无法启动数据库时,进行强制的启动数据库操作,其本质是先异常关闭数据库,再进行重启数据库操作。
5 . 5 START RESTRICT
l 当 DBA 要执行如下任务时,必须以此模式启动:
l 执行数据库的导入和导出操作;
l 执行数据库装载操作;
l 暂时停止普通用户连接数据库;
l 进行数据库移植和升级操作。
它是以 OPEN 模式打开数据库,但只有 CREATE SESSION 和 RESTRICTED SESSION 权限的用户才可以访问数据库。当操作完成后,可以通过如下语句来禁用 RESTRICTED SESSION 权限:
ALTER SYSTEM DISABLE RESRICTED SESSION ; |
5 . 6 STARTUP PFILE
以指定初始化参数文件去创建实例,如果没指定,就去找默认的初始化参数文件,如果还没找到就去找默认的文本初始化参数文件,如果还没找到,就启动失败。
注意: pfile 只能指定文本化初始化参数文件。