javamao00 2011-11-15
Oracle可以将联机日志文件保存到多个不同的位置,将联机日志转换为归档日志的过程称之为归档。相应的日志被称为归档日志。
一、归档日志
是联机重做日志组文件的一个副本
包含redo记录以及一个唯一的logsequencenumber
对日志组中的一个日志文件进行归档,如果该组其中一个损坏,则另一个可用的日志将会被归档
对于归档模式的日志切换,当日志归档完成后,下一个日志才能被覆盖或重新使用
自动归档功能如开启,则后台进程arcn在日志切换时自动完成归档,否则需要手动归档
归档日志用途
恢复数据库
更新standby数据库
使用LogMiner提取历史日志的相关信息
二、日志的两种模式
1.非归档模式
不适用与生产数据库
创建数据库时,缺省的日志管理模式为非归档模式
当日志切换,检查点产生后,联机重做日志文件即可被重新使用
联机日志被覆盖后,介质恢复仅仅支持到最近的完整备份
不支持联机备份表空间,一个表空间损坏将导致整个数据库不可用,需要删除掉损坏的表空间或从备份恢复
对于操作系统级别的数据库备份需要将数据库一致性关闭
应当备份所有的数据文件、控制文件(单个)、参数文件、密码文件、联机日志文件(可选)
2.归档模式
能够对联机日志文件进行归档,生产数据库强烈建议归档
在日志切换时,下一个即将被写入日志组必须归档完成之后,日志组才可以使用
归档日志的Logsequencenumber信息会记录到控制文件之中
必须有足够的磁盘空间用于存放归档日志
Oracle9i需要设置参数log_archive_start=true才能够进行自动归档
备份与恢复
支持热备份,且当某个非系统表空间损坏,数据库仍然处于可用状态,且支持在线恢复
使用归档日志能够实现联机或脱机时点恢复(即可以恢复到指定的时间点、指定的归档日志或指定的SCN)
三、两种模式的切换设置及手动归档
1.非归档到归档模式
a.一致性关闭数据库(shutdown[immediate|transactional|normal])
b.启动到mount阶段(startupmount)
c.切换到归档模式(alterdatabasearchivelog[manual])
d.切换到open阶段(alterdatabaseopen)
e.对数据做一个完整备份(fullbackup)
--演示非归档到归档模式
SQL>ARCHIVELOGLIST--查看数据库是否处于归档模式
DatabaselogmodeNoArchiveMode
AutomaticarchivalDisabled
ArchivedestinationUSE_DB_RECOVERY_FILE_DEST
Oldestonlinelogsequence14
Currentlogsequence16
SQL>SELECTlog_modeFROMv$database;--查看数据库是否处于归档模式
LOG_MODE
------------
NOARCHIVELOG
SQL>SHUTDOWNIMMEDIATE;--一致性关闭数据库
Databaseclosed.
Databasedismounted.
ORACLEinstanceshutdown.
SQL>STARTUPMOUNT;--启动到mount状态
ORACLEinstancestarted.
TotalSystemGlobalArea251658240bytes
FixedSize1218796bytes
VariableSize75499284bytes
DatabaseBuffers171966464bytes
RedoBuffers2973696bytes
Databasemounted.
SQL>ALTERDATABASEARCHIVELOG;--切换到自动归档模式
Databasealtered.
SQL>ALTERDATABASEOPEN;--切换到open状态
Databasealtered.
SQL>ARCHIVELOGLIST;--查看数据库的归档状态
DatabaselogmodeArchiveMode--已置为归档模式
AutomaticarchivalEnabled--对日志进行自动归档
ArchivedestinationUSE_DB_RECOVERY_FILE_DEST
Oldestonlinelogsequence14
Nextlogsequencetoarchive16
Currentlogsequence16
--备份数据库步骤省略
2.归档模式切换到非归档模式(步骤同非归档到归档模式仅仅是c步骤使用alterdatabasenoarchivelog,演示省略)
a.一致性关闭数据库(shutdown[immediate|transactional|normal])
b.启动到mount阶段(startupmount)
c.切换到归档模式(alterdatabasenoarchivelog)
d.切换到open阶段(alterdatabaseopen)
e.对数据做一个完整备份(fullbackup)
3.手动归档
手动归档时需要将日志模式切换为alterdatabasearchivelogmanual
再使用altersystemarchivelogcurrent|all实现归档
更多手动归档命令:ALTERSYSTEMarchive_log_clause
注意:
手动归档模式下不支持stanby数据库
在alterdatabasearchivelog模式下也可以实现对日志的归档
SQL>ALTERDATABASEARCHIVELOGMANUAL;--将日志模式切换为手工归档模式
Databasealtered.
SQL>ALTERDATABASEOPEN;--打开数据库
Databasealtered.
SQL>ALTERSYSTEMARCHIVELOGCURRENT;--对当前的日志进行归档(建议在mount阶段完成)
Systemaltered.
SQL>ALTERSYSTEMARCHIVELOGALL;--对所有的日志进行归档
altersystemarchivelogall
*
ERRORatline1:
ORA-00271:therearenologsthatneedarchiving--没有需要归档的日志
4.归档进程的调整
通过设置LOG_ARCHIVE_MAX_PROCESSES参数,可以指定数据库规定所需初始化的进程数,缺省的归档进程数为2
一般情况下不需要修改该参数,Oracle会根据归档情况自动启动额外的归档进程
也可以动态的增加或减少归档进程数,比如有些业务在月底需要进行大量归档,平时则归档较少,对此可以动态修改
修改方法
ALTERSYSTEMSETLOG_ARCHIVE_MAX_PROCESSES=3;
5.配置归档(两种归档位置配置方法)
a.归档到本机且少于等于两个归档位置
设置LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST参数
altersystemsetlog_archive_dest='/u01/app/oracle/archivelog1'scope=spfile;
altersystemsetlog_archive_duplex_dest='/u01/app/oracle/archivelog2'scope=spfile;
b.归档到本机或远程主机
设置LOG_ARCHIVE_DEST_n参数,n最大值为10
altersystemsetlog_archive_dest_1='LOCATION=/u01/app/oracle/archivelog3';
altersystemsetlog_archive_dest_2='SERVICE=standby1';
对于远程归档位置,SERVICE选项需要指定远程数据库的网络服务名(在tnsnames.ora文件中配置)
LOG_ARCHIVE_DEST_n的两个常用选项
MANADATORY|OPTIONAL:
MANADATORY表示归档必须成功复制到目的路径之后,联机重做日志才能被复用,OPTIONAL正好相反
REOPEN:
指定归档失败后指定间隔多少时间重试归案,缺省的为300秒
示例:
log_archive_dest_1='LOCATION=/u01/app/oracle/archivelog3manadatoryreopen=600'
log_archive_dest_2='SERVICE=standby1manadatoryreopen'
c.两种归档方法异同(前者log_archive_dest、log_archive_duplex_dest,后者log_archive_dest_n)
两者都可以归档到本机,后者可以归档到远程主机,前者不支持该功能
前者最多配置两个归档位置,后者可以配置10个归档位置
两者互不兼容,要么使用前者,要么使用后者
使用后者归档到本地时需要增加LOCATION选项,备份到远程主机需要使用SERVICE选项
但上述两种方式未指定路径时,归档日志位于db_recovery_file_dest缺省为$ORACLE_BASE/flash_recovey_area
d.归档日志命名格式
设置LOG_ARCHIVE_FORMAT参数,Unix下的缺省设置为LOG_ARCHIVE_FORMAT=%t_%s_%r.dbf
%s:日志序列号:
%S:日志序列号(带有前导)
%t:重做线程编号.
%T:重做线程编号(带有前导)
%a:活动ID号
%d:数据库ID号
%rRESETLOGS的ID值.
altersystemsetlog_archive_format='arch_%t_%s_%r.arc';
e.归档位置状态
Valid/Invalid--磁盘位置及服务名等是否有效
Enabled/Disabled--磁盘位置的可用状态及数据库能否使用该归档位置
Active/Inactive--访问归档目的地是否有异常
f.归档成功的最小个数(使用参数log_archive_min_succeed_dest=n)
altersystemsetlog_archive_min_succeed_dest=2;--缺省为1
联机重做日志组能够被覆盖的前提
所有强制路径归档位置成功实现归档
归档目的地的成功归档的个数大于或等于上述参数设定的值
当强制个数大于该参数设定的个数,则以强制个数为准
当强制个数小于该参数设定的个数,则可选的成功归档路径加上强制的归档路径个数至少等于该参数设定值
g.控制归档的可用性(使用参数log_archive_dest_state_n)
altersystemsetlog_archive_dest_state_1=enable|defer
enable-->缺省状态,可以在该归档位置进行归档
defer-->禁用该归档位置
h.演示归档路径配置及查看归档进程,归档位置状态
SQL>ARCHIVELOGLIST;--查看日志是否处于归档状态
DatabaselogmodeArchiveMode
AutomaticarchivalEnabled
ArchivedestinationUSE_DB_RECOVERY_FILE_DEST
Oldestonlinelogsequence24
Nextlogsequencetoarchive26
Currentlogsequence26
SQL>hops-ef|grepora_arc--查看归档进程是否已启动
oracle40621011:43?00:00:00ora_arc0_orcl
oracle40641011:43?00:00:00ora_arc1_orcl
SQL>SHOWPARAMETERARCHIVE--查看归档路径是否已设置,为空值表示未设置
NAMETYPEVALUE
-----------------------------------------------------------------------------
archive_lag_targetinteger0
log_archive_configstring
log_archive_deststring
log_archive_dest_1string
log_archive_dest_10string
log_archive_dest_2string
log_archive_dest_3string
log_archive_dest_4string
log_archive_dest_5string
log_archive_dest_6string
log_archive_dest_7string
NAMETYPEVALUE
-----------------------------------------------------------------------------
log_archive_dest_8string
log_archive_dest_9string
log_archive_dest_state_1stringenable
log_archive_dest_state_10stringenable
log_archive_dest_state_2stringenable
log_archive_dest_state_3stringenable
log_archive_dest_state_4stringenable
log_archive_dest_state_5stringenable
log_archive_dest_state_6stringenable
log_archive_dest_state_7stringenable
log_archive_dest_state_8stringenable
NAMETYPEVALUE
-----------------------------------------------------------------------------
log_archive_dest_state_9stringenable
log_archive_duplex_deststring
log_archive_formatstring%t_%s_%r.dbf
log_archive_local_firstbooleanTRUE
log_archive_max_processesinteger2
log_archive_min_succeed_destinteger1
log_archive_startbooleanFALSE--该参数在9i中使用
log_archive_traceinteger0
remote_archive_enablestringtrue
standby_archive_deststring?/dbs/arch
SQL>altersystemsetlog_archive_dest='/u01/app/oracle/archivelog1'scope=spfile;
Systemaltered.
SQL>altersystemsetlog_archive_duplex_dest='/u01/app/oracle/archivelog2'scope=spfile;
Systemaltered.
SQL>altersystemsetlog_archive_format='arch_%t_%s_%r.arc'scope=spfile;
--设定完毕后需要重新启动实例,在此省略关闭启动信息
SQL>hols/u01/app/oracle/archivelog1--查看归档路径下是否存在文件或文件夹
SQL>hols/u01/app/oracle/archivelog2--查看归档路径下是否存在文件或文件夹
SQL>altersystemarchivelogcurrent;--手动进行归档
Systemaltered.
SQL>hols-l/u01/app/oracle/archivelog1--在指定的文件夹archivelog1已产生归档日志
total18224
-rw-------1oracleoinstall18636800Jul2820:39arch_1_26_724852763.arc
SQL>hols-l/u01/app/oracle/archivelog2--在指定的文件夹archivelog2已产生归档日志
total18224
-rw-------1oracleoinstall18636800Jul2820:39arch_1_26_724852763.arc
SQL>homkdir/u01/app/oracle/archivelog3--创建新的归档路径
SQL>homkdir/u01/app/oracle/archivelog4--创建新的归档路径
SQL>altersystemsetlog_archive_dest_1='location=/u01/app/oracle/archivelog3'
2scope=spfile;
Systemaltered.
SQL>altersystemsetlog_archive_dest_2='location=/u01/app/oracle/archivelog4'
2scope=spfile;
Systemaltered.
SQL>shutdownimmediate;--关闭实例
Databaseclosed.
Databasedismounted.
ORACLEinstanceshutdown.
SQL>startup--启动实例后,收到错误提示表明两种归档方式不兼容
ORA-16019:cannotuseLOG_ARCHIVE_DEST_1withLOG_ARCHIVE_DESTorLOG_ARCHIVE_DUPLEX_DEST
--关于上述设置导致的错误处理请参照:又一例SPFILE设置错误导致数据库无法启动
SPFILE错误导致数据库无法启动
--下面是正确的处理办法,应当先将一种归档方式路径置空,此处是将log_archive_dest置空
SQL>altersystemsetlog_archive_dest=''scope=spfile;
Systemaltered.
--此处是将log_archive_duplex_dest置空
SQL>altersystemsetlog_archive_duplex_dest=''scope=spfile;
Systemaltered.
--接下来再设定log_archive_dest_1,log_archive_dest_2
SQL>altersystemsetlog_archive_dest_1='location=/u01/app/oracle/archivelog3'
2scope=spfile;
Systemaltered.
SQL>altersystemsetlog_archive_dest_2='location=/u01/app/oracle/archivelog4'
2scope=spfile;
Systemaltered.
--由于没有配置standby服务器,所以省略配置到远程主机
--设定完毕后需要重新启动实例,此时系统能正常启动,在此省略关闭启动信息
SQL>altersystemarchivelogcurrent;--进行手动归档
Systemaltered.
SQL>hols-l/u01/app/oracle/archivelog3/--查看归档日志
total27752
-rw-------1oracleoinstall28382208Aug213:46arc_1_38_724852763.arc
SQL>hols-l/u01/app/oracle/archivelog4/--查看归档日志
total27752
-rw-------1oracleoinstall28382208Aug213:45arc_1_38_724852763.arc
SQL>coldest_nameformata20;
SQL>coldestinationformata30;
SQL>selectdest_name,status,archiver,destination,
2log_sequence,reopen_secs,transmit_mode,process
3fromv$archive_dest;--查看归档目的地的相关状态信息
DEST_NAMESTATUSARCHIVERDESTINATIONLOG_SEQUENCEREOPEN_SECSTRANSMIT_MODPROCESS
---------------------------------------------------------------------------------------------------------------
LOG_ARCHIVE_DEST_1VALIDARCH/u01/app/oracle/archivelog3/38300SYNCHRONOUSARCH
LOG_ARCHIVE_DEST_2VALIDARCH/u01/app/oracle/archivelog4/38300SYNCHRONOUSARCH
LOG_ARCHIVE_DEST_3INACTIVEARCH00SYNCHRONOUSARCH
-----------------------------------------------------------------------------------------------------------------------
SQL>altersystemsetlog_archive_dest_state_2=defer;--停用log_archive_dest_state_2
Systemaltered.
SQL>showparameterlog_archive_dest_state
NAMETYPEVALUE
--------------------------------------------------------------
log_archive_dest_state_1stringenable
log_archive_dest_state_10stringenable
log_archive_dest_state_2stringDEFER--该路径显示为defer
log_archive_dest_state_3stringenable
log_archive_dest_state_4stringenable
log_archive_dest_state_5stringenable
log_archive_dest_state_6stringenable
log_archive_dest_state_7stringenable
log_archive_dest_state_8stringenable
log_archive_dest_state_9stringenable
SQL>altersystemarchivelogcurrent;--手动归档
Systemaltered.
SQL>hols-l/u01/app/oracle/archivelog3;--可以看出archivelog3比archivelog4多出几个归档文件
total124772--建议将多出文件件的使用系统命令复制到archivelog4
-rw-------1oracleoinstall28382208Aug213:46arc_1_38_724852763.arc
-rw-------1oracleoinstall1788416Aug220:41arc_1_39_724852763.arc
-rw-------1oracleoinstall30257664Aug222:21arc_1_40_724852763.arc
-rw-------1oracleoinstall30257664Aug222:22arc_1_41_724852763.arc
-rw-------1oracleoinstall30257664Aug222:22arc_1_42_724852763.arc
-rw-------1oracleoinstall6647296Aug222:23arc_1_43_724852763.arc
SQL>hols-l/u01/app/oracle/archivelog4;
total29504
-rw-------1oracleoinstall28382208Aug213:45arc_1_38_724852763.arc
-rw-------1oracleoinstall1788416Aug220:41arc_1_39_724852763.arc
SQL>altersystemsetlog_archive_dest_state_2=enable;--启用log_archive_dest_state_2
Systemaltered.
SQL>altersystemarchivelogcurrent;--手动归档
Systemaltered.
SQL>hols-l/u01/app/oracle/archivelog3;--启用后出现了相同的arc_1_44_724852763.arc文件
total124856
-rw-------1oracleoinstall28382208Aug213:46arc_1_38_724852763.arc
-rw-------1oracleoinstall1788416Aug220:41arc_1_39_724852763.arc
-rw-------1oracleoinstall30257664Aug222:21arc_1_40_724852763.arc
-rw-------1oracleoinstall30257664Aug222:22arc_1_41_724852763.arc
-rw-------1oracleoinstall30257664Aug222:22arc_1_42_724852763.arc
-rw-------1oracleoinstall6647296Aug222:23arc_1_43_724852763.arc
-rw-------1oracleoinstall81408Aug222:25arc_1_44_724852763.arc
SQL>hols-l/u01/app/oracle/archivelog4;
total29588
-rw-------1oracleoinstall28382208Aug213:45arc_1_38_724852763.arc
-rw-------1oracleoinstall1788416Aug220:41arc_1_39_724852763.arc
-rw-------1oracleoinstall81408Aug222:25arc_1_44_724852763.arc
四、归档日志相关视图
v$archived_log-->从控制文件中获得归档的相关信息
v$archive_dest-->归档路径及状态
v$log_history-->控制文件中日志的历史信息
v$database-->查看数据库是否处于归档状态
v$archive_processes-->归档相关的后台进程信息
命令:archiveloglist
SQL>selectname,sequence#,registrar,standby_dest,archived,status
2fromv$archived_log;
NAMESEQUENCE#REGISTRSTAARCS
-------------------------------------------------------------------------------
/u01/app/oracle/archivelog4/arc_1_38_724852763.arc38FGRDNOYESA
/u01/app/oracle/archivelog3/arc_1_39_724852763.arc39ARCHNOYESA
/u01/app/oracle/archivelog4/arc_1_39_724852763.arc39ARCHNOYESA
/u01/app/oracle/archivelog3/arc_1_40_724852763.arc40ARCHNOYESA
/u01/app/oracle/archivelog3/arc_1_41_724852763.arc41ARCHNOYESA
/u01/app/oracle/archivelog3/arc_1_42_724852763.arc42ARCHNOYESA
/u01/app/oracle/archivelog3/arc_1_43_724852763.arc43ARCHNOYESA
/u01/app/oracle/archivelog3/arc_1_44_724852763.arc44FGRDNOYESA
/u01/app/oracle/archivelog4/arc_1_44_724852763.arc44FGRDNOYESA