学习目标
- 解释控制文件的用法
- 列出控制文件的内容
- 多路复用和管理控制文件
- 使用Oracle Managed Files
- 获取控制文件信息
控制文件
- 控制文件是小的二进制文件
- 定义了物理数据库的当前状态
- 维护数据库的完整性
- 需要在数据库启动期间处于mount状态、操作链接到单个数据库
- 丢失可能需要恢复
- 初始大小由CREATE DATABASE决定
- 多重控制文件:Oracle数据库通常会配置多个控制文件,以提高数据库的可靠性和容错性。多个控制文件之间会保持同步,任何一个控制文件的变化都会被同步到其他控制文件中。
- 控制文件备份:定期备份控制文件是非常重要的,以防止控制文件丢失或损坏导致数据库无法启动。备份控制文件可以通过Oracle的备份工具或手动复制控制文件来实现。
- 控制文件重建:如果所有的控制文件都丢失或损坏,可以通过手动重建控制文件来恢复数据库。在这种情况下,需要使用CREATE CONTROLFILE语句来重新创建控制文件。
- 控制文件位置:控制文件通常存储在数据库服务器的特定位置,可以通过参数文件(init.ora或spfile)中的CONTROL_FILES参数指定控制文件的路径。
- 控制文件内容:控制文件包含了数据库的结构信息、日志序列号、数据库的创建时间等重要信息,是数据库的关键元数据文件。
数据库创建时的CREATE DATABASE语句中指定的控制文件大小参数决定的。在CREATE DATABASE语句中,可以通过指定参数 CONTROLFILE REUSE 或 CONTROLFILE SET DATABASE 来设置控制文件的初始大小。
控制文件的大小注意决定因素是为创建关联数据库的CREATE DATABASE语句中的MAXDATAFILES、MAXLOGFILES、MAXLOGMEMBERS、MAXLOGHISTORY、MAXINSTANCES参数设置的值。增加这些参数的值会增加关联数据库的控制文件大小。
控制文件包含的数据
- 数据库名称和标识符
- 创建数据库的时间戳
- 表空间名称
- 数据文件和在线重做日志文件的名称和位置
- 当前在线重做日志文件序列号
- 检查点的信息
- 撤销段的开始和结束
- 重做日志归档信息
- 备份信息
控制文件在生产环境下建议创建多个控制文件,放在不同物理磁盘。由于Linux挂载磁盘,所以实际上不同的磁盘可以在同一个目录下。
控制文件是一个相当小的文件(在极端情况下可以增长到64MB左右),其中包含Oracle需要的其他文件的目录。参数文件告诉实例控制文件在哪里,控制文件告诉实例数据库和在线重做日志文件在哪里。厂控制文件还告诉Oracle其他信息,例如发生的检查点信息、数据库名称(应该与DB_NAME参数匹配
)、数据库创建时的时间戳、归档重做日志历史记录(在某些情况下这会使控制文件变大)、RMAN信息等等。
控制文件应该通过硬件(RAID)或Oracle(当RAID或镜像不可用时)进行多路复用。它们应该存在多个副本,并且应该存储在单独的磁盘上,以避免在磁盘发生故障时丢失它们。丢失控制文件并不是致命的,它只是使恢复变得更加困难。
控制文件是开发人员可能永远不需要实际处理的东西。对于DBA来说,它们是数据库的重要组成部分,但是对于软件开发人员来说,它们并不是非常相关。
查看控制文件
复制控制文件还要保证复制的文件的权限,(6,6,0)
-
使用pfile增加控制文件:
-
打开pfile(参数文件):找到并打开Oracle数据库实例使用的pfile,通常是init.ora文件。
-
在pfile中添加控制文件路径:在pfile中添加一个新的控制文件路径,可以使用类似以下的语法:
CONTROL_FILES = ("/path/to/controlfile1", "/path/to/controlfile2", "/path/to/new_controlfile");
-
保存并关闭pfile。
-
重启数据库实例:使用SQL*Plus连接到数据库,执行以下命令重启数据库实例:
SHUTDOWN IMMEDIATE; STARTUP;
-
-
使用spfile增加控制文件:
-
将pfile转换为spfile:如果数据库实例使用的是pfile,可以将其转换为spfile,以便更灵活地管理参数。
CREATE SPFILE FROM PFILE;
-
修改spfile中的控制文件路径:使用ALTER SYSTEM命令修改spfile中的控制文件路径,例如:
ALTER SYSTEM SET CONTROL_FILES = '/path/to/controlfile1','/path/to/controlfile2','/path/to/new_controlfile' SCOPE=SPFILE;
-
重启数据库实例:使用SQL*Plus连接到数据库,执行以下命令重启数据库实例:
SHUTDOWN IMMEDIATE; STARTUP;
-
控制文件的使用
有关控制文件状态和位置的信息可以通过查询以下视图来检索
- V$CONTROLFILE:列出与实例关联的所有控制文件的名
称和状态 - vparameter:列出所有参数的状态和位置
- V$CONTROLFILE_RECORD_SECTION:提供关于控制文
件记录节的信息 - SHOW PARAMETER CONTROL_FILES:列出控制文件的名
称、状态和位置 可以用show parameter cont 简写
高级课题
创建一个新的控制文件
为控制文件备份