首页 > 数据库 > Oracle > ORA-16014 错误导致生产机挂起
有一天客户反映网站上不去了,报一数据库错误,致使无法建立新的连接。赶紧查看系统告警日志,发现刷新很快,报的错误为:
ARC1: Failed to archive log 1 thread 1 sequence 3108
Errors in file /oradata/admin/db/bdump/db_arc1_647390.trc:
ORA-16014: log 1 sequence# 3108 not archived, no available destinations
ORA-00312: online log 1 thread 1: ‘/oradata/redo01.log'
ARC0: Failed to archive log 5 thread 1 sequence 3121
Errors in file /oradata/admin/db/bdump/db_arc0_331790.trc:
ORA-16014: log 5 sequence# 3121 not archived, no available destinations
ORA-00312: online log 5 thread 1: '/oradata/redo05.log'
经查看有两个归档目录,其中一个归档目录所在的磁盘空间已满,问题就应该在这。
由于是生产机不能多考虑,关掉磁盘满的那个归档目录,系统恢复;
回过头来想一想,这是什么原因引起的?
因为其中一个归档目录所在磁盘空间满了就导致数据库Hang住了,我分析的原因是这样的,
希望与大家分享。
从以上错误可看出只有log1和log5报错了,那另外三个日志组是什么状态呢?我的分析是
已满,在等待写入磁盘。试想一下,如果log1的日志组写满了,他会同时写到两个归档目录
中,由于ARC1所在目录的磁盘已满,归档失败,而ARC0归档成功。这样ARC1就等待磁盘有可用
空间,而ARC0进程执行成功,所以切换到log2(可写),很快log2也满了,于是它等待ARC1
的归档完成,但ARC0成功了,所以切换到了log3(可写),很快log3也满了,它也在等待ARC1
的归档完成,而ARC0完成了,所以成功切换到了log4(可写),很快log4也写满了,它同样
也等待ARC1的归档完成,而ARC0完成了,所以成功切换到了log5(可写),很快log5也写满了,
ARC0成功归档了,但ARC1还没等到可用磁盘空间,这时候ARC0努了,转了一圈了你ARC1还跟
不上,于是ARC0罢工了,系统Hang住了;不知道说明白没,嘿嘿!
经查明,出现以上情况是由于新上了一套系统,对数据库的读写很大,导致产生了大量
归档;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9838838/viewspace-1014170/ ,如需转载,请注明出处,否则将追究法律责任。