基于ORA-19815闪回空间爆满问题的处理方法
闪回区爆满问题也是经常会遇到的问题,最关键的是闪回设置大小以及归档被默认存放在了闪回目录,恰巧今天又遇到了这个问题,就记录下处理步骤,仅供遇到这类问题的人参考。
一、错误现象描述
1)应用端错误信息
Error:2016-11-2611:45:25ORA-00257:Archivererror.ConnectASSYSDBAonlyuntilresolved. Error:2016-11-2611:45:25ORA-00257:Archivererror.ConnectASSYSDBAonlyuntilresolved. Error:2016-11-2611:45:25initconnpool:oneormoreconnopenerror.
2)数据库端错误信息
SatNov2612:13:142016 Errorsinfile/home/U01/app/oracle/diag/rdbms/testdb/testdb/trace/testdb_arc2_929.trc: ORA-19815:WARNING:db_recovery_file_dest_sizeof42949672960bytesis100.00%used,andhas0remainingbytesavailable. SatNov2612:13:142016 ************************************************************************ Youhavefollowingchoicestofreeupspacefromrecoveryarea: 1.ConsiderchangingRMANRETENTIONPOLICY.IfyouareusingDataGuard, thenconsiderchangingRMANARCHIVELOGDELETIONPOLICY. 2.BackupfilestotertiarydevicesuchastapeusingRMAN BACKUPRECOVERYAREAcommand. 3.Adddiskspaceandincreasedb_recovery_file_dest_sizeparameterto reflectthenewspace. 4.DeleteunnecessaryfilesusingRMANDELETEcommand.Ifanoperating systemcommandwasusedtodeletefiles,thenuseRMANCROSSCHECKand DELETEEXPIREDcommands. ************************************************************************ SatNov2612:13:142016 Errorsinfile/home/U01/app/oracle/diag/rdbms/testdb/testdb/trace/testdb_arc2_929.trc: ORA-19809:limitexceededforrecoveryfiles ORA-19804:cannotreclaim524288000bytesdiskspacefrom42949672960limit
二、错误分析
从应用日志看,是由于不能归档导致的DB连接池不能被初始化打开,基本可以判断是由于数据库的归档文件所在磁盘空间满导致。
从数据库日志查看发现确实是由于闪回空间已经爆满,通过查看服务器磁盘空间以及闪回空间大小即可再次验证。
三、详细处理过程
1)登陆数据库服务器,查看磁盘空间使用信息
[oracle@teststdtrace]$df-h FilesystemSizeUsedAvailUse%Mountedon /dev/sda59.9G2.6G6.9G28%/ tmpfs32G18M32G1%/dev/shm /dev/sda1388M62M307M17%/boot /dev/sda61.6T506G1017G34%/home /dev/sda220G508M19G3%/var
2)查看数据库错误日志,发现闪回空间爆满
cd/home/U01/app/oracle/diag/rdbms/testdb/testdb/trace tail-n35alert_testdb.log
ORA-19815:WARNING:db_recovery_file_dest_sizeof42949672960bytesis100.00%used,andhas0remainingbytesavailable.
3)登陆数据库,查看闪回路径以及闪回空间使用情况
查看闪回空间设置大小
SQL>showparameterrecover; NAMETYPEVALUE ----------------------------------------------------------------------------- db_recovery_file_deststring/home/U01/app/oracle/fast_recovery_area db_recovery_file_dest_sizebiginteger40G db_unrecoverable_scn_trackingbooleanTRUE recovery_parallelisminteger0
或者利用SQL查看闪回路径
Colnamefora60; Setline200; SQL>select*fromv$recovery_file_dest; NAMESPACE_LIMITSPACE_USEDSPACE_RECLAIMABLENUMBER_OF_FILESCON_ID ---------------------------------------------------------------------------------------------------------------------- /home/U01/app/oracle/fast_recovery_area4.2950E+102.1538E+100890
查看闪回空间所在磁盘大小
SQL>!df-h/home/U01/app/oracle/fast_recovery_area FilesystemSizeUsedAvailUse%Mountedon /dev/sda61.6T504G1019G34%/home
查看闪回目录使用大小
SQL>!du-hs/home/U01/app/oracle/fast_recovery_area 40G/home/U01/app/oracle/fast_recovery_area
查看闪回空间使用情况
SQL>select*fromV$RECOVERY_AREA_USAGE; FILE_TYPEPERCENT_SPACE_USEDPERCENT_SPACE_RECLAIMABLENUMBER_OF_FILESCON_ID ------------------------------------------------------------------------------------------- CONTROLFILE0000 REDOLOG7.45070 ARCHIVEDLOG1000760 BACKUPPIECE0000 IMAGECOPY0000 FLASHBACKLOG0000 FOREIGNARCHIVEDLOG0000 AUXILIARYDATAFILECOPY0000
4)删除归档、调整闪回区大小
从上面看确实是闪回空间满了,而占用闪回区满的罪魁祸首就是归档日志。要解决的方法有两个:
方案1:删除多余的归档
最佳删除归档的途径是通过rman工具做,如果直接删除文件数据库是识别不到闪回区释放的。
[oracle@teststdtrace]$rmantarget/ RecoveryManager:Release12.1.0.2.0-ProductiononSatNov2613:00:282016 Copyright(c)1982,2014,Oracleand/oritsaffiliates.Allrightsreserved. connectedtotargetdatabase:TESTDB(DBID=2708971821) RMAN>crosscheckarchivelogall; RMAN>deleteexpiredarchivelogall; RMAN>DELETENOPROMPTARCHIVELOGALLCOMPLETEDBEFORE'SYSDATE-7';
或者利用下面的语句删除七天前的归档日志
RMAN>DELETENOPROMPTARCHIVELOGUNTILTIME'SYSDATE-7';
注意:(一般删除归档腾出足够的闪回区后,建议调整归档路径或者调整足够闪回区大小)
方案2:调整闪回区大小
SQL>altersystemsetdb_recovery_file_dest_size=100Gscope=both; altersystemsetdb_recovery_file_dest_size=100Gscope=both * ERRORatline1: ORA-65040:operationnotallowedfromwithinapluggabledatabase ###数据库为12c,不允许在pdb下操作,需要切换到sys下操作 SQL>conn/assysdba; Connected. SQL>altersystemsetdb_recovery_file_dest_size=100Gscope=both; Systemaltered.
5)查看闪回区使用情况和其大小
[oracle@teststdtrace]$du-hs/home/U01/app/oracle/fast_recovery_area 27G/home/U01/app/oracle/fast_recovery_area SQL>select*fromV$RECOVERY_AREA_USAGE; FILE_TYPEPERCENT_SPACE_USEDPERCENT_SPACE_RECLAIMABLENUMBER_OF_FILESCON_ID ------------------------------------------------------------------------------------------- CONTROLFILE0000 REDOLOG2.98070 ARCHIVEDLOG17.080820 BACKUPPIECE0000 IMAGECOPY0000 FLASHBACKLOG0000 FOREIGNARCHIVEDLOG0000 AUXILIARYDATAFILECOPY0000 8rowsselected.
6)通知系统管理员启动应用,正常启动
至此问题得以彻底解决
以上这篇基于ORA-19815闪回空间爆满问题的处理方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。