赞
踩
1.当我们执行startup命令时,数据库在启动中会经过以下3个步骤:
- SQL> startup
- ORACLE instance started.
-
- Total System Global Area 2004267008 bytes
- Fixed Size 2214736 bytes
- Variable Size 520094896 bytes
- Database Buffers 1476395008 bytes
- Redo Buffers 5562368 bytes
- Database mounted.
- Database opened.
Oracle读参数文件(里面有控制文件目录),打开实例,启动Oracle后台进程,给Oracle分配SGA。此时数据库状态为未装载。
该阶段下可执行:重建控制文件、重建数据库。
Oracle打开并读取控制文件(里面有数据文件和日志文件的目录),获取数据文件和重做日志文件的名称和位置。此时数据库完成装载。
在启动过程中,oracle把实例与数据库关联。Oracle打开并读取控制文件,获取数据文件和重做日志文件的名称和位置。在进行诸如全数据库恢复、更改数据库的归档日志模式或重命名数据文件这一类的活动时,通常需要以安装模式启动数据库。请注意,这三种操作都要求oracle访问数据文件,但不提供对文件的用户操作。
该阶段下可执行:数据库日志归档、数据库介质恢复、使数据文件联机或脱机、重新定位数据文件、重做日志文件。
Oracle打开数据文件和重做日志文件,才能对外(所有有效用户)提供数据库服务。
启动过程的最后一步是打开数据库。当数据库以打开模式启动时,所有有效用户可以连接到数据库,执行数据库操作。在此步骤之前,一般用户根本就不能连接到数据库。通过发布下面的命令让数据库出于打开模式。
1.1我们也可以执行start nomount / mount的命令,直接开启到指定阶段。alter database mount / open,更改阶段(只能顺序更改阶段,nomount下无法直接更改到open)。
- SQL> startup nomount;
- ORACLE instance started.
-
- Total System Global Area 2004267008 bytes
- Fixed Size 2214736 bytes
- Variable Size 520094896 bytes
- Database Buffers 1476395008 bytes
- Redo Buffers 5562368 bytes
- SQL> alter database mount;
-
- Database altered.
- SQL> alter database open;
-
- Database altered.
- SQL> select status from v$instance;
-
- STATUS
- ------------------------------------
- OPEN
1.2状态查询
启动状态 | SQL语句 | 结果 |
---|---|---|
nomount | select status from v$instance; | STARTED |
select open_mode from v$database; | ERROR at line 1: ORA-01507: database not mounted | |
mount | select status from v$instance; | MOUNTED |
select open_mode from v$database; | MOUNTED | |
open | select status from v$instance; | OPEN |
select open_mode from v$database; | READ WRITE 或者 READ ONLY |
2.shutdown的4种模式
阻止任何用户建立新的连接。
等待当前所有正在连接的用户主动断开连接(此方式下Oracle不会立即断掉当前用户的连接,这些用户仍然操作相关的操作)
一旦所有的用户都断开连接,则立即关闭、卸载数据库,并终止实例。(所以,一般以正常方式关闭数据库时,应该通知所有在线的用户尽快断开连接)
阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务。
Oracle不等待在线用户主动断开连接,强制终止用户的当前事务,将任何未提交的事务回退。(如果存在太多未提交的事务,此方式将会耗费很长时间终止和回退事务)
直接关闭、卸载数据库,并终止实例。
这种方式介于正常关闭方式跟立即关闭方式之间,响应时间会比较快,处理也将比较得当。执行过程如下:
阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务。
等待所有未提交的活动事务提交完毕,然后立即断开用户的连接。
直接关闭、卸载数据库,并终止实例。
这是比较粗暴的一种关闭方式,当前面3种方式都无法关闭时,可以尝试使用终止方式来关闭数据库。但是以这种方式关闭数据库将会丢失一部份数据信息,当重新启动实例并打开数据库时,后台进程SMON会执行实例恢复操作。一般情况下,应当尽量避免使用这种方式来关闭数据库。执行过程如下:
阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务。
立即终止当前正在执行的SQL语句。
任何未提交的事务均不被退名。
直接断开所有用户的连接,关闭、卸载数据库,并终止实例。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。