oracle归档相关命令及常见问题
oracle 归档日志原理

oracle 归档日志原理
Oracle的归档日志是联机重做日志组文件的一个副本,它包含redo记录以及一个唯一的log sequence number。
当一个redo log group写满时,或者发出switch logfile指令时,就会触发日志组的切换。
当发生日志组切换时,ARC进程会将当前的重做日志数据写入归档日志。
LGWR进程将redo logbuffer中的重做数据写入到redo log中,这是内存读磁盘写的过程。
而ARC进程是将重做日志文件写入到归档文件,是磁盘读磁盘写的过程。
显然LGWR进程的读写效率或者读写速度比ARC进程要快。
在频繁发生DML操作的数据库中,可能会发生归档慢,而重做日志写入速度快的情况,这就会导致数据库被HANG住。
此时数据库什么也不做就是等待ARC进程将当前重做日志数据写入到归档文件。
这时候就要考虑启动更多的归档进程了,通过修改参数log_archive_max_processes来实现。
该参数是动态参数,直接修改即可。
以上内容仅供参考,如需更详细的解释,建议咨询数据库专业人员或查阅Oracle官方文档。
Oracle 使用RMAN备份数据库文件和归档日志

Oracle 使用RMAN 备份数据库文件和归档日志当数据库打开时,可以使用RMAN BACKUP 命令备份如下对象:● 数据库● 表空间● 数据文件● 归档重做日志● 控制文件● 备份集在使用BACKUP 命令备份数据文件时,可以为其设置参数,定义备份段的文件名,文件数和每个输入文件的通道。
1.备份数据库如果备份操作是在数据库被安全关闭之后进行的,那么对整个数据库的备份是一致的;与之相对应,如果数据库是在打开状态下对整个数据库进行的备份,则该备份是非一致的。
非一致性备份整个数据库的操作步骤如下:(1)启动RMAN 并连接到目标数据库,输入BACKUP DATABASE 命令备份数据库。
在BACKUP 命令中可以指定FORMA T 参数,为RMAN 生成的每个备份片段指定一个惟一的名称,以及存储的位置。
C:\>rman target system/admin nocatalogRMAN> backup database format 'f:\oracle_backup\ora11g_%Y_%M_%D_%U.bak' maxsetsize=2G; 还可以为BACKUP 命令指定TAG 参数,为备份片段定义备份标签。
例如: RMAN>backup database tag='weekly_backup';(2)如果建立的是非一致性备份,那么必须在完成备份后对当前的联机重做日志进行归档,因为在使用备份恢复数据库需要使用当前重做日志中的重做记录。
RMAN>sql'alter system archive log current';(3)在RMAN 中执行LIST BACKUP OF DA TABASE 命令,查看建立的备份集与备份片段的信息。
RMAN> list backup of database;如果需要对整个数据库进行一致性备份,则首先需要关闭数据库,并启动数据库到MOUNT 状态。
oracle关于归档日志和redo日志问题

oracle关于归档⽇志和redo⽇志问题
使⽤⽤友NC的软件,后台oracle数据库已经使⽤了2年多了,⼀直没有搞清楚redo,归档⽇志是怎么回事。
先来个理论性的知识学习,在深⼊学实际使⽤。
重做⽇志redo log file是LGWR进程从Oracle实例中的redo log buffer写⼊的,是循环利⽤的。
就是说⼀个redo log file(group) 写满后,才写下⼀个。
归档⽇志archive log是当数据库运⾏在归档模式下时,⼀个redo log file(group)写满后,由ARCn进程将重做⽇志的内容备份到归档⽇志⽂件下,然后这个redo log file(group)才能被下⼀次使⽤。
不管数据库是否是归档模式,重做⽇志是肯定要写的。
⽽只有数据库在归档模式下,重做⽇志才会备份,形成归档⽇志。
归档⽇志结合全备份,⽤于数据库出现问题后的恢复使⽤。
oracle归档操作步骤

oracle归档操作步骤
Oracle的归档操作主要包括开启归档模式、修改归档日志路径以及删除归档日志等步骤。
1.查看归档模式是否开启以及重做日志存放路径。
可以通过执行SQL
命令archive log list来查看归档日志的状态,以及SELECT * FROM v$logfile ORDER BY group#;来查看重做日志的存放路径。
2.开启归档模式。
首先关闭数据库实例,然后启动到mount状态,接着
修改数据库为归档模式,最后打开数据库。
3.修改归档日志路径。
如果需要修改归档日志的路径,可以通过修改初
始化参数log_archive_dest_1的值来实现。
注意新路径必须已经存在,且每个目录都必须存在。
4.实验是否成功将路径做了修改。
可以通过切换重做日志的活跃状态来
触发日志备份,生成新的归档日志,并检查新的归档日志是否保存在设置的目录下。
5.删除归档日志。
首先通过执行crosscheck archivelog all;命令
来检查归档日志文件,然后通过执行delete expired archivelog all;命令来删除校验失败的记录。
oracle 日志归档 原理

