浅谈Oracle归档日志

2018-11-12  本文已影响0人  神力无敌_61b6

什么是归档日志

归档日志(Archive Log)是非活动的重做日志备份.通过使用归档日志,可以保留所有重做历史记录,当数据库处于ARCHIVELOG模式并进行日志切换式,后台进程ARCH会将重做日志的内容保存到归档日志中.当数据库出现介质失败时,使用数据文件备份,归档日志和重做日志可以完全恢复数据库。


如何开启归档模式

[oracle@osc ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Mon Nov 12 17:36:13 2018

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> archive log list; 
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     1124
Current log sequence           1126

由上可见,数据库未开启归档

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>  startup mount;
ORACLE instance started.

Total System Global Area 2421825536 bytes
Fixed Size                  2255632 bytes
Variable Size             620758256 bytes
Database Buffers         1778384896 bytes
Redo Buffers               20426752 bytes
Database mounted.
SQL> alter database archivelog;

Database altered.

SQL> alter database open;

Database altered.

再观察归档情况

SQL> archive log list; 
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     1124
Next log sequence to archive   1126
Current log sequence           1126

归档已经开启


经常会遇到的问题

错误代码:ORA-00257

在项目中可能经常会遇到ORA-00257归档写满这种情况,先看一下官方描述:

[oracle@osc ~]$ oerr ORA 00257
00257, 00000, "archiver error. Connect internal only, until freed."
// *Cause:  The archiver process received an error while trying to archive
//       a redo log.  If the problem is not resolved soon, the database
//       will stop executing transactions. The most likely cause of this
//       message is the destination device is out of space to store the
//       redo log file.
// *Action:  Check archiver trace file for a detailed description
//        of the problem. Also verify that the
//       device specified in the initialization parameter
//       ARCHIVE_LOG_DEST is set up properly for archiving.

也就是说当空间问题导致归档日志无法继续写入的时候会报错误,当前也只能允许内部链接。
这种情况下也只能最快速的清理归档日志。

清理归档日志

[oracle@osc ~]$ rman target /

Recovery Manager: Release 11.2.0.4.0 - Production on Mon Nov 12 17:48:41 2018

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

connected to target database: ORCL (DBID=1511487649)
RMAN> crosscheck archivelog all; 
RMAN> delete archivelog until time 'sysdate-1';
RMAN> delete expired archivelog all;

分别看一下这三句话的意思

crosscheck archivelog all

验证的是DB的归档日志即log_archive_dest参数指定位置的文件,当手工删除了归档日志以后,Rman备份会检测到日志缺失,从而无法进一步继续执行。
所以此时需要手工执行crosscheck过程,之后Rman备份可以恢复正常。
也就是说当无法进入rman的时候,可以直接删除归档日志文件,然后再执行这条语句!

delete archivelog until time 'sysdate-1'

这句话是删除当前时间-1天的归档日志

-3就表示保留3天归档日志

delete expired archivelog all

删除过期或无效的归档日志
强烈建议:在删除归档日志后做一次物理备份


为什么会产生上面的问题

当归档日志每天都有大量的生成的时候,说明数据库存在了大量DML语句,而归档日志就是记录这些操作,所以我们要考虑能不能避免这些操作,如:

DML语句:SQL语言中,负责对数据库对象运行数据访问工作的指令集,以INSERT、UPDATE、DELETE三种指令为核心
非关系数据库如文档型文数据MongoDB、键值数据库Redis等

<b style="color:red">在了解了归档日志的副作用后,是否觉得不开启归档模式,更省心一些呢?</b>

下面我们看一看归档模式的优缺点(摘自网络)


归档模式和非归档模式的优缺点

归档模式的优点
归档模式的缺点
非归档模式的缺点
非归档模式的优点

非归档模式不生成归档日志,从数据安全角度来说,这种模式缺点是主要的,而优点可以忽略不计。


在了解了归档模式和非归档模式的优缺点后,选择哪种模式各位心里也有点谱,在工作中都应该考虑实际情况去做出合适的选择。最后也请大家一起总结、归纳
上一篇 下一篇

猜你喜欢

热点阅读