通过视图V$CONTROLFILE_RECORD_SECTION可以知道,控制文件里都记录了那些内容。
SQL> select type,records_used from v$controlfile_record_section;
TYPE RECORDS_USED
---------------------------- ------------
DATABASE 1
CKPT PROGRESS 0
REDO THREAD 1
REDO LOG 3
DATAFILE 4
FILENAME 8
TABLESPACE 5
TEMPORARY FILENAME 1
RMAN CONFIGURATION 0
LOG HISTORY 54
OFFLINE RANGE 0
TYPE RECORDS_USED
---------------------------- ------------
ARCHIVED LOG 0
BACKUP SET 0
BACKUP PIECE 0
BACKUP DATAFILE 0
BACKUP REDOLOG 0
DATAFILE COPY 0
BACKUP CORRUPTION 0
COPY CORRUPTION 0
DELETED OBJECT 0
PROXY COPY 0
BACKUP SPFILE 0
TYPE RECORDS_USED
---------------------------- ------------
DATABASE INCARNATION 2
FLASHBACK LOG 0
RECOVERY DESTINATION 1
INSTANCE SPACE RESERVATION 1
REMOVABLE RECOVERY FILES 0
RMAN STATUS 0
THREAD INSTANCE NAME MAPPING 8
MTTR 1
DATAFILE HISTORY 0
STANDBY DATABASE MATRIX 10
GUARANTEED RESTORE POINT 0
TYPE RECORDS_USED
---------------------------- ------------
RESTORE POINT 0
已选择34行。
控制文件里记录了数据库的SCN信息,当前日志号,归档日志信息,备份集信息,数据文件信息等等。而这些信息,很多都是需要更新的,更新的频率视情况而定。更新当前日志号的信息,是发生日志切换的时候需要做的,更新备份集的信息是在用RMAN备份的时候需要做的。一般来说,大体有一下几种常见的情况:
1)日志文件过小,或者数据库DML操作太多,导致日志切换太过频繁。日志的切换都是需要更新控制文件的,此时的表现就是LGWR进程等待control file parallel write事件。
2)MTTR设置的过小,导致检查点频繁发生。我们知道控制文件里是记录SCN信息的,检查点发生的时候,是需要更新SCN的,特别是10g以后的增量检查点,当发生增量检查点的时候,会3秒更新一次控制文件中记录的RBA信息。
3)NOLOGGING 导致的频繁更新数据文件。
对数据文件在nologging选项下执行修改工作时,为了修改unrecoverable scn需要更新控制文件。这时,服务器进程将等待crontrol file parallel write事件。
4)i/o系统的性能缓慢时
最好将控制文件放在独立的磁盘空间上。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22034023/viewspace-680923/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22034023/viewspace-680923/
本文介绍了Oracle控制文件中记录的关键信息,包括数据库SCN、当前日志号、归档日志和备份集等,并分析了几种可能导致控制文件频繁更新的情况。

被折叠的 条评论
为什么被折叠?



