-- 参数 CONTROL_FILE_RECORD_KEEP_TIME MAXLOGHISOTRY

    参数control_file_record_keep_time是一位于控制文件中比重要的参数之一。它决定了控制文件里可重使用的记录所能保存的

最小天新的记录需要添加到可重用记录的空间时且最老的记录在可重用记录还没有老化,即实际保留的天未超过这

个参数规定的天控制文件中可重用记录部分的空间将被自动扩展,此控制文件尺寸将会变大。


一、control_file_record_keep_time信息   

    1.参数的描述信息


        Property              Description

        -----------------------------------------------------------

        Parameter type        Integer

        Default value        7(days)         -- 缺省

        Modifiable            ALTER SYSTEM    -- 使用ALTER SYSTEM 修改

        Range of values        0 to 365(days)  -- 的范 围从 0-365

        Basic                No

        ----------------------------------------------------------   

    2.官方定


            CONTROL_FILE_RECORD_KEEP_TIME specifies the minimum number of days before a reusable record in the control file

        can be reused. In the event a new record needs to be added to a reusable section and the oldest record has not

        aged enough, the record section expands. If this parameter is set to 0, then reusable sections never expand,

        and records are reused as needed.


        Note:

            This parameter applies only to records in the control file that are circularly reusable (such as archive log

             records and various backup records). It does not apply to records such as datafile, tablespace, and redo

             thread records, which are never reused unless the corresponding object is dropped from the tablespace.


    3.可重用的模


         ARCHIVED LOG                      BACKUP CORRUPTION

        BACKUP DATAFILE                   BACKUP PIECE

        BACKUP REDO LOG                   BACKUP SET

        COPY CORRUPTION                   DATAFILE COPY

        DELETED OBJECT                    LOGHISTORY

        OFFLINE RANGE                    


二、MAXLOGHISOTRY


        这个参数,咋一看,貌似眼熟的不得了。没错,在建控制文件的候被使用。

        印象?里: Oracle 控制文件 ( CONTROLFILE )


        字面上的意思分析即可知,该参数用于控制日志记录。即归档日志的记录数应在控制文件MAXLOGHISOTRY参数的范

    ,或者v$log_history视图里所有归档日志文件总数小于等于MAXLOGHISOTRY


        一旦归档日志超过这个最大目,且参数control_file_record_keep_time定的备份的保留策略之外,即可以被重用或老化

        则从头覆盖以前的归档志文件。也即是v$log_history里的相应记录会除。


        上,在初始化控制文件的候,MAXLOGHISOTRY值来决保存归档日志记录信息分配多大的空该值设定之后,

    其分配的空间将不再动态扩展。我知道RMAN备份,日志归档时的信息都在控制文件或恢之中。然已分配存

    不能自动扩展,那新的归档信息如何追加呢?即由参数control_file_record_keep_time中保留时间来确定是否将过时的信息覆盖。


        注:v$log_historyOracle 8i后由v$archived_log 代替。maxloghistory不限制能够插入到 v$archived_log中的记录数


        SQL> select * from v$version;


        BANNER

        ----------------------------------------------------------------

         Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi

        PL/SQL Release 10.2.0.4.0 - Production

        CORE    10.2.0.4.0      Production

        TNS for Solaris: Version 10.2.0.4.0 - Production

        NLSRTL Version 10.2.0.4.0 - Production   


        -- 看几 最大的 MAX 置的

        SQL> select TYPE,RECORDS_TOTAL from v$controlfile_record_section  

          2  where type in('REDO LOG','DATAFILE','CKPT PROG%','REDO THREAD','ARCHIVED LOG');


        TYPE                         RECORDS_TOTAL

        ---------------------------- -------------

        REDO THREAD                              8     --> MAXINSTANCES

        REDO LOG                                32     --> MAXLOGFILES 

        DATAFILE                               968     --> MAXDATAFILES

        ARCHIVED LOG                         83536     --> MAXLOGHISTORY


        -- ARCHIVED LOG 的明 信息

        SQL> select * from v$controlfile_record_section where type like '%ARCHIVED LOG%';


        TYPE                         RECORD_SIZE RECORDS_TOTAL RECORDS_USED FIRST_INDEX LAST_INDEX LAST_RECID

        ---------------------------- ----------- ------------- ------------ ----------- ---------- ----------

        ARCHIVED LOG                         584         83536        83536       52748      52747     679267


        上面的查询中可以看到MAXLOGHISTORY分配的空大小以及记录总数,已是使用的记录总数


        视图v$archived_log记录归档日志

        SQL> select count(*) from v$archived_log;


          COUNT(*)

        ----------

             83536


        SQL> select min(FIRST_TIME), min(COMPLETION_TIME), max(FIRST_TIME), max(COMPLETION_TIME) from

          2  v$archived_log;


        MIN(FIRST_TIME)     MIN(COMPLETION_TIME MAX(FIRST_TIME)     MAX(COMPLETION_TIME

        ------------------- ------------------- ------------------- -------------------

        2011-04-24 12:59:01 2011-04-24 13:02:00 2011-06-05 23:00:49 2011-06-06 03:19:21


        在使用RMAN备份备份信息有使用恢的情下,即使用控制文件信息。那control_file_record_keep_time

    定的值应当轻得大于用所需备份保留的时间(基于时间的保留参数)


        假定使用控制文件保存备份信息,每周行一次全,且备份保留恢窗口7天,议将control_file_record_keep_time

    1014


三、Log History超出MAXLOGHISTORY 的情形

        有些情下,Log History超出MAXLOGHISTORY 的情形,什Log History超出MAXLOGHISTORY ?那不是动扩?是的,正常

    应当扩展控制文件。Log History大于MAXLOGHISTORY有自控制展的情形是存在的。况则是空分配所引起的。


        假定有下面的情形,建控制文件指定MAXLOGHISTORY值为100,而Log History保留了227条记录Why ?


        建控制文件会为部分分配相的大小和空。而每部分的空分配根据Oracle而不是依据当时设定的记录数

    在控制文件中,log history单条记录大小通常是固定的,36。因此,100个记录MAXLOGHISTORY)需要3600。控制文

    的大小与数的大小一,同db_block_size控制。因此特定目的块将为Log History部分分配。例如,如果

    DB_BLOCK_SIZE8192,那个块就足了。在这个块中,我8192/36,大227个记录。如果DB_BLOCK_SIZE 2048,那么将

2快,但是只113个记录