首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【DB笔试面试534】在Oracle中,数据库的启动经历几个过程?

【DB笔试面试534】在Oracle中,数据库的启动经历几个过程?

作者头像
小麦苗DBA宝典
发布2019-09-29 15:16:37
8210
发布2019-09-29 15:16:37
举报

题目部分

在Oracle中,数据库的启动经历几个过程?

答案部分

Oracle数据库的启动,严格来说应该是实例的启动,数据库仅仅是在实例启动后进行装载。Oracle数据库启动的过程被划分为几个不同的步骤,在不同的启动过程中,可以对其实现不同的操作。

启动命令:STARTUP [FORCE][RESTRICT] [PFILE=...] [NOMOUNT] [MOUNT] [OPEN]

启动过程:NOMOUNT--->MOUNT--->OPEN,详细情况如下表所示:

阶段

NOMOUNT阶段(即实例的启动,又称STARTED状态)

MOUNT阶段

OPEN阶段

完成的任务

实例的启动通常包含下列任务:(a)按以下顺序在$ORACLE_HOME/dbs(Windows平台在%ORACLE_HOME%\database目录)目录下搜索下列参数文件:spfile<SID>.ora ---> spfile.ora ---> init<SID>.ora(b)根据参数内容分配SGA。(c)启动后台进程,例如PMON、SMON等。(d)打开并修改告警日志文件及跟踪文件。

MOUNT阶段完成的任务如下所示:(a)利用参数文件中的CONTROL_FILES的值,打开并锁定控制文件。检查控制文件是否存在且同步。即使有一个控制文件缺失或损坏,实例也会向DBA返回错误(指明控制文件缺失或状态不同步)并保持NOMOUNT状态。(b)将数据库与实例关联起来。(c)读取控制文件并获取数据文件和Redo日志文件的名称和状态信息,但不检查数据和日志文件是否存在。需要注意的是,这一步会读取控制文件,如果这一步有任何一个控制文件被损坏,那么数据库就无法正常启动。

OPEN阶段完成的任务如下所示:(a)验证所有的未脱机数据文件是否存在,但是SYSTEM和Undo表空间的文件必须验证。验证控制文件中记录的所有数据文件是否存在,但不验证脱机文件。在DBA尝试使脱机的文件联机之前,不会检查这些文件。如果数据文件不属于SYSTEM或UNDO表空间,那么DBA就可使数据文件脱机并打开实例。如果缺失了任何数据文件,那么数据库会向DBA返回一个错误,指出第一个缺失的文件,此时实例保持MOUNT状态。当实例发现缺失文件时,错误消息中只显示导致问题的第一个文件。要查找需要恢复的所有文件,DBA可以通过检查v$recover_file动态性能视图来获取需要注意的文件的完整列表。(b)验证所有未脱机数据文件或只读数据文件是否与控制文件同步。必要时,实例会自动执行实例恢复。但是,如果某个数据文件不同步,而且无法通过使用联机重做日志进行恢复,那么DBA必须执行介质恢复。如果任何文件需要进行介质恢复,那么数据库会向DBA返回一条错误消息,指出第一个需要恢复的文件,此时实例保持MOUNT状态。(c)打开联机Redo日志文件。检查控制文件已知的所有重做日志组是否至少有一个成员存在。任何缺失的成员会记录在告警日志中。只要日志组中至少有一个成员可用,实例就会保持打开状态。

备注

该阶段多用于数据库创建、控制文件重建、特定的备份恢复等。需要注意的是,此阶段不打开任何数据库文件(控制文件、数据文件、在线Redo日志)。在RMAN恢复时,还原数据库控制文件和SPFILE文件也是在该阶段进行。

该阶段多用于以下场景:(a)重命名数据文件,移动数据文件位置等(数据库被打开,表空间脱机的情况下也可以重命名数据文件)。(b)修改数据库的归档模式。(c)实现数据库的完全恢复。

该阶段需要注意以下几点:(a)在此期间,Oracle将校验所有的数据文件和联机Redo日志文件能否打开并对数据库作一致性检查。(b)如果出现一致性错误,那么SMON进程将启动实例恢复。(c)如果任意一个数据文件或联机日志文件丢失,那么Oracle数据库将会报错。

命令

STARTUP NOMOUNT

STARTUP MOUNT

STARTUP

打开数据库的几种特殊方式:

① 只读模式:STARTUP OPEN READ ONLY;

若当前数据库在MOUNT状态,则执行ALTER DATABASE OPEN READ ONLY;。

② 受限模式:

有时进行数据库维护,希望一般的用户不能登录。可以启动到该模式,在这种模式下只有用户具有RESTRICTED SESSION权限的用户才可登录到数据库。

l 启动方法:STARTUP RESTRICT;

l 取消受限:ALTER SYSTEM DISABLE RESTRICTED SESSION;

数据库的关闭也有一些参数需要注意,关闭命令为:

SHUTDOWN ABORT | IMMEDIATE | TRANSACTIONAL | NORMAL

其中,SHUTDOWN不带参数将缺省为NORMAL。一般情况下,关闭数据库都使用“SHUTDOWN IMMEDIATE”命令。这几个参数的区别见下表:

SHUTDOWN

NORMAL

TRANSACTIONAL

IMMEDIATE

ABORT

是否允许新连接

N

N

N

N

是否允许新事务

Y

N

N

N

是否等待所有未提交事务完成提交

Y

Y

N

N

等待所有会话断开连接

Y

N

N

N

强制检查点

Y

Y

Y

N

实例恢复

N

N

N

Y

告警日志

Shutting down instance (normal)

Shutting down instance (transactional)

Shutting down instance (immediate)

Shutting down instance (abort)

l NORMAL表示不准许新的连接,等待当前所有连接到数据库系统的用户都断开连接(DISCONNECT),强制检查点并关闭文件,下次启动不需要实例恢复。

l TRANSACTIONALE表示不准许新的连接,不允许开启新事务,数据库等待所有事务完成后断开当前连接到数据库的所有用户,强制检查点并关闭文件,下次启动不需要实例恢复。

l IMMEDIATE表示不准许新的连接,不允许开启新事务,任何未提交的事务都进行回滚。数据库显式回滚活动的事务并断开所有当前连接到数据库的用户,强制检查点并关闭文件,下次启动不需要实例恢复。

l ABORT表示不准许新的连接,不允许开启新事务,任何未提交的事务不进行回滚。数据库立刻中断所有SQL的执行,并断开所有用户的连接。不作强制检查点,下次启动需要做实例恢复。

& 说明:

关于Oracle的启动和关闭的更多内容可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-2139136/

真题1、给出数据库正常启动所经历的几种状态?

答案:数据库正常启动经历如下所示的3个阶段:

(1) STARTUP NOMOUNT -- 数据库实例启动

(2) STARTUP MOUNT -- 数据库装载

(3) STARTUP OPEN -- 数据库打开

本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DB宝 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档