Oracle维护控制文件

学习目标

  • 解释控制文件的用法
  • 列出控制文件的内容
  • 多路复用和管理控制文件
  • 使用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)

  1. 使用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;
  2. 使用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 简写

高级课题

创建一个新的控制文件

为控制文件备份

相关推荐
不见长安在8 分钟前
mysql线上主从集群设置
数据库·mysql
tiging10 分钟前
mysql 如何让事件执行
数据库·mysql
siriuuus19 分钟前
MySQL 数据备份
数据库·mysql·备份
姚远Oracle ACE19 分钟前
Oracle AWR 报告中的SQL来自哪儿?
数据库·sql·oracle
熊文豪22 分钟前
KingbaseES数据库性能调优工具全面解析
数据库·kingbasees·金仓数据库·电科金仓
冠希陈、37 分钟前
PHP7.4.33 安装sqlsrv扩展
数据库
光影341543 分钟前
专利撰写与申请核心要点简报
前端·数据库·php
心灵宝贝1 小时前
申威ky10架构安装MongoDB 4.0.1(rpm包:mongodb-4.0.1-8.ky10.sw_64.rpm)详细步骤
数据库·mongodb·架构
一 乐1 小时前
口腔健康系统|口腔医疗|基于java和小程序的口腔健康系统小程序设计与实现(源码+数据库+文档)
java·数据库·vue.js·小程序·毕设
vivo互联网技术1 小时前
Redis key 消失之谜
数据库·redis·内存淘汰策略·redis抓包分析·机制分析