当前位置:   article > 正文

Oracle的staratup和shutdown_oracle startup started

oracle startup started

    1.当我们执行startup命令时,数据库在启动中会经过以下3个步骤:

  1. SQL> startup
  2. ORACLE instance started.
  3. Total System Global Area 2004267008 bytes
  4. Fixed Size 2214736 bytes
  5. Variable Size 520094896 bytes
  6. Database Buffers 1476395008 bytes
  7. Redo Buffers 5562368 bytes
  8. Database mounted.
  9. Database opened.
  • NOMOUNT 

Oracle读参数文件(里面有控制文件目录),打开实例,启动Oracle后台进程,给Oracle分配SGA。此时数据库状态为未装载。

该阶段下可执行:重建控制文件、重建数据库。

  • MOUNT

Oracle打开并读取控制文件(里面有数据文件和日志文件的目录),获取数据文件和重做日志文件的名称和位置。此时数据库完成装载。

在启动过程中,oracle把实例与数据库关联。Oracle打开并读取控制文件,获取数据文件和重做日志文件的名称和位置。在进行诸如全数据库恢复、更改数据库的归档日志模式或重命名数据文件这一类的活动时,通常需要以安装模式启动数据库。请注意,这三种操作都要求oracle访问数据文件,但不提供对文件的用户操作。

该阶段下可执行:数据库日志归档、数据库介质恢复、使数据文件联机或脱机、重新定位数据文件、重做日志文件。

  • OPEN

Oracle打开数据文件和重做日志文件,才能对外(所有有效用户)提供数据库服务。

启动过程的最后一步是打开数据库。当数据库以打开模式启动时,所有有效用户可以连接到数据库,执行数据库操作。在此步骤之前,一般用户根本就不能连接到数据库。通过发布下面的命令让数据库出于打开模式。

    1.1我们也可以执行start nomount / mount的命令,直接开启到指定阶段。alter database mount / open,更改阶段(只能顺序更改阶段,nomount下无法直接更改到open)。

  • startup nomount
  1. SQL> startup nomount;
  2. ORACLE instance started.
  3. Total System Global Area 2004267008 bytes
  4. Fixed Size 2214736 bytes
  5. Variable Size 520094896 bytes
  6. Database Buffers 1476395008 bytes
  7. Redo Buffers 5562368 bytes
  • alter database mount
  1. SQL> alter database mount;
  2. Database altered.
  • alter database open
  1. SQL> alter database open;
  2. Database altered.
  • select status from v$instance;可以在视图v$instance中查看到当前的状态。
  1. SQL> select status from v$instance;
  2. STATUS
  3. ------------------------------------
  4. OPEN

       1.2状态查询

启动状态SQL语句结果
nomountselect status from v$instance;STARTED
select open_mode from v$database;

ERROR at line 1:

ORA-01507: database not mounted

mountselect status from v$instance;MOUNTED
select open_mode from v$database;MOUNTED
openselect status from v$instance;OPEN
select open_mode from v$database;READ WRITE 或者 READ ONLY

   

2.shutdown的4种模式

  • shutdown normal(正常关闭模式)

阻止任何用户建立新的连接。
等待当前所有正在连接的用户主动断开连接(此方式下Oracle不会立即断掉当前用户的连接,这些用户仍然操作相关的操作)
一旦所有的用户都断开连接,则立即关闭、卸载数据库,并终止实例。(所以,一般以正常方式关闭数据库时,应该通知所有在线的用户尽快断开连接)

  • shutdown immediate(立即关闭模式)

阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务。
Oracle不等待在线用户主动断开连接,强制终止用户的当前事务,将任何未提交的事务回退。(如果存在太多未提交的事务,此方式将会耗费很长时间终止和回退事务)
直接关闭、卸载数据库,并终止实例。

  • shutdown transactional(事务关闭模式)

这种方式介于正常关闭方式跟立即关闭方式之间,响应时间会比较快,处理也将比较得当。执行过程如下:

阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务。
等待所有未提交的活动事务提交完毕,然后立即断开用户的连接。
直接关闭、卸载数据库,并终止实例。

  • shutdown abort(终止关闭模式)

这是比较粗暴的一种关闭方式,当前面3种方式都无法关闭时,可以尝试使用终止方式来关闭数据库。但是以这种方式关闭数据库将会丢失一部份数据信息,当重新启动实例并打开数据库时,后台进程SMON会执行实例恢复操作。一般情况下,应当尽量避免使用这种方式来关闭数据库。执行过程如下:

阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务。
立即终止当前正在执行的SQL语句。
任何未提交的事务均不被退名。
直接断开所有用户的连接,关闭、卸载数据库,并终止实例。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/85905?site
推荐阅读
相关标签
  

闽ICP备14008679号