Oracle的启动、关闭原理,pfile和spfile的转换,只读模式

1、启动经过三个阶段:启动实例(unmount)、装载数据库(mount)、打开数据库(open)。

第一个阶段:oracle启动实例的时候,会读取一个参数文件,这个文件可以是PFILE也可以是SPFILE,这两个文件是一样的,一个是文本文件,一个是二进制文件,根据参数文件的配置,分配相应大小的一片内存区域叫系统全局去SGA,然后启动一系列的后台进程,这些内存和进程合起来组成实例。启动完成后,数据库还没有和实例关联,这时数据库不可访问。这个阶段主要是数据库的维护(重建控制问文件等)。

第二阶段:oracle根据参数文件中找到控制文件的配置,然后打开控制文件,从控制文件中获得数据文件和重做日志文件的名字及位置,这个时候实例和数据库关联起来,但是还是不能访问。这个阶段主要用于数据库的维护(如恢复数据库等)。

第三阶段:oracle打开数据文件和重做日志文件,这时数据库可用。普通用户可以登录到数据库,并对数据库进行操作。

查询警报日志的位置

SQL> show parameter background_dump_dest;

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
background_dump_dest		     string	 /u01/app/oracle/diag/rdbms/orc
						 l/orcl/trace

默认命名方式为:$ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/trace目录下

也可以使用show parameters查看所有的参数配置项
在这里插入图片描述

SQL> select name,value from v$parameter where name = 'background_dump_dest';

NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
background_dump_dest
/u01/app/oracle/diag/rdbms/orcl/orcl/trace

PFILE的缺点:在数据库运行时,DBA不能永久修改初始化参数的值,需要先关闭数据库,对参数文件进行修改,然后用修改后的PFILE重启数据库。
如果数据库使用的是SPFILE启动(startup),DBA只需使用alter system set ... scope=spfile命令修改初始化参数,这个命令会更新初始化参文件。
临时修改:alter system set ... scope=memory,这种更改只对当前实例有效。重启实例,刚才的修改将会丢失。用户也可以使用alter session命令修改某些初始化参数的值,这种改变仅限于本次会话。

2、PFILE、SPFILE的相互转换

根据spfile创建pfile

create pfile='pfile的名字' from spfile='spfile的名字'

根据pfile创建spfile,文件命名格式:spfile$ORACLE_SID.ora

create spfile='spfile的名字' from pfile='pfile的名字'

默认我们经常使用startup不带任何参数启动oracle,其实就是使用spfile参数文件启动,使用pfile启动,可以如下:

SQL> startup pfile='pfile的文件路径'

3、数据库oracle重启

建议先关闭数据库,再打开数据库,不过有如下语法可以重启数据库,官方不推荐。

startup force

4、把数据库启动到只读模式

只读模式下(read only),数据文件和重做日志文件将禁止写操作,在只读模式下,允许执行数据库恢复及其他不会产生回滚的操作。

SQL> startup open read only
ORACLE instance started.

Total System Global Area 6680915968 bytes
Fixed Size		    2213936 bytes
Variable Size		 3556771792 bytes
Database Buffers	 3087007744 bytes
Redo Buffers		   34922496 bytes
Database mounted.
Database opened.

可以使用如下语句查询打开模式

SQL> select open_mode from v$database;

OPEN_MODE
--------------------
READ ONLY

猜你喜欢

转载自blog.csdn.net/huangbaokang/article/details/89703308