归档日志与在联机日志

redolog:重做日志,记录数据库得更改,(原理:在数据更新操作commit前,将更改得sql脚本写入重做日志。主要用于数据库增量备份和增量恢复)

在线重做日志(联机重做日志):以sql脚本得形式实时记录数据库得数据更新,换句话说,实时保存已执行得sql脚本到在线日志文件中(按照特定得格式)

归档重做日志:当条件满足时,Oracle将在线重做日志以文件形式保存到硬盘(持久化)

条件满足:当在线重做日志写满时(达到一定得空间配额),如果数据库处于归档模式,则会将在线日志归档到硬盘,成为归档日志。如果数据库处于非归档模式,则不进行归档操作,当前在线日志得内容会被下一次重新写入覆盖而无法保存。

当前归档日志组写满后,Oracle会切换到下一组日志,继续写入,这样循环切换,当处于归档模式下,切换至原已写满得日志组,若该日志组归档完毕则覆盖写入,若没有则只能先写入日志缓冲区,等待归档完毕后再覆盖写入。若是非归档模式,直接覆盖写入。

查看归档路径是否已设置(为空表示未设置):show parameter archive;

设置归档路径:alter system set log_archive_dest='/u01/app/oracle/archivelog1' scope=spfile;

alter system set log_archive_duplex_dest='/u01/app/oracle/archivelog2' scope=spfile;

alter system set log_archive_format='arch_%t_%s_%r.arc' scope=spfie;

设置完毕重启实例。

查看归档路径下是否存在文件或文件夹

ho ls /u01/app/oracle/archivelog1

ho ls /u01/app/oracle/archivelog2

归档日志写满解决办法

(1)增大闪回恢复区,

alter system set db_recovery_file_dest_size=10g;

再次查看:show parameter db_recovery;

(2)修改归档日志路径,将日志放在内存不受限制得路径下,指定得location目录要存在且有Oracle的权限。

alter system set log_archive_dest_1='location=d:/u01/oracle/archive';

重启数据库查看修改后是否成功archive log list;

查看恢复区使用情况

select * from v$recovery_file_dest;

你可能感兴趣的:(归档日志与在联机日志)