Oracle db 控制文件笔记

来源:互联网 发布:使用vmware安装linux 编辑:程序博客网 时间:2024/06/05 06:47
1.Oracle数据库控制文件
控制文件中记载了数据库的物理结构等重要的数据库信息,如数据文件和日志文件信息。控制文件是用于维护数据库完整性的重要文件。Oracle 正是使用该文件在实例和数据库

之间建立关联的。当发生实例故障时,控制文件记载的信息可用于实例的恢复。


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

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


3.使用相关视图查看控制文件的相关信息
V$CONTROLFILE --列出实例中所有控制文件的名字及状态信息
V$PARAMETER --列出所有参数的位置及状态信息
V$CONTROLFILE_RECORD_SECTION --列出控制文件中记录的部分信息
SHOW PARAMETER CONTROL_FILES --列出控制文件的名字、状态、位置等

控制文件中记载了数据文件、重做日志名称和位置、日志序列号、检查点和日志历史信息,以及RMAN(一种备份和恢复工具)备份信息。当Oracle 服务器出现实例失败或介质失败时,通过控制文件所记载的日志和检查点信息,Oracle 可以确定执行恢复所需要的日志文件。从Oracle8 版本开始,Oracle 提供了使用RMAN 执行备份与恢复的方法,RMAN 可
以简化用户所要执行的备份与恢复操作,并且其备份信息会被存放到控制文件中。(RMAN(备份信息放入控制文件))

控制文件一旦丢失或损坏,就会导致整个数据库不可用。所以保证控制文件的可用性,对Oracle 数据库来说是至关重要的。例如,当使用RMAN 进行备份时,其备份信息会记录到控制文件中,假定控制文件出现丢失或损坏,那么因为备份信息丢失可能会导致其备份文件不能使用。对于Oracle 数据库,可以采用复用控制文件的方法来达到保护控制文件的目的。

前面已经给大家介绍过,在控制文件中要记载数据文件、重做日志、日志历史等信息。
• 数据库名称或标识
• 数据库创建的时间信息
• 表空间的信息
• 数据文件和联机重做日志文件的名称、位置信息
• 联机重做日志文件的历史信息
• 发生归档时,归档日志文件的位置和状态
• 由RMAN 记录的备份信息的位置和状态
• 发生日志切换时的日志序号(log sequence number)

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


4.控制文件分保存的信息分为可变的和不可变的
1.可变部分

例如RMAN 备份信息。到了control_file_record_keep_time 之后,就会被覆盖。
参数control_file_record_keep_time 是一个位于控制文件中比较重要的参数。它决定了
控制文件里可重复使用的记录所能保存的最小天数。当一条新的记录需要添加到可重用记录
的空间时,并且最老的记录在可重用记录空间中还没有老化,即实际保留的天数未超过这
个参数规定的天数,则控制文件中可重用记录部分的空间将被自动扩展,此时控制文件尺寸
将会变大。

control_file_record_keep_time 定义信息
1) 参数的描述信息
Property Description
-----------------------------------------------------------
Parameter type Integer
Default value 7 (days) --缺省值
Modifiable ALTER SYSTEM --使用ALTER SYSTEM 修改
Range of values 0 to 365 (days) --其值的范围从0-365
Basic No
----------------------------------------------------------

CONTROL_FILE_RECORD_KEEP_TIME 指定一个可重用的记录在控制文件中最少可
重复使用的天数。
如果由于需要,一个新的记录被添加到可重复使用的部分,最旧的记录还未达到指定的
值,记录部分扩展。如果该参数被设置为0,然后可重复使用的部分永远不会扩大,记录根
据需要被重用。

2) 可重用的模块
ARCHIVED LOG BACKUP CORRUPTION
BACKUP DATAFILE BACKUP PIECE
BACKUP REDO LOG BACKUP SET
COPY CORRUPTION DATAFILE COPY
DELETED OBJECT LOGHISTORY
OFFLINE RANGE

