标签:
控制文件是Oracle数据库中一种非常重要的文件。
在Oracle数据库中主要包括:数据文件、控制文件和重做日志文件。
在数据文件中存储数据库中的数据,包括各种数据库对象及其数据。
在重做日志文件中存放用户执行DML及DDL命令的记录。
在控制文件中存放数据库的结构信息。
具体来说,在控制文件中包含以下重要信息:
·数据库的名称。
·数据文件和重做日志文件的位置和名称。
.当前日志序列号。
·检查点信息。
·表空间的名称。
•RMAN 的备份与恢复信息。
控制文件是一个二进制文件,用户不能修改与查看这个文件的内容。
数据库服务器在启动时需要读取这个文件的内容,以便打开数据库。
为了使大家理解控制文件的重要性,首先介绍数据库服务器的启动过程。
这个过程分为以下三个阶段。
第一个阶段,启动到NOMOUNT状态,数据库服务器根据参数文件的内容在内存中建立SGA ,并启动DBWR 、LGWR等后台进程。
在这一阶段,实例将被启动。
第二阶段,启动到MOUNT状态。
数据库服务器根据参数文件中记录的控制文件信息,打开控制文件。
第三阶段,启动到OPEN状态,数据库服务器根据控制文件中记录的信息,打开数据文件和重做日志文件,这时数据库服务器可正常运行并处理用户的请求。
由此可见,控制文件是实例和数据库之间的枢纽,如果控制文件丢失或损坏,数据库服务器将无法正常启动。
正因为控制文件具有特殊的重要性,在创建数据库之后,或者在对数据库的结构进行修改之后,都应该及时备份控制文件。
控制文件的规划
因为控制文件具有特殊的重要性,所以对控制文件的数目和存放位置必须进行详细的规划。
控制文件的数目和位置在创建数据库时就已经确定,在数据库服务器运行的过程中也可以根据需要进行修改。
控制文件的镜像
在一个数据库中至少需要一个控制文件。
如果控制文件丢失或损坏,将导致数据库服务器无法启动。
为了防止这种情况,在数据库中需要创建多个控制文件,这些控制文件互为镜像,内容完全相同。
控制文件的镜像是通过初始化参数control_files实现的。
例如,通过这个参数指定三个控制文件:
control_files=(‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL‘,
‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL‘,
‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL‘
);
当数据库服务器启动时,只需要读取第一个控制文件的内容,而当数据库的结构发生变化时,被修改的信息必须同时写入所有的控制文件。
如果其中二个控制文件不可用,那么数据库服务器将无法正常运行。
在这种情况下,数据库管理员需要修改初始化参数control_files 的值,删除其中不可用的控制文件,然后重新启动数据库服务器。
假设控制文件control01.ctl损坏或丢失,初始化参数control_files可修改为:
alter system set control_files=‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL‘, ‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL‘ scope=spfile;
控制文件的存放位置
为了保证控制文件的安全,在创建控制文件时一个基本的要求是对它进行镜像。
但如果把所有控制文件存放在同一个磁盘上,危险仍然潜在。
如果磁盘损坏,那么所有的控制文件都将丢失。
因此,控制文件应该分别存放在不同的磁盘上(注意,不是同一块硬盘的不同磁盘分区)。
控制文件在多个磁盘上的镜像情况如图所示。
例如可将前面使用的二个控制文件分别存放在二个磁盘上,然后修改初始化参数CONTROL_FILES 。
ALTER SYSTEM SET control_files=‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL‘,
‘E:\CONTROL03.CTL‘ SCOPE=spfile;
注:因为只有一个磁盘,就是用不同分区代替不同磁盘,实际上应该放在不同磁盘上。
如果要改变控制文件的名称或位置,首先应该关闭数据库服务器,然后在操作系统中将控制文件复制到指定的位置,如果必要,可同时修改文件名。
然后修改初始化参数control_fies的值,使其指向修改后的控制文件,最后重新启动数据库服务器。
现在的数据库一般都存储在磁盘阵列上,这种存储设备本来就通过冗余机制保证文件的安全,这时候把所有的控制文件存放在同一个存储位置下即可。
需要注意的是,在这种情况下,多个控制文件仍然是有必要的。
如何重新创建控制文件
控制文件是在创建数据库时自动创建的,在数据库服务器运行的过程中,除了镜像控制文
件外,重新创建控制文件的机会不是很多。但是一旦有这样的要求,就意味着对数据库要进行
一次重要的操作。一般说来,重新创建控制文件的时机有以下几种情况:
·控制文件全部损坏,并且没有可用的备份。
·修改数据库的名称。
·修改某些永久性参数。
当然,重新创建控制文件并不是一件轻松的事情。如果没有周密的计划,可能会造成更大
的损失。在创建控制文件之前,必须掌握所有数据文件和重做日志文件的名称、位置和大小等
信息,在必要时还需要掌握数据库所使用的字符集。为了防止对数据文件和重做日志文件造成
不必要的损坏,尽可能对这些文件进行→次备份。
标签:
原文地址:http://www.cnblogs.com/jy627625/p/5580348.html