数据库控制文件高达100多G

来源:这里教程网 时间:2026-03-03 16:34:42 作者:
一、问题
同事在搭建备库,恢复控制文件时,发现控制文件达到100多G。
ASMCMD> ls -sh +AAA/BB/CONTROLFILE/current.366.1067517507
Block_Size Blocks Bytes Space Name
16K 8080777 123.3G 123.3G current.366.1067517507
二、问题分析
(1)既然控制文件达到100多G,那么确定下控制文件记录了什么内容,占了多大的空间。
set linesize 200 pagesize 200;
COLUMN type FORMAT a30 HEADING 'Record Type'
COLUMN record_size FORMAT 999999 HEADING 'Record|Size'
COLUMN records_used FORMAT 999999 HEADING 'Records|Used'
COLUMN first_index FORMAT 9999999 HEADING 'First|Index'
COLUMN last_index FORMAT 9999999 HEADING 'Last|Index'
COLUMN last_recid FORMAT 999999 HEADING 'Last|Record|ID'
SELECT type,
record_size,
records_total,
records_used,
first_index,
last_index,
last_recid
FROM
v$controlfile_record_section;

虽然控制文件记录的内容没有太多,但是LOG HISTORY、ARCHIVED LOG、DELETED OBJECT的RECORDS_TOTAL为1亿多非常可疑。 (2)通过trace生产的控制文件,发现了如下图可疑的值 (3)在自己的测试库,用这个值手工测试了下,发现控制文件确实可以达到上100G。

CREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS FORCE LOGGING ARCHIVELOG
    MAXLOGFILES 100
    MAXLOGMEMBERS 3
    MAXDATAFILES 65534
    MAXINSTANCES 8
    MAXLOGHISTORY 100000000
LOGFILE
  GROUP 1 '/u01/app/oracle/oradata/orcl/redo01.log'  SIZE 200M BLOCKSIZE 512,
  GROUP 2 '/u01/app/oracle/oradata/orcl/redo02.log'  SIZE 200M BLOCKSIZE 512,
  GROUP 3 '/u01/app/oracle/oradata/orcl/redo03.log'  SIZE 200M BLOCKSIZE 512
DATAFILE
  '/u01/app/oracle/oradata/orcl/system01.dbf',
  '/u01/app/oracle/oradata/orcl/sysaux01.dbf',
  '/u01/app/oracle/oradata/orcl/undotbs01.dbf',
  '/u01/app/oracle/oradata/orcl/pdbseed/system01.dbf',
  '/u01/app/oracle/oradata/orcl/pdbseed/sysaux01.dbf',
  '/u01/app/oracle/oradata/orcl/users01.dbf',
  '/u01/app/oracle/oradata/orcl/pdbseed/undotbs01.dbf',
  '/u01/app/oracle/oradata/orcl/orclpdb/system01.dbf',
  '/u01/app/oracle/oradata/orcl/orclpdb/sysaux01.dbf',
  '/u01/app/oracle/oradata/orcl/orclpdb/undotbs01.dbf',
  '/u01/app/oracle/oradata/orcl/orclpdb/users01.dbf',
  '/u01/app/oracle/oradata/orcl/orclpdb/pmis_space.dbf',
  '/u01/app/oracle/oradata/orcl/orclpdb/pmis_index.dbf',
  '/u01/app/oracle/oradata/orcl/orclpdb/soe.dbf'
CHARACTER SET ZHS16GBK;

(4)LOG HISTORY、ARCHIVED LOG、DELETED OBJECT的值都差不多大,是不是都依赖于MAXLOGHISTORY这个值呢?手工设置这个值为300万,让数据库成功创建控制文件。 LOG HISTORY、ARCHIVED LOG、DELETED OBJECT确实是依赖于 MAXLOGHISTORY这个值。

三、问题解决
重建控制文件

相关推荐