oracle 归档日志处理,解决Oracle归档日志存满的问题

归档日志archivelog:

可以配置单个日志文件的大小(oracle安装时设置或安装后修改配置);

可以配置日志文件占用的(总)空间大小。

日志文件产生的多少,主要取决于数据库中数据变化的频率。

一般配置项如下:

--以dba角色登录

conn / as sysdba

--(建议)重新指定归档日志存储目录,需注意目录一定要先建好,linux下操作系统的oracle用户要有权限访问此目录

alter system set log_archive_dest_1='location=D:\archivelog' scope=spfile;

alter system set log_archive_start=TRUE scope=spfile;

--定义日志文件的命名格式

alter system set log_archive_format='arch%t_%s_%r.arc' scope=spfile;

--修改日志文件占用的(总)空间大小

(建议)alter system set db_recovery_file_dest_size= 40G;(与日志删除频率配合,查看此参数:show parameter db_recovery_file_dest_size)

--重新挂载后生效

shutdown immediate;

startup mount;

alter database archivelog;

alter database open;

1.Oracle重启的时候提示这个错,原因是因为闪回归档区的空间满了

ORA-03113: end-of-file on communication channel Process ID: 14263 Session ID: 335 Serial number: 5

直接startup是起不来的

下面是出错到解决的全过程:

sqlplus / as sysdba,进入数据库

startup mount;启动mount状态

alter database mount;

alter database open;

报如下错误:

*

ERROR at line 1:

ORA-03113: end-of-file on communication channel

Process ID: 252

Session ID: 1 Serial number: 3

到这一个步骤,就停下来。

nomount 状态 数据库获取spfile的配置来启动数据库,其实这个时候可以通过 show parameter,查看 background_dump_dest 这个参数 来了解alter 文件到底存放在那里了。

mount 状态,数据库实例已经获取了控制文件.控制文件里面有数据文件的指针,等等很多信息。

background_dump_dest /u01/app/oracle/fast_recovery_area

然后查看这个日志:(/u01/app是安装路径)

/u01/app/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log

最后有这两句

Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_arc1_7251.trc: ORA-19815: WARNING: db_recovery_file_dest_size of 4385144832 bytes is 100.00% used, and has 0 remaining bytes available.

查看这个文件,查看错误信息:(上面日志里记录的)

/u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_arc1_7251.trc

ORA-19815:这一行提示了db_recovery_file_dest_size使用100%,闪回归档区满了

/u01/app/oracle/fast_recovery_area //是存档日志存放目录

现在做的操作是删除存档日志或者增大闪回恢复区(当然还有别的方法)

我的处理方法是增大闪回恢复区,下边是我的操作过程:

(确定数据库是关闭的或者修改完重启数据库 )

#SQL> show parameter recover

SQL> show parameter db_recovery_file_dest_size;

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

db_recovery_file_dest_size big integer 2G

SQL> alter system set db_recovery_file_dest_size=10G scope=spfile;

系统已更改。

SQL> alter database open;

数据库已更改。

SQL> show parameter db_recovery_file_dest_size;

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

db_recovery_file_dest_size big integer 3G

SQL>alter database open noresetlogs;

Database altered. //提示这个就好

然后查看数据库状态

select open_mode from v$database;

显示READ WRITE就OK了。

2.客户使用过程中不能登录业务系统,经检查后发现后台日志报错

ORA-00257: archiver error. Connect internal only, until freed.

该错误是由于归档日志满了,造成的。

查看了下V$FLASH_RECOVERY_AREA_USAGE,看看归档目录使用的情况。果然是归档满了。

SQL> SELECT * FROM V$FLASH_RECOVERY_AREA_USAGE;

FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES

------------ ------------------ ------------------------- ---------------

CONTROLFILE 0 0 0

ONLINELOG 0 0 0

ARCHIVELOG 99.9 0 255

BACKUPPIECE 0 0 0

IMAGECOPY 0 0 0

FLASHBACKLOG 0 0 0

注:可以看出,ARCHIVELOG日志已经达到99.9%了。造成归档满的原因是因为有一个用户在做大量更新操作

同样是增大闪回恢复区(参考上面第一种错误解决方法)

SQL> select * from v$flash_recovery_area_usage; --查看空间占用率

SQL> select * from v$recovery_file_dest; --查看归档日志的存放位置;

rman清空归档日志方式

$ rman

RAM> connect target /

RAM> crosscheck archivelog all; --查看可以所有的归档文件

RAM> delete expired archivelog all; --清空过期的归档文件

如何确认归档日志是否过期,rman有一个保留策略,可以定义多少天之前的日志算为过期;

RAM> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 14 DAYS;

让恢复窗口成为14天大小。

RAM> show all; --查看所有的rman策略.

SQL> select count(*) from v$archived_log where archived='YES' and deleted='NO'; --查看所有归档,未删除的归档日志

定时清理归档日志

将clear_arc.sh加入定时任务

#crontab -l

00 00 * * * clear_arc.sh

#clear_arc.sh

rman target / nocatalog cmdfile clear.rcv

#clear.rcv

DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';

crosscheck archivelog all;

delete expired archivelog all;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值