这篇文章主要讲解了“Oracle归档日志管理的方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Oracle归档日志管理的方法有哪些”吧!

一般情况下,数据库安装时选择的是默认NOARCHIVELOG模式。如果要开启ARCHIVELOG模式,则需要为归档日志路径设置初始化参数。

归档日志路径可以配置一个也可以配置多个。路径可以是本地路径,如本地文件系统,ASM磁盘组;也可以是远程路径,如备份数据库。设置多个归档日志路径,可以对归档日志做冗余,即使有一个目标盘损坏,也可以保证归档日志是可用的。

在配置参数时,归档日志的路径可以动态修改,在下一次日志切换的时候生效。

这里给出3种常用的归档路径的设置方案:单一归档路径方案、两路归档路径方案和多路归档路径的方案。

方案1:单一归档路径

如果只设置单一的归档目录,默认使用db_recovery_file_dest参数,使用Fast Recovery Area存放归档数据;也可手工配置log_archive_dest初始化参数,可以配置为本地文件系统,ASM磁盘组。使用log_archive_dest_n参数的方法在第三种方案进行讨论。

具体操作如下:

--如果使用fastrecoveryarea存放归档日志,需要注意该区域有大小限制,建议将大小调大SYS@cams>showparameterdb_recovery_file_destNAMETYPEVALUE-----------------------------------------------------------------------------db_recovery_file_deststring/u01/app/oracle/fast_recovery_areadb_recovery_file_dest_sizebiginteger4182MSYS@cams>altersystemsetdb_recovery_file_dest_size=10G;Systemaltered.SYS@cams>showparameterdb_recovery_file_destNAMETYPEVALUE-----------------------------------------------------------------------------db_recovery_file_deststring/u01/app/oracle/fast_recovery_areadb_recovery_file_dest_sizebiginteger10G

--如果使用本地路径存放归档日志,需要将db_recovery_file_dest参数置空,然后设置log_archive_dest参数。这里给出的是本地文件系统例子,读者可自行测试ASM磁盘组。SYS@cams>altersystemsetdb_recovery_file_dest='';Systemaltered.SYS@cams>altersystemsetlog_archive_dest='/u01/app/oracle/archive';Systemaltered.

需要将LOG_ARCHIVE_DEST_n和DB_RECOVERY_FILE_DEST参数置空,以免出现如下问题:

SYS@cams>altersystemsetlog_archive_dest='LOCATION=USE_DB_RECOVERY_FILE_DEST';altersystemsetlog_archive_dest='LOCATION=USE_DB_RECOVERY_FILE_DEST'*ERRORatline1:ORA-02097:parametercannotbemodifiedbecausespecifiedvalueisinvalidORA-16018:cannotuseLOG_ARCHIVE_DESTwithLOG_ARCHIVE_DEST_norDB_RECOVERY_FILE_DEST

此时,可以看到trace日志的变化,LOG_ARCHIVE_DEST_1的默认值自动调整过程。其中,在使用Fast Recovery Area归档的情况下,LOG_ARCHIVE_DEST_1的默认值为USE_DB_RECOVERY_FILE_DEST。

TueDec1817:48:242018ALTERSYSTEMSETdb_recovery_file_dest_size='10G'SCOPE=BOTH;TueDec1817:52:132018ClearedLOG_ARCHIVE_DEST_1parameterdefaultvalueUsingLOG_ARCHIVE_DEST_1parameterdefaultvalueas/u01/app/oracle/product/11.2.0/db_1/dbs/archALTERSYSTEMSETdb_recovery_file_dest=''SCOPE=BOTH;TueDec1817:52:282018ALTERSYSTEMSETlog_archive_dest='/u01/app/oracle/archive'SCOPE=BOTH;

--首先创建新的归档路径[oracle@XLJ181trace]$mkdir-p/u01/app/oracle/archive

--此时对日志进行切换,触发写归档日志SYS@cams>altersystemswitchlogfile;Systemaltered.

--查看新生成的归档日志[oracle@XLJ181trace]$ll/u01/app/oracle/archivetotal11960-rw-r-----1oracleoinstall12244992Dec1817:571_25_994950965.dbf

trace日志中也可以看到LGWR switch操作

