Oracle数据库的三种启动模式和数据库文件

阅读文本大概需要 好几分钟,建议先收藏,以备不时之需。

Oracle Server 是由实例(instance)和数据库(database)组成。

实例(instance)是由共享内存(SGA)和后台进程组成。

如图:

数据库(dababase)是存储在磁盘的一系列文件。SGA主要由Share Pool(共享池,又分Library Cache和Data Dictionary Cache,前者临时存储最近执行过的语句代码等,后者临时存储数据位置、表定义及用户权限等)

Database Buffer Cache(数据缓冲区,临时存储读过的数据块)、Redo Log Buffer(重做日志缓冲区,临时存储数据库修改操作)、Large Pool(大池,分担Share Pool部

分工作供共享服务器进程使用,如备份恢复、大型I/O操作、并行查询等)和Java Pool(Java池,分析Java语句)。

后台进程是数据库和操作系统进行交互的通道,后台进程的命名由ORACLE_SID决定,ORACLE根据ORACLE_SID来寻找参数文件启动实

例。是Oracle数据库为保持最佳性能和协调多用户请求而设置的,主要有DBWR(将Database Buffer Cache数据写入Data Files)、LGWR(将Redo Log Buffer数据写入Redo Log Files)、

CKPT(协调数据文件、控制文件和重做日志,将System Change Number即SCN写入到控制文件和数据文件头部,促使DBWR、LGWR执行)、SMON(System Monitor,3方面作用:instance recovery实例故障数据恢复、合并空闲碎片空间、回收临时段)、PMON(用户例程意外终止时处理事务,如回退事务、释放锁及其他资源等)、ARCH(将Redo Log Files写入Archive Log Files)、CJQ0(job queue coordinator)、RVWR(recover writer,为flashback database提供日志记录)等进程。

数据库(database)是指存储在磁盘上的一组物理文件,如数据文件(Data files,用于存储数据)、控制文件(Control files,存储数据文件、重做日志文件、归档日志文件位置及维护数据库完整性所需信息)和重做日志文件(Redo Log files,存储修改数据的所有操作记录以备故障后恢复),这三个是启动数据库必须的文件;

另外还有参数文件(Parameter file,设置内存后台进程的启动等)、归档日志文件(Archived Log files,归档记录写满的重做日志文件的内容)和口令文件(Password file,验证用户名密码),这三个是非必须的文件。

数据库启动三种方式解析

数据库启动的三种方式(三个阶段):

nomount : 需要参数文件

mount : 需要控制文件

open:需要全部的数据文件和日志文件,并且保证所有的数据文件和日志文件与控制文件里面记录的位置保持一致。

一般的启动顺序是:nomount-->mount-->open

1

nomount状态

①启动实例。

Reading the initialization file from $ORACLE_HOME/dbs in the following order:

②从环境变量下dbs目录按如下顺序读取初始化文件:

-first spfileSID.ora

③首先,读取spfile+实例名.ora

-if not found then, spfile.ora

④若未发现文件则读取spfile.ora

-if not found then, initSID.ora

⑤若未发现文件则读取init+实例名.ora

Specifying the PFILE parameter with STARTUP overrides the default behavior.

⑥指定pfile参数文件启动以替代默认启动方式

* Allocating the SGA

⑦分配SGA

* Starting the background processes

⑧启动后台进程

* Opening the alertSID.log file and the trace files

启动预警日志文件(记录实例生命周期内事件,如系统内部错误、数据块损坏、系统参数修改等)和追踪文件(记录SQL操作及时间消耗等)

The database must be named with the DB_NAME parameter either in the initialization Parameter file or in the STARTUP command.

数据库必须用初始参数文件或启动命令中的DB_NAME参数命名。

2

mount状态

① 关联实例与数据库,读取控制文件并获取数据文件和重做日志文件名称状态。

Mounting a database includes the following tasks:

② 装载数据库包括以下任务:

* Associating a database with a previously started instance

将先前启动的实例与数据库相关联

* Locating and opening the control files specified in the parameter file

③ 从参数文件中找到控制文件位置并打开

* Reading the control files to obtain the names and status of the data files and online redo log files.However,no checks are performed to verify the existence of the data files and online redo log files at this time.

从控制文件中读取数据文件及重做日志文件名称与状态,但是,此时并不检查数据文件与重做日志文件的存在性。

