天天看点

Oracle control文件,Oracle中的控制文件(control file)

本文主要介绍Oracle中控制文件,目录如下:

1. 控制文件存放了哪些信息?

2. 控制文件的存放位置是什么?

3. Oracle什么时候读取控制文件?

4. 控制文件这么重要,能不能增加一个以防万一?

1. 控制文件存放了哪些信息?数据库的名称、数据文件的名称和位置、联机重做日志的名称和位置、当前联机重做日志的序列号、检查点、RMAN备份文件的名称和位置

例如,查看数据库的信息:

sql>

select name,open_mode,created,current_scn from v$database;

NAME

OPEN_MODE

CREATED

CURRENT_SCN

--------- -------------------- --------- -----------

ORCL

READ WRITE

12-FEB-18 1651963

2. 控制文件的存放位置是什么?第一种方法就是grep命令查找spfile

[[email protected] dbs]$

grep -ia "control" $ORACLE_HOME/dbs/spfileorcl.ora

*.control_files='/home/oracle/app/oracle/oradata/orcl/control01.ctl','/home/oracle/app/oracle/oradata/orcl/control02.ctl'

还可以在sqlplus里通过show parameter control_files查看

sql>

show parameter control_files

NAME

TYPE

VALUE

------------------------------------ ----------- ---------------

control_files

string

/home/oracle/app/oracle/oradat

a/orcl/control01.ctl,/home/or

acle/app/oracle/oradata/orcl/c

ontrol02.ctl

sql>

3. Oracle什么时候读取控制文件?数据库启动的三个阶段:

startup nomount -> 这个阶段会打开并读取配置文件,从配置文件中获取控制文件的位置信息

alter database mount -> 这个阶段会打开并读取控制文件,从控制文件中获取数据文件和联机重做日志文件的位置信息

alter database open -> 这个阶段会打开数据文件和联机重做日志文件

4. 控制文件这么重要,能不能增加一个以防万一?可以,目前看到上面有2个,我再增加一个,名子为 /home/oracle/app/oracle/oradata/orcl/control03.ctl,步骤如下:

4.1 确认在使用spfilesql>

show parameter spfile

NAME

TYPE

VALUE

-------- ----------- ------------------------------

spfile

string

/home/oracle/app/oracle/product/

12.2.0/dbhome_1/dbs/spfileorcl.ora

4.2 修改control_files参数

sql> alter system set control_files='/home/oracle/app/oracle/oradata/orcl/control01.ctl',

'/home/oracle/app/oracle/oradata/orcl/control02.ctl',

'/home/oracle/app/oracle/oradata/orcl/control03.ctl' scope=spfile;

System altered.

sql>

shutdown immediate

4.4 复制控制文件(OS命令)

[[email protected] ~]$ cp /home/oracle/app/oracle/oradata/orcl/control01.ctl /home/oracle/app/oracle/oradata/orcl/control03.ctl

4.5 启动数据并验证sql>

startup

sql>

show parameter control_files NAME TYPE VALUE --------------------- ----------- ------------------------------ control_files string /home/oracle/app/oracle/oradat a/orcl/control01.ctl,/home/or acle/app/oracle/oradata/orcl/c ontrol02.ctl,/home/oracle/app /oracle/oradata/orcl/control03 .ctl 参考资料: 《深入理解Oracle 12c数据库管理》