TueDec1817:57:102018Thread1cannotallocatenewlog,sequence26PrivatestrandflushnotcompleteCurrentlog#1seq#25mem#0:/u01/app/oracle/oradata/cams/redo01.logThread1advancedtologsequence26(LGWRswitch)Currentlog#2seq#26mem#0:/u01/app/oracle/oradata/cams/redo02.logTueDec1817:57:102018ArchivedLogentry20addedforthread1sequence25ID0x9e3b45f3dest1:方案2:两路归档路径

如果要设置两路归档路径,常用的方案是配置log_archive_dest和log_archive_duplex_dest参数。用log_archive_dest_n参数的方法在第三种方案进行讨论。

具体操作如下:

--创建新的归档路径[oracle@XLJ181trace]$mkdir-p/u01/app/oracle/archive1

--设置log_archive_duplex_dest参数路径并切换日志触发写归档日志SYS@cams>altersystemsetlog_archive_duplex_dest='/u01/app/oracle/archive1';Systemaltered.SYS@cams>altersystemswitchlogfile;Systemaltered.

--查看新生成的归档日志文件,显然新生成的归档大小和文件名一致。两份归档日志互为冗余。[oracle@XLJ181trace]$ll/u01/app/oracle/archivetotal15704-rw-r-----1oracleoinstall12244992Dec1817:571_25_994950965.dbf-rw-r-----1oracleoinstall3830272Dec1818:301_26_994950965.dbf[oracle@XLJ181trace]$ll/u01/app/oracle/archive1total3744-rw-r-----1oracleoinstall3830272Dec1818:301_26_994950965.dbf

查看trace日志,可以看到LGWR switch操作,然后分别在两个目录下写归档。

TueDec1818:30:012018Thread1cannotallocatenewlog,sequence27PrivatestrandflushnotcompleteCurrentlog#2seq#26mem#0:/u01/app/oracle/oradata/cams/redo02.logThread1advancedtologsequence27(LGWRswitch)Currentlog#3seq#27mem#0:/u01/app/oracle/oradata/cams/redo03.logTueDec1818:30:022018ArchivedLogentry21addedforthread1sequence26ID0x9e3b45f3dest1:ArchivedLogentry22addedforthread1sequence26ID0x9e3b45f3dest2:方案3:多路归档路径

如果要设置多路归档路径,需要使用log_archive_dest_n参数,其中,n的取值为1到31的整数,也就是说,可以指定1到31个独立的路径作为归档日志的路径。

log_archive_dest_n参数的取值可以选择LOCATION或SERVIDE关键字。如果使用LOCATION关键字,可以选择本地文件系统、ASM磁盘组或USE_DB_RECOVERY_FILE_DEST代表的闪回恢复区;如果使用SERVICE关键字,可以选择备库的网络连接标识符连接备份数据库。

具体操作如下:

--创建本地归档目录[oracle@XLJ181admin]$mkdir-p/u01/app/oracle/archive2[oracle@XLJ181admin]$mkdir-p/u01/app/oracle/archive3

--配置log_archive_dest_n参数SYS@cams>altersystemsetlog_archive_duplex_dest='';Systemaltered.SYS@cams>altersystemsetlog_archive_dest='';Systemaltered.SYS@cams>altersystemsetlog_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST';Systemaltered.SYS@cams>altersystemsetlog_archive_dest_2='LOCATION=/u01/app/oracle/archive2';Systemaltered.SYS@cams>altersystemsetlog_archive_dest_3='LOCATION=/u01/app/oracle/archive3';Systemaltered.

需要注意置空的顺序,以免出现如下错误

SYS@cams>altersystemsetlog_archive_dest='';altersystemsetlog_archive_dest=''*ERRORatline1:ORA-02097:parametercannotbemodifiedbecausespecifiedvalueisinvalidORA-16022:LOG_ARCHIVE_DESTcannotbeNULLbecauseLOG_ARCHIVE_DUPLEX_DESTisnon-NULL

需要将LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST参数置空,以免出现如下问题:

SYS@cams>altersystemsetlog_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST';altersystemsetlog_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST'*ERRORatline1:ORA-02097:parametercannotbemodifiedbecausespecifiedvalueisinvalidORA-16019:cannotuseLOG_ARCHIVE_DEST_1withLOG_ARCHIVE_DESTorLOG_ARCHIVE_DUPLEX_DEST

--切换日志,触发写归档日志SYS@cams>altersystemswitchlogfile;Systemaltered.

