您好,欢迎访问三七文档
Oracle中control_file_record_keep_time参数的解释Oracle基于RMAN的备份方式,可分为以catalog和nocatalog的两种方式进行备份管理。其中,catalog的方式需要一个catalog目录数据库,这个数据库一般运行在另外一台服务器上,这种方式可以用于用户有多个Oracle数据库的环境,同时对数据库的备份恢复信息也可以长久的保存,也就是RMAN把对数据库A的备份恢复记录保留在catalog目录数据库中。而基于nocatalog的备份管理方式,是将RMAN的备份信息放在控制文件中,由于控制文件的大小不能无限增大,所以在控制文件中只能保留一段时间的备份与恢复信息,而这个时间的控制,由一个参数为参考依据,这个参数就是control_file_record_keep_time,通过在sqlplus中showparametercontrol_file_record_keep_time可以查到这个参数的值,默认为7天。SQLshowparametercontrol_file_record_keep_timeNAMETYPEVALUE-------------------------------------------------------------------------control_file_record_keep_timeinteger7metalink中对此参数的解释为:CONTROL_FILE_RECORD_KEEP_TIMEspecifiestheminimumnumberofdaysbeforeareusablerecordinthecontrolfilecanbereused.Intheeventanewrecordneedstobeaddedtoareusablesectionandtheoldestrecordhasnotagedenough,therecordsectionexpands.Ifthisparameterissetto0,thenreusablesectionsneverexpand,andrecordsarereusedasneededNote:Thisparameterappliesonlytorecordsinthecontrolfilethatarecircularlyreusable(suchasarchivelogrecordsandvariousbackuprecords).Itdoesnotapplytorecordssuchasdatafile,tablespace,andredothreadrecords,whichareneverreusedunlessthecorrespondingobjectisdroppedfromthetablespace.这段话的意思是说:control_file_record_keep_time表示控制文件里可重复使用的记录所能保存的最小天数。如果新增加一条记录到控制文件可以重复使用的部分,这时最老的记录尚没有超出最小保留天数,那么记录将控制文件的这一部分将扩展。如果将该参数设置为0,那么控制文件可以重复使用的部分将永远不会扩展。注意,这个参数只应用于控制文件中可循环利用的部分,如归档日志文件,各种备份记录。不应用于诸如数据文件,表空间,重做线程等,这些内容只有当其从对应的表空间中删除后才能重用。可重用的部分包括如下几种类型(可以通过查询视图$contofile_record_section得到):ARCHIVEDLOGBACKUPCORRUPTIONBACKUPDATAFILEBACKUPPIECEBACKUPREDOLOGBACKUPSETCOPYCORRUPTIONDATAFILECOPYDELETEDOBJECTLOGHISTORYOFFLINERANGE而MAXLOGHISTORY参数,其意义在于限制控制文件里和通过v$log_history视图的归档日志文件数目。归档日志最多维持在MAXLOGHISTORY所设置的数目。如果超过这个数目,将从头覆盖以前的归档日志文件项。最终,当归档日志数目超过MAXLOGHISTORY所设定的值时,v$log_history中的所有项都将被覆盖。当创建控制文件时,MAXLOGHISTORY的决定为归档日志信息分配多大的空间。MAXLOGHISTORY并不动态增加。当日志归档时,该归档文件的信息将被更新到控制文件。只有在如下情况下,才覆盖原来的项:控制文件中该区域所有项都被使用并且有一项超出了control_file_record_keep_time设定的时间当使用RMAN目录时,control_file_record_keep_time保存的时间不能比同步目录的时间间隔短。换句话说,如果每天备份一次,那么controlfile_record_keep_time不能少于1。如果不使用RMAN目录,应该设置control_file_record_keep_time为你需要往后恢复的最大天数。在Oracle7中,将新归档日志记录记录到v$log_histroy中。当达到MAXLOGHISTORY的极限时,插入新记录,同时覆盖最老的记录。在8.0版本后,v$log_history视图被v$archived_log取代了,并且maxloghistory不限制能够插入到v$archived_log中的记录数。有人问:为什么我在创建控制文件时指定的MAXLOGHISTORY没有起作用?例如,创建控制文件时,设定MAXLOGHISTORY参数为100,控制文件的LogHistory区域将创建227个记录。这是一个可预料到的结果。创建控制文件时,每个部分分配规定的大小和空间。每个部分的空间分配不是依据记录数,而是根据Oracle的块。控制文件中,每个部分的单条记录大小是固定的,都是36字节。因此,100个记录(MAXLOGHISTORY)需要3600个字节。依据Oracle的块大小————控制文件中设置的db_lock_size,控制文件块大小也是DB_BLOCK_SIZE参数。特定数目的块将为LogHistory部分分配。例如,如果DB_BLOCK_SIZE为8192,那么一个块就足够了。在这个块中,我们有8192/36,大约227个记录。如果DB_BLOCK_SIZE为2048,那么将分配2个快,但是只创建113个记录。MAXLOGHISTORY的最大值可以设置为65535。不得超过这个数。
本文标题:Oracle 中control_file_record_keep_time参数的解释
链接地址:https://www.777doc.com/doc-3605844 .html