size of control file

一、控制文件存储内容总结

  • 数据库信息:库名、创建时间等
  • 实例信息
  • 物理结构信息:redo信息、表空间信息、文件信息
  • RMAN信息
  • 归档信息
  • 备份与恢复的信息(RMAN)
  • object 删除信息
  • 检查点信息
  • 回滚段的信息

二、控制文件的存储形式

ORACLE采用每个块都生成一个镜像块,所以我们看到的控制文件其实真正有效的数据只占一半,目的是为了来避免块分裂
块分裂:也就是块状态的不一致性,它是因为数据库是以数据库块为单位读的,而操作系统是以操作系统块读的,这样就可能会在数据库读一致时,导致状态不一致。
可以通过以下语句进行验证
    
    
  1. SELECT SUM(RECORD_SIZE * RECORDS_TOTAL) / 1024 / 1024 USE_M
  2.   FROM V$CONTROLFILE_RECORD_SECTION;
  3. SELECT BLOCK_SIZE * FILE_SIZE_BLKS / 1024 / 1024 FILE_SIZE_M
  4.   FROM V$CONTROLFILE;  
控制文件将内部数据记录分为两类:循环重用记录 和 非循环重用记录。
  1. 循环重用记录包含可以从控制文件中删除的信息。如: RMAN 备份记录、归档日志历史信息等,循环重用记录可以被删除,并且不会影响产品数据库。
  2. 非循环重用记录是那些不能被删除的记录。 非循环重用记录包括:数据文件列表、日志文件列表等。

三、写控制文件触发条件

  1. 每次在线日志文件、数据文件的新增、修改、删除,归档等都会更新控制文件
  2. 热备份的时候
  3. 触发系统事件时:删除object、日志切换等
  4. 增量检查点将每三秒会唤醒DBWR,并将当前数据库的一致性信息更新到控制文件,包括实例恢复的起点REDO地址(RBA TARGET),或称LOWER RBA。(增量检查点不更新数据文件头部) 

四、清理控制文件中记录

我们可以通过重建控制文件或者设置control_file_record_keep_time=0来重用循环重用记录
  1. 手工清理v$archived_log记录
    Removing entries in v$archived_log referencing a particluar DEST_ID (文档 ID 845361.1)
    • 清理:
              
              
      1. EXECUTE dbms_backup_restore.resetCfileSection(11);
    • 验证:
              
              
      1. SELECT RESETLOGS_ID, SEQUENCE# FROMV$ARCHIVED_LOG ORDER BY 1;
  2. 手工清理v$rman_status 记录
    • 清理:
              
              
      1. EXECUTE dbms_backup_restore.resetCfileSection(28);
    • 验证:
              
              
      1. SELECT COUNT(*) FROM V$RMAN_STATUS;
  3. 其它
    清理其它内容,我们可以参考resetCfileSection函数中ID号的说明
    • 通过查看dbms_backup_restore包的创建代码查看
      $ORACLE_HOME/rdbms/admin/dbmsbkrs.sql
    • 通过语句查看
              
              
      1. SELECT ROWNUM - 1TYPE FROM V$CONTROLFILE_RECORD_SECTION;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值