解决Oracle归档日志存满的问题

归档日志archivelog:

  1. 可以配置单个日志文件的大小(oracle安装时设置或安装后修改配置);
  2. 可以配置日志文件占用的(总)空间大小。
    日志文件产生的多少,主要取决于数据库中数据变化的频率。

一般配置项如下:
--以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;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容