查看新生成的归档日志文件,显然新生成的归档大小和文件名一致。两份归档日志互为冗余。

[oracle@XLJ181admin]$ll/u01/app/oracle/archive2total5440-rw-r-----1oracleoinstall4416512Dec1819:091_27_994950965.dbf-rw-r-----1oracleoinstall1148416Dec1819:231_28_994950965.dbf[oracle@XLJ181admin]$ll/u01/app/oracle/archive3total5440-rw-r-----1oracleoinstall4416512Dec1819:091_27_994950965.dbf-rw-r-----1oracleoinstall1148416Dec1819:231_28_994950965.dbf

查看trace日志,看到错误提示,提示DB_RECOVERY_FILE_DEST未设置值

TueDec1819:23:592018Errorsinfile/u01/app/oracle/diag/rdbms/cams/cams/trace/cams_arc3_29341.trc:ORA-19801:initializationparameterDB_RECOVERY_FILE_DESTisnotsetErrorsinfile/u01/app/oracle/diag/rdbms/cams/cams/trace/cams_arc3_29341.trc:ORA-16032:parameterLOG_ARCHIVE_DEST_1destinationstringcannotbetranslatedORA-19801:initializationparameterDB_RECOVERY_FILE_DESTisnotsetArchivedLogentry25addedforthread1sequence28ID0x9e3b45f3dest2:ArchivedLogentry26addedforthread1sequence28ID0x9e3b45f3dest3:

为DB_RECOVERY_FILE_DEST参数配置数值,切换日志

SYS@cams>altersystemsetDB_RECOVERY_FILE_DEST='/u01/app/oracle/fast_recovery_area';Systemaltered.SYS@cams>altersystemswitchlogfile;Systemaltered.SYS@cams>altersystemswitchlogfile;Systemaltered.

查看trace日志信息,最后可看到同时写入了3个归档路径

TueDec1819:27:582018**********************************************************WARNING:Filesmayexistsindb_recovery_file_destthatarenotknowntothedatabase.UsetheRMANcommandCATALOGRECOVERYAREAtore-cataloganysuchfiles.Iffilescannotbecataloged,thenmanuallydeletethemusingOScommand.Oneofthefollowingeventscausedthis:1.Abackupcontrolfilewasrestored.2.Astandbycontrolfilewasrestored.3.Thecontrolfilewasre-created.4.db_recovery_file_desthadpreviouslybeenenabledandthendisabled.**********************************************************ALTERSYSTEMSETdb_recovery_file_dest='/u01/app/oracle/fast_recovery_area'SCOPE=BOTH;TueDec1819:27:582018db_recovery_file_dest_sizeof10240MBis5.63%used.Thisisauser-specifiedlimitontheamountofspacethatwillbeusedbythisdatabaseforrecovery-relatedfiles,anddoesnotreflecttheamountofspaceavailableintheunderlyingfilesystemorASMdiskgroup.TueDec1819:28:012018Thread1cannotallocatenewlog,sequence30PrivatestrandflushnotcompleteCurrentlog#2seq#29mem#0:/u01/app/oracle/oradata/cams/redo02.logThread1advancedtologsequence30(LGWRswitch)Currentlog#3seq#30mem#0:/u01/app/oracle/oradata/cams/redo03.logTueDec1819:28:012018ArchivedLogentry27addedforthread1sequence29ID0x9e3b45f3dest2:ArchivedLogentry28addedforthread1sequence29ID0x9e3b45f3dest3:TueDec1819:33:382018Thread1cannotallocatenewlog,sequence31PrivatestrandflushnotcompleteCurrentlog#3seq#30mem#0:/u01/app/oracle/oradata/cams/redo03.logThread1advancedtologsequence31(LGWRswitch)Currentlog#1seq#31mem#0:/u01/app/oracle/oradata/cams/redo01.logTueDec1819:33:392018Expandedcontrolfilesection11from28to62recordsRequestedtogrowby34records;added2blocksofrecordsArchivedLogentry29addedforthread1sequence30ID0x9e3b45f3dest1:ArchivedLogentry30addedforthread1sequence30ID0x9e3b45f3dest2:ArchivedLogentry31addedforthread1sequence30ID0x9e3b45f3dest3:

感谢各位的阅读,以上就是“Oracle归档日志管理的方法有哪些”的内容了,经过本文的学习后,相信大家对Oracle归档日志管理的方法有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!