oracle 日志归档原理Oracle数据库日志归档(Archive Log Mode)是数据库管理系统中用于实现数据库可恢复性的重要机制。
在归档模式下,Oracle数据库会将已填满的联机重做日志文件的内容复制到单独的归档日志文件中,并且只有在当前的日志内容被安全地归档后,才会覆盖或重新使用这些联机重做日志。
以下是Oracle日志归档的基本原理:1.联机重做日志:•Oracle数据库运行时会产生一系列的联机重做日志文件(Online Redo Logs),这些文件按照日志组的方式组织,每个日志组内包含一个或多个日志成员。
•当数据库执行事务处理时,所有对数据库的修改都会以重做记录的形式写入当前活动的日志组中。
2.日志切换:•随着数据库操作的进行,当前日志组填满后,会触发日志切换(Log Switch),即系统开始往下一个日志组中写入新的重做记录。
•在非归档模式下,旧的日志组可以被覆盖和重复使用;而在归档模式下,必须先将旧日志组的内容归档才能进行切换。
3.归档过程:•归档是由后台进程ARCn (Archiver) 自动完成的,或者管理员可以通过手动方式将填满的联机重做日志文件复制到指定的归档位置。
•归档日志文件具有与原始联机日志相同的逻辑内容,并带有唯一的日志序列号(Log Sequence Number, LSN),以便在恢复过程中确定应用重做记录的顺序。
4.作用:•在发生故障需要恢复数据库时,通过应用归档日志中的重做记录,可以将数据库状态恢复到故障发生前的任意时间点(Point-in-Time Recovery, PITR)。
•对于数据库镜像、数据保护以及维护高可用性环境如Data Guard(物理/逻辑standby数据库)也是至关重要的。
oracle 归档模式理解

oracle 归档模式理解Oracle 归档模式是一种数据库管理模式,它可以帮助数据库管理员有效地管理数据库的日志文件。
在这篇文章中,我们将深入探讨Oracle归档模式的概念、原理以及它在数据库管理中的作用。
我们来了解一下什么是归档模式。
归档模式是一种数据库管理策略,它能够将数据库的重要日志文件进行备份和存档,以便在需要时进行恢复和还原操作。
在Oracle数据库中,归档模式可以通过对数据库进行配置来启用。
在归档模式下,Oracle数据库会将所有的数据库操作记录保存在一个特殊的日志文件中,即归档日志文件。
这些归档日志文件可以用于数据库的恢复和还原操作。
当数据库发生故障或需要恢复到某个特定的时间点时,管理员可以使用归档日志文件进行恢复操作,以便将数据库恢复到故障前的状态。
归档模式的原理是通过将数据库的日志文件进行备份和存档,以确保数据库的完整性和可用性。
当数据库发生故障时,管理员可以使用归档日志文件将数据库还原到故障前的状态。
此外,归档日志文件还可以用于数据库的迁移和升级操作,以及数据的长期存储和备份。
在实际的数据库管理中,归档模式具有重要的作用。
首先,归档模式可以保证数据库的可用性和持久性。
通过定期备份和存档归档日志文件,管理员可以在数据库发生故障时快速恢复数据库。
其次,归档模式可以帮助管理员进行数据库的性能优化。
通过归档日志文件的分析和管理,管理员可以了解数据库的使用情况和性能瓶颈,并采取相应的措施来优化数据库的性能。
此外,归档模式还可以用于数据库的迁移和升级操作,以及数据的长期存储和备份。
为了启用归档模式,管理员需要对Oracle数据库进行相应的配置。
首先,管理员需要为数据库指定一个归档日志文件的存储位置。
其次,管理员需要创建一个归档日志文件组,用于存储归档日志文件。
最后,管理员需要启用归档模式,并定期备份和存档归档日志文件。
在实际的数据库管理中,管理员还需要注意一些与归档模式相关的注意事项。
归档模式的介绍