3

open状态

opening the database includes the following tasks:

打开数据库包含以下任务:

① opening the online data log files

打开数据文件

② opening the onling redo log files

打开重做日志文件

③If any of the datafiles or noline redo log files are not present when you attempt to open the database ,the oracle server returns an error.

若在打开数据库时数据文件或重做日志文件任何一个不存在,则Oracle服务器返回一个错误。

④ During this final stage,the oracle server verfies that all the data files and online redo log files can be opened and checks the consistency of the database. If necessary,the SMON background process initiates instance recovery.

在最后阶段,Oracle数据库验证数据文件和重做日志文件可否打开并检验数据库的一致性,若不一致,SMON后台进程将启动实例恢复。

启动和关闭数据库的参数介绍

shutdown有四个参数:normal、transactional、immediate、abort,不带参数默认为normal。

shutdown normal:不断开现在连接用户,阻止任何用户建立新的连接,包括管理员在内。已经连接的用户能够继续他们当前的工作,如递交新的更新事务,直到此用户自行断开连接。这样需要等待的时间长,可以查出现连用户,再通知其自行断开。所有的用户都断开连接,数据库才进行关闭操作,即关闭数据库、卸载数据库、终止例程。在这种情况下关闭的数据库在重新启动后,不会出现问题。启动时不需要实例恢复。

shutdown transactional:阻止任何用户建立新连接,等待所有当前连接用户的未递交的活动事务提交完毕,然后立即断开用户的连接。所有的用户都断开连接则立即关闭数据库,进行关闭数据库、卸载数据库、终止进程等操作。这种方式,用户有可能正在算账,做复杂报表!一次数据库操作做不完的,在刚做了一次数据库操作后,将被断开,这样对用户有一定影响,启动时不需要实例恢复。

shutdown immediate:阻止任何用户新的连接,同时限制当前连接用户开始新的事务。如果已连接用户有未完成的事务,则数据库系统不会等待他们完成,而是直接把当前未递交的事务回退。数据库系统不再等待用户主动断开连接,当未递交的事务回退成功后,系统会直接关闭、卸载数据库,并终止数据库进程,启动时不需要实例恢复。

shutdown abort:当数据库出现故障时,可能以上三种方式都无法正常关闭数据库,则使用这种方法。强制结束当前正在执行的SQL语句,任何未递交的事务都不被回退!这种方法基本上不会对控制文件或者参数文件造成破坏,这比强制关机要好一点(在无法正常关闭数据库的时候),启动时自动进行实例恢复。

startup有7个参数:nomount、mount、open、pfile、force、restrict和

startup nomount:通过参数文件,分配sga,启动数据库后台进程,不打开控制文件和数据文件,不能访问数据库。

startup mount:仅给dba进行管理操作,不允许数据库用户访问。仅当前实例的控制文件被打开,数据文件未打开,在这个模式下可以进行如下操作:重命名数据文件、添加取消或重命名重做日志文件、设置归档模式、设置闪回、执行完整的数据库恢复操作等。

startup open:startup的默认参数就是open,打开数据库,允许数据库的访问,当前实例控制文件中所描述的所有文件都已经打开。

startup pfile=FILENAME:以FILENAME为初始化文件启动数据库,不是采用默认初始化文件。

startup force:中止当前数据库的运行,并开始重新正常的启动数据库。

startup restrict:只允许具有restricted session权限的用户访问数据库,该模式下登陆者可做如下操作:执行数据库数据的导出或导入、执行数据装载操作用SQL*Loader、暂时阻止一般的用户使用数据、在某个移植过程和升级操作过程中restricted session登陆后可使用ALTER SYSTEM 语句来禁止RESTRICTED SESSION特性ALTER SYSTEM DISABLE RESTRICTED SESSION;如果是在非受限模式下打开的数据库,后来发现需要限制访问,此时可以使用带ENABLE RESTRICTED SESSION 子句的ALTER SYSTEM 语句来完成。

查看数据库文件,配置,状态

下面介绍一下如何查看数据库相关的配置,状态等

看当前数据库的状态:select status from V$instance;

查看参数文件的位置:show parameter spfile;

查看控制文件的位置:show parameter control;

查看数据文件的位置:select file_name from dba_data_files;

IT充电空间

关注这个号的你,可以说很优秀了

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180323G0D5XH00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券