Oracle 数据库启动过程

Posted 知行合一

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle 数据库启动过程相关的知识,希望对你有一定的参考价值。

  一 启动数据库

  Oracle启动过程涉及几种模式,这些模式涉及不同的文件,每个状态下数据库做不同的事情,同时这些模式适用于不同的维护需求,主要的模式有三种:NOMOUNT、MOUNT、OPEN。

  

  1 NOMOUNT:启动数据库实例, 此时读取参数文件,但是不加载数据库;

  2 MOUNT:启动数据库实例,加载数据库,但是数据库处于关闭状态;

  3 OPEN: 启动数据库实例,加载并打开数据库;

  4 FORCE: 终止实例并重启数据库,这种模式在数据库关闭或者启动遇到问题时使用,这种方式不到万不得已时不要使用,会有数据丢失;

 

  1 NOMOUNT

  这种模式只会创建实例(创建Oracle实例的各种内存结构与服务进程,其中有5个进程必须启动, DBWR、LGWR、SMON、PMON、CKPT),并不加载数据库,也不会打开任何数据文件。

  先关闭数据库

  

  startup nomount

  

  数据库的启动过程记录在警告追踪文件中,该警告追踪文件中包括数据库启动信息,它存放在参数BACKGOUND_DUMP_DEST定义的目录下,警告日志的名字为alert_orcl.log

  

  进入到目录查看警告日志关于startup nomount过程记录

  

  测试在nomount状态时数据字典是否打的开,下图说明数据库字典在nomount状态下是无法访问的,因为数据字典需要从控制文件获取文件的信息,而此时控制文件没有打开所以无法查看。

  

  但是在nomount下可以通过参数文件获得控制文件的位置,因为此时参数文件已经打开

  

  

  2 MOUNT

  这种模式将启动实例,加载数据库并保持数据库关闭状态。数据库启动到MOUNT状态有两种方式,一是可以直接启动数据库到MOUNT,二是如果数据库已经启动到NOMOUNT状态,使用alter database mount把数据库切换到MOUNT状态;

  alert database mount

  

  startup mount

  

  此时我们可以查看数据字典,因为控制文件已经打开

  

  但是此时我们不能访问数据库的数据文件(表,视图),文件此时数据文件没有打开。

  

  

  3 OPEN

  这种模式将启动实例,加载并打开数据库,这是常规的启动模式,用户想要对数据库进行多种操作就必须使用OPEN模式启动数据库,启动到OPEN状态,有两种方式,一是直接启动到OPEN状态(使用startup或者startup open),二是如果数据库处于NOMOUNT或者MOUNT状态,可以通过alter database open切换到OPEN状态。

  

  此时可以访问数据文件了。

  

  

  4 FORCE

  这种模式将终止实例并重启数据库,这是一种强制性启动模式,只有在启动或者关闭出现问题时才使用,并且有一定的风险,会丢失数据,造成意外的问题。

  

  

  二 关闭数据库

  与启动数据库顺序相反,也分三个步骤:关闭数据库(CLOSE 关闭数据文件),卸载数据库(关闭控制文件 DISMOUNT),关闭Oracle实例(SHUTDOWN)。同时关闭模式也有多种常见的有:

  1 NORMAL

  正常的关闭方式,如果对于关闭数据库的时间没有限制,通常采用这种方式,以NORMAL方式关闭数据库,Oracle将执行如下操作:

  A 阻止任何用户建立新的连接;

  B 等待当前所有正在连接的用户主动断开连接;

  C 当前所有用户的都断开连接后,将立即关闭数据库;

 

  2 TRANSACTION

  事务关闭方式,它的首要任务是保证当前所有活动的事务都可以被提交,并在尽可能短的时间内关闭数据库。以事务方式关闭,Oracle将执行如下操作:

  A 阻止用户建立新连接和开始新事务;

  B 等待所有活动事务提交后,再断开用户连接;

  C 当所有活动事务提交完毕,用户断开连接后,关闭数据库;

 

  3 IMMEDIATE

  立即关闭方式,可以较快且安全的关闭数据库,是DBA经常采用的关闭数据库的方式,立即关闭方式,Oracle执行如下操作:

  A 阻止用户建立新的连接和开始新的事务;

  B 中断当前事务,回滚未提交事务;

  C 强制断开所有用户连接和执行检查点把脏数据写到数据文件中;

  D 关闭数据库

  

 

以上是关于Oracle 数据库启动过程的主要内容,如果未能解决你的问题,请参考以下文章

oracle 启动停止过程

Oracle数据库体系结构启动过程关闭过程

深入剖析Oracle启动过程内部初始化

Oracle启动数据库过程中实例与线程思考

oracleDBConsoleorcl服务 在哪里启动

oracle相关操作,存储临时表空间用户操作启动过程