归档模式的介绍任何数据库在长期使用过程中,都会存在一定的安全隐患。
数据库恢复就是当数据库发生故障后,希望能重新建立一个完整的数据库。
Oracle数据库可以运行在2种模式下:归档模式(archivelog)和非归档模式(noarchivelog)。
归档模式可以提高Oracle数据库的可恢复性,生产数据库都应该运行在此模式下,归档模式应该和相应的备份策略相结合。
Oracle的日志文件至少有两个,当第一个写满了,就会接着写第二个,第二写满后,如果是归档模式就会要求你提供路径保存日志文件,如果是非归档模式则会直接覆盖第一个日志文件。
这就是归档模式和非归档模式的最简单区别。
数据丢失的原因各种各样。
可能导致数据丢失的一些最常见的故障类型:1、语句故障:是Oracle 程序在处理语句时的逻辑错误。
例如,用户执行了无效SQL 结构的语句。
当发生语句故障时,Oracle 自动撤销语句的所有效果并将控制返回给用户。
2、进程故障是访问Oracle 的用户进程中出现的故障(即异常断开或进程终止)。
尽管Oracle 和其他的用户进可以继续工作,但出现故障的用户进程将不能继续工作。
如果用户进程在更改数据库时出现故障,则Oracle 后台进程将撤销未提交事务的效果。
3、实例故障是使Oracle 实例(即SGA 和后台进程)无法继续工作的问题。
实例故障可能源于硬件问题(如电力中断)或软件问题(如操作系统崩溃)。
当实例出现故障时,Oracle 不会将SGA 缓冲区中的数据写到数据文件中。
4、用户或应用程序错误是导致数据丢失的用户错误。
例如,用户可能无意地从工资单表中删除数据。
这种用户错误可能需要将数据库或对象恢复到该错误发生前的某个时间点上。
为了允许从用户错误中恢复过来并满足其他独特的恢复要求,Oracle 提供了闪回技术。
5、介质故障是当Oracle 试图写或读操作数据库所需要的文件时出现的物理问题。
一个常见的例子是磁盘头损坏,它将导致磁盘驱动器上的所有数据丢失。
Oracle归档模式和非归档模式的区别