2.不可变部分(控制文件永久参数)
关于数据库的那些信息,文件位置,大小,日志位置,数据库名,等等是不会丢失的!
控制文件中会为每个数据文件预留180 字节的空间,该空间将用于记载数据文件的名
称、尺寸、状态以及检查点等信息,假定数据库最多可以包含1000 个数据文件,那么控制
文件就要为数据文件分配大约180KB 的空间。在执行CREATE DATABASE 命令建立数据
库时,通过设置永久参数可以设定数据库可以包含的最大数据文件以及重做日志个数等,这
些永久参数的设置会影响控制文件的尺寸。这些参数是:
• MAXDATAFILES:用于指定控制文件可记载的最大数据文件个数。
• MAXLOGFILES:用于指定数据库中重做日志组的最大个数。
• MAXLOGMEMBERS:用于指定每个日志组的最大日志成员个数。
• MAXLOGHISTORY:用于指定控制文件可记载日志历史的最大个数。
• MAXINSTANCES:用于指定可以同时访问数据库的最大实例个数。


5.控制文件操作
1.复用控制文件

1) 保证控制文件的可用性
保证控制文件的可用性的方法是通过保留控制文件的多个复本,多个控制文件副本互为
镜像,内容总是保持完全一致。这样当一个控制文件发生损坏或丢失,仍然可以使用其它的
控制文件副本启动数据库,而不需要进行数据库恢复。然后,在适当时机增加新的控制文件,
使控制文件仍然保持有多个镜像。每个Oracle 数据库至少应该包含两个或两个以上的控制
文件,控制文件的总数不能超过8 个。
应该合理地放置控制文件,在设计数据库时,尽可能将控制文件分布到不同的磁盘上,
以避免磁盘损坏导致所有控制文件丢失。另外,在修改了Oracle 数据库的物理结构后,最
好对控制文件进行一次备份。

2) 复用控制文件的方法
控制文件的复用是如何实现的呢?又怎样才能增加新的控制文件镜像呢?+

方法很简单,停止数据库后,我们可以首先查看初始化参数文件,找到参数control_files。为了增加新的控制文件镜像,可以先用操作系统命令复制一个新的控制文件,然后修改该参数的设置。注意:在数据库打开时,控制文件是动态的,不能在数据库运行过程中复制控制文件,只有停止数据库后控制文件才
是静止和一致的。否则增加镜像的过程就会失败。

注意:
1.如启动时出现版本号不一致的问题

ORA-00214: control file '/u01/app/oracle/oradata/orcl/control01.ctl' version 1051 inconsistent with file '/u01/app/oracle/oradata/orcl/control02.ctl' version 1049 
解决办法,用版本号高的控制文件覆盖版本号低的控制文件
控制文件部分丢失,原本有三个控制文件,丢失一个,处理办法: 
  1.将存在的控制文件复制到目的路径并更改控制文件名字为正确的控制文件名称 


  2.修改控制文件参数将丢失的控制文件去掉
2.控制文件的备份
  将二进制的控制文件备份文本文件的控制文件
   1、alter database backup controlfile to trace;
   类似使用cp命令对控制文件进行的备份
   2、alter database backup controlfile to '';


3.控制文件全部丢失,利用控制文件的重建脚本,重建控制文件
1、将控制文件备份到跟踪文件,获得控制文件的重建脚本
alter database backup controlfile to trace as '/home/oracle/ctl';
2、创建重建控制文件脚本
cat ctl|grep -v ^-|grep -v ^$>c.sql
vi c.sql
3、删除所有控制文件
4、nomount状态
5、重建控制文件
@/home/oracle/c.sql
6、开启数据库


6.备份与重建控制文件
1.控制文件重建的意义
当控制文件全部丢失或损坏,但数据文件和重做日志没有丢失和损坏。如果有一份在用
数据文件、重做日志以及控制文件清单,还是可以尝试使用CREATE CONTROLFILE 命令
来重建控制文件。另外,如果要改变数据库名称或永久参数(MAX_DATAFILE 等)的话,也
只能重新建立控制文件。
但是,必须要注意,建立控制文件是一项非常危险的工作,如果建立控制文件不成功,
可能会潜在地损坏数据文件和重做日志。所以在建立控制文件之前,必须首先备份所有数据
文件和重做日志,避免损坏用户的数据库。另外,建立控制文件要求用户必须要具有
SYSDBA 系统权限。


7.小结
控制文件是用于维护数据库完整性的重要文件,控制文件中记录了日志文件和数据文件
以及检查点等信息,控制文件的位置由初始化参数文件指明,控制文件在装载数据库阶段打
开。为了保证控制文件的可用性,通常需要通过移动、增加或删除镜像文件的方法来对其进
行维护。

0 0