oracle控制文件

一、控制文件概述

        控制文件记载了数据库的物理信息结构等重要的数据库信息,如数据文件和日志文件信息。控制文件时用于维护数据库完整性的重要文件。Oracle正是使用该文件在实例和数据库之间建立关联的。当发生实例故障时,控制文件记载的信息可用于实例的回复。

        在数据库的启动过程,当装载(mount)数据库是,Oracle会按照初始化参数文件中的control_files参数的设置查找并打开控制文件;而当打开(open)数据库时,Oracle会根据控制文件所记录的数据文件和重做日志信息,打开数据文件和重做日志文件。

       控制文件是一个很小的二进制文件,在启动Oracle数据库时需要从中读取信息,它的大小一般是在创建数据库时确定的。在对Oracle数据库进行操作过程中,会不断地将信息写会控制文件,所以在Oracle数据库打开的过程中,控制文件必须是可用的。

二、控制文件的内容

1、数据库名称或标志

2、数据库创建的时间信息

3、表空间的信息

4、数据文件和联机重做日志文件的名称、位置信息

5、联机重做日志文件的历史信息

6、发生归档时,归档日志文件的位置和状态

7、由RMAN记录的备份信息的位置和状态

8、发生日志切换时的日志序号

9、发生检查点(checkpoint)时的检查点信息

三、查看空间文件内容

1、trace备份控制文件

SQL> alter database backup controlfile to trace as '/home/oracle/ying';


Database altered.

2、创建重建控制文件脚本

[oracle@oracle ~]$ cat ying | grep -v ^- | grep -v ^$ > ying.sql

3、查看控制文件内容

[oracle@oracle ~]$ vim ying.sql

四、复用控制文件

保证控制文件的可用性的方法是通过保证控制文件的多个复本,多个控制文件副本互为镜像,内容总是保持完全一致。这样当一个控制文件发生损坏或者丢失时,仍然可以使用其它的控制文件副本启动控制文件,而不需要进行数据库恢复。然后,在适当时机增加新的控制文件,使控制文件仍然保持多个镜像。每个Oracle数据库至少应该包含两个或者两个以上的控制文件,控制文件的总数据不能超过8个。

为控制文件增加新的镜像

1、查看当前的控制文件

SQL> select name from v$controlfile;


NAME
--------------------------------------------------------------------------------
/home/oracle/oradata/orcl/control01.ctl
/home/oracle/flash_recovery_area/orcl/control02.ctl


2、在数据库启动状态下,修改服务器端初始化参数文件

SQL> alter system set control_files =
  2  '/home/oracle/oradata/orcl/control01.ctl',
  3  '/home/oracle/flash_recovery_area/orcl/control02.ctl',
  4  '/home/oracle/flash_recovery_area/orcl/control03.ctl' 
  5  scope=spfile;


System altered.

注意,如果出现ORA-32001: write to SPFILE requested but no SPFILE is in use错误,说明数据库不是用spfile来启动的,可用以下方式修改数据库的启动方式

(1)、用以下语句来确认是否是用spfile来启动的,为空表示用pfile启动

SQL> show parameter pfile


NAME     TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile     string               

(2)、使用以下语句来修改oracle来使用spfile启动

SQL> create spfile from pfile;


File created.

(3)、关闭数据再重新启动,数据库就可以自动用spfile启动

SQL> shutdown immediate;

SQL> startup;

SQL> show parameter spfile


NAME     TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile     string /home/oracle/product/dbs/spfil
eorcl.ora

3、关闭数据库,以确保复制后的控制文件与源控制文件内容完全相同

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

4、复制控制文件

可以使用当前的另个控制文件任意一个,复制为新的控制文件。

5、重新启动控制文件

SQL> startup
ORACLE instance started.


Total System Global Area 1590267904 bytes
Fixed Size    1336792 bytes
Variable Size  922749480 bytes
Database Buffers  654311424 bytes
Redo Buffers   11870208 bytes
Database mounted.
Database opened.

6、查看结果

SQL> select name from v$controlfile;


NAME
--------------------------------------------------------------------------------
/home/oracle/oradata/orcl/control01.ctl
/home/oracle/flash_recovery_area/orcl/control02.ctl
/home/oracle/flash_recovery_area/orcl/control03.ctl

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值