ORA-19815:
点击数:10000562发布日期:2023-02-05 12:56:32 来源:老鹰
现场检查发现,磁盘回闪区空间已满,数据库无法写入,导致数据库无法正常运行。
数据库警告日志错误如下:
Sqlplus /nolog --登录sqlplus
Show parameter bdump --查出警告日志的位置。
使用vi工具,查看警告日志的报错信息。
主要查看warning, 和ora-错误。
在出现故障的时段,查看警告日志报出了哪些错误。
查看警告日志和对应的trace文件发现:
ORA-19815:
WARNING:
db_recovery_file_dest_size of 50000m
*** 2022-09-01 21:20:56.648 4132 krsh.c
ARCH:
Error 19809 Creating archive log file to '/opt/oracle/flash_recovery_area/ORCL10G/archivelog/2022_09_01/o1_mf_1_52_%u_.arc'
*** 2022-09-01 21:20:56.648 2747 krsi.c
krsi_dst_fail: dest:1 err:19809 force:0 blast:1
WAIT #1: nam='log file sequential read'
ela= 5 log#=0 block#=0 blocks=0 obj#=-1 tim=1416104456648722
WAIT #1: nam='Disk file operations I/O'
ela= 15 FileOperation=5 fileno=0 filetype=3 obj#=-1 tim=1416104456648774
WAIT #1: nam='control file sequential read'
ela= 14 file#=0 block#=1 blocks=1 obj#=-1 tim=1416104456648863
重启数据库报错:
ORA-3113 "end of file on communication channel
日志显示不能创建归档日志。
2.3 原因分析
执行df -h查看文件系统利用率,发现文件系统正常。
执行 show parameter flashback
show parameter db_recovery_file_dest_size
查看回闪区使用率,发现回闪区已被归档日志占满。
由于crontab定时任务失效,归档日志无法自动删除。累计的归档日志文件过多,超过了回闪区的额定存储空间。说明归档日志将回闪区占满,
2.4 解决措施
1)解决此问题方法一:手工删除日志文件。
使用oracle用户,或root用户。
rm –rf /opt/oracle/flash_recovery_area/ORCL10G/archivelog/2022_09_01/o1*
不建议使用回闪区。
--关闭回闪区方法。
--set flashback back off
shutdown immediate;
startup mount;
alter database flashback off;
alter database open;
2)解决此问题方法二:将闪回区域阀值增大。
将回闪区参数值增大。在sqlplus中执行。
alter system set db_recovery_file_dest_size='80G';
--查看flashback是否开启:
select name,flashback_on from v$database;
--查看闪回恢复区及大小是否设置:
show parameter db_recovery;
--先设置闪回恢复区的大小:
alter system set db_recovery_file_dest_size='80G';
--再设置闪回恢复区路径:
alter system set db_recovery_file_dest='E:\oracle\product\10.2.0\db_recovery_file_dest';
--设置数据库回退的时间,默认1440分钟为一天时间:
alter system set db_flashback_retention_target = 1440;
3)解决此问题方法三:建议将归档日志的位置改到/arch下,不放在闪回区域。
首先在数据库服务器上建立/arch文件夹,然后修改归档日志文件的存储位置。
1、alter system set LOG_ARCHIVE_DEST_1='LOCATION=/arch' ;
2、SQL>shutdown immediate
3、SQL>startup mount
4、SQL>alter database archivelog;
5、SQL>alter database open;
6、alter system switch logfile;
4)解决此问题方法四:使用crontab重新配置归档日志自动删除定时任务。
crontab -e
重复验证自动删除是否成功,配置在五分钟之后删除归档日志,五分钟后查看是否自动删除成功。经过反复测试,自动删除正常。
处理结果:已解决,数据库恢复正常运行。
数据库警告日志错误如下:
Sqlplus /nolog --登录sqlplus
Show parameter bdump --查出警告日志的位置。
使用vi工具,查看警告日志的报错信息。
主要查看warning, 和ora-错误。
在出现故障的时段,查看警告日志报出了哪些错误。
查看警告日志和对应的trace文件发现:
ORA-19815:
WARNING:
db_recovery_file_dest_size of 50000m
*** 2022-09-01 21:20:56.648 4132 krsh.c
ARCH:
Error 19809 Creating archive log file to '/opt/oracle/flash_recovery_area/ORCL10G/archivelog/2022_09_01/o1_mf_1_52_%u_.arc'
*** 2022-09-01 21:20:56.648 2747 krsi.c
krsi_dst_fail: dest:1 err:19809 force:0 blast:1
WAIT #1: nam='log file sequential read'
ela= 5 log#=0 block#=0 blocks=0 obj#=-1 tim=1416104456648722
WAIT #1: nam='Disk file operations I/O'
ela= 15 FileOperation=5 fileno=0 filetype=3 obj#=-1 tim=1416104456648774
WAIT #1: nam='control file sequential read'
ela= 14 file#=0 block#=1 blocks=1 obj#=-1 tim=1416104456648863
重启数据库报错:
ORA-3113 "end of file on communication channel
日志显示不能创建归档日志。
2.3 原因分析
执行df -h查看文件系统利用率,发现文件系统正常。
执行 show parameter flashback
show parameter db_recovery_file_dest_size
查看回闪区使用率,发现回闪区已被归档日志占满。
由于crontab定时任务失效,归档日志无法自动删除。累计的归档日志文件过多,超过了回闪区的额定存储空间。说明归档日志将回闪区占满,
2.4 解决措施
1)解决此问题方法一:手工删除日志文件。
使用oracle用户,或root用户。
rm –rf /opt/oracle/flash_recovery_area/ORCL10G/archivelog/2022_09_01/o1*
不建议使用回闪区。
--关闭回闪区方法。
--set flashback back off
shutdown immediate;
startup mount;
alter database flashback off;
alter database open;
2)解决此问题方法二:将闪回区域阀值增大。
将回闪区参数值增大。在sqlplus中执行。
alter system set db_recovery_file_dest_size='80G';
--查看flashback是否开启:
select name,flashback_on from v$database;
--查看闪回恢复区及大小是否设置:
show parameter db_recovery;
--先设置闪回恢复区的大小:
alter system set db_recovery_file_dest_size='80G';
--再设置闪回恢复区路径:
alter system set db_recovery_file_dest='E:\oracle\product\10.2.0\db_recovery_file_dest';
--设置数据库回退的时间,默认1440分钟为一天时间:
alter system set db_flashback_retention_target = 1440;
3)解决此问题方法三:建议将归档日志的位置改到/arch下,不放在闪回区域。
首先在数据库服务器上建立/arch文件夹,然后修改归档日志文件的存储位置。
1、alter system set LOG_ARCHIVE_DEST_1='LOCATION=/arch' ;
2、SQL>shutdown immediate
3、SQL>startup mount
4、SQL>alter database archivelog;
5、SQL>alter database open;
6、alter system switch logfile;
4)解决此问题方法四:使用crontab重新配置归档日志自动删除定时任务。
crontab -e
重复验证自动删除是否成功,配置在五分钟之后删除归档日志,五分钟后查看是否自动删除成功。经过反复测试,自动删除正常。
处理结果:已解决,数据库恢复正常运行。
下一篇:Oracle参数优化
上一篇:ORA-600 kcbzib_kcrsds_1
图文推荐
序言
2020-04-19 查看:2377
第十五章:Oracle 12c介绍
2020-04-19 查看:2297
第十四章:常用Oracle工具
2020-04-19 查看:2032
第十三章:Oracle Golde...
2020-04-19 查看:2289
第十二章:DataGuard
2020-04-19 查看:1892