Oracle归档模式和⾮归档模式的区别⼀。
查看oracle数据库是否为归档模式:Sql代码1.select name,log_mode from v$database;NAME LOG_MODE------------------ ------------------------QUERY NOARCHIVELOG2.使⽤ARCHIVE LOG LIST 命令Database log mode No Archive ModeAutomatic archival DisabledArchive destination /data/oracle/product/10.2.0/db_1//dbs/archOldest online log sequence 739Current log sequence 741[sql] view plaincopyprint?1.select name,log_mode from v$database;NAME LOG_MODE------------------ ------------------------QUERY NOARCHIVELOG2.使⽤ARCHIVE LOG LIST 命令Database log mode No Archive ModeAutomatic archival DisabledArchive destination /data/oracle/product/10.2.0/db_1//dbs/archOldest online log sequence 739Current log sequence 7411.select name,log_mode from v$database;NAME LOG_MODE------------------ ------------------------QUERY NOARCHIVELOG2.使⽤ARCHIVE LOG LIST 命令Database log mode No Archive ModeAutomatic archival DisabledArchive destination /data/oracle/product/10.2.0/db_1//dbs/archOldest online log sequence 739Current log sequence 741⼆。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
oracle 归档相关命令及归档相关命令及常见常见常见问题问题作者:刘俊(evan liu)日期:2009.6.3.1.查看归档设置情况SQL>archive log list Database log mode No Archive Mode Automatic archival DisabledArchive destination ?/dbs/archOldest online log sequence 10Current log sequence 12SQL>2.打开归档Oracle 10gSQL>alter database archivelog;Database altered.如果没有使用flash revocerySQL>archive log list Database log mode Archive Mode Automatic archival Enabled Archive destination ?/dbs/arch Oldest online log sequence 13Next log sequence to archive 15Current log sequence 15SQL>如果使用了flash recoverySQL>archive log list Database log mode Archive Mode Automatic archival EnabledArchive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 13Next log sequence to archive 15Current log sequence 15SQL>Oracle 9iSQL>alter database archivelog;Database altered.SQL>archive log listDatabase log mode Archive ModeAutomatic archival DisabledArchive destination?/dbs/archOldest online log sequence13Next log sequence to archive15Current log sequence15SQL>这里就可以看出orcle9i和oracle10g的区别了。
修改数据库为归档模式以后,10g 自动将自动归档打开,而9i不会。
9i需要修改下面的参数:SQL>show parameter log_archive_startNAME TYPE VALUE-----------------------------------------------------------------------------log_archive_start boolean FALSESQL>alter system set log_archive_start=TRUE scope=spfile;System altered.SQL>startup forceORACLE例程已经启动。
SQL>archive log listDatabase log mode Archive ModeAutomatic archival EnabledArchive destination?/dbs/archOldest online log sequence13Next log sequence to archive15Current log sequence15SQL>3.查看及更改自动归档的存放位置SQL>show parameter destNAME TYPE VALUE-----------------------------------------------------------------------------standby_archive_dest string?/dbs/arch默认位置,这里?代表$ORACLE_HOME如果使用了flash recovery,默认位置为:USE_DB_RECOVERY_FILE_DEST修改归档位置及归档文件名的格式SQL>alter system set log_archive_dest='/oracle/u01/arch/'System altered.SQL>alter system set LOG_ARCHIVE_FORMAT='Evan__%S_%R.%T'scope=spfile;System altered.SQL>startup forceSQL>archive log listatabase log mode No Archive ModeAutomatic archival DisabledArchive destination/home/oracle/u01/app/oracle/arch/Oldest online log sequence15Current log sequence17SQL>show parameter logNAME TYPE VALUE-----------------------------------------------------------------------------------------------log_archive_format string Evan__%S_%R.%T关于文件名格式的说明:10g中归档日志的默认文件格式为ARC%S_%R.%T,从10g 开始,配置归档日志文件格式时,必须带有%s,%t和%r匹配符。
%s:日志序列号:%S:日志序列号(带有前导0)%t:重做线程编号.%T:重做线程编号(带有前导0)%a:活动ID号%d:数据库ID号%r RESETLOGS的ID值.4.手动归档设定及解除SQL>startup mountORACLE instance started.Total System Global Area167772160bytesFixed Size1218316bytesVariable Size75499764bytesDatabase Buffers88080384bytesRedo Buffers2973696bytesDatabase mounted.SQL>alter system archive log manualSystem altered这时,系统不再自动归档,你可以用SQL>alter system archive log all;来手动归档。
要解除手动归档,恢复到自动归档,将数据库启动到mount模式,关闭再打开归档就可以了。
SQL>alter database noarchivelog;database alteredSQL>alter database archivelog;database altered5.测试自动归档是否成功设置自动归档以后,redo log的切换会引发归档,我们可以通过手动的切换日志来测试归档。
S QL>select group#,sequence#,archived,status,first_time from v$log;GROUP#SEQUENCE#ARCHIVED STATUS FIRST_TIME -----------------------------------------------------------------119YES INACTIVE05-6月-09220YES INACTIVE05-6月-09321NO CURRENT05-6月-09当前log group是3,其余两个都归档过了,手动切换log file:SQL>alter system switch logfile;System altered.SQL>select group#,sequence#,archived,status,first_time from v$log;GROUP#SEQUENCE#ARCHIVED STATUS FIRST_TIME -----------------------------------------------------------------122NO CURRENT05-6月-09220YES INACTIVE05-6月-09321YES ACTIVE05-6月-09已经切换到group1了,我们看到group3的archive状态已经是yes了,表示归档已经完成。
进入归档目录,可以看到新的归档文件生成:[oracle:~/u01/app/oracle/arch]$lsEvan__0000000013_0688689467.0001Evan__0000000018_0688689467.0001Evan__0000000014_0688689467.0001Evan__0000000019_0688689467.0001Evan__0000000017_0688689467.0001Evan__0000000020_0688689467.0001Evan__0000000021_0688689467.0001注意归档文件名evan后面的序号21,即group3的序号。
SQL>archive log listDatabase log mode Archive ModeAutomatic archival EnabledArchive destination/home/oracle/u01/app/oracle/arch/Oldest online log sequence20Next log sequence to archive22Current log sequence22下一个需要归档的log是22号,也就是group1。
6.开启归档后容易引发的问题1)数据库挂起归档启用了以后,数据库发生log切换的时候,会试图将上一个redo log的内容写入归档,如果写入不成功,这个redo log状态将被置成active,不能再次使用。
当数据库运行一段时间,所有的redo log用完,会引发数据库挂起,检查alertSID.log,会有以下报错:Fri Jun500:41:002009ORACLE Instance ora10glinux-Can not allocate log,archival requiredThread1cannot allocate new log,sequence25All online logs needed archivingCurrent log#3seq#24mem#0:/home/oracle/u01/app/oracle/oradata/ora10glinux/redo03.log重启问题依旧不能解决。