rman备份中出现的ORA-19804和RMAN-06056错误总结及解决方案

来源:互联网 发布:数据结构与算法c pdf 编辑:程序博客网 时间:2024/05/20 02:51
正常情况下rman target / , backup database即可完成备份
报错:ORA-19804: cannot reclaim 48156160 bytes disk space from 4039114752 limit
1.查看数据库归档状态archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     34835
Next log sequence to archive   34841
Current log sequence           34841
若数据库非归档模式,则启动到归档模式
SQL> shutdown immediate
SQL> startup mount
SQL> alter database archivelog;
SQL> alter database open;
上面的存档终点USE_DB_RECOVERY_FILE_DEST默认就是闪回恢复区
($ORACLE_BASE/flash_recovery_area),可以通过下面的SQL查看闪回恢复区的信息。
查看闪回恢复区的信息
SQL> show parameter db_recover
或通过查询v$recovery_file_dest视图查看闪回恢复的限制信息。
SQL> select name,SPACE_LIMIT,SPACE_USED from v$recovery_file_dest;

默认情况下,归档日志会存放到闪回恢复区(D:\oracle\flash_recovery_area)内,如果闪回恢复区已经使用到2G,归档日志就有可能无法继续归档,数据库夯住,通常的解决方法是增大闪回恢复区,可以用以下SQL实现。

SQL> alter system set db_recovery_file_dest_size=3G;
也可以修改归档日志的路径,将归档日志放到其他不受限制的路径下来解决这个问题,可通过下面的SQL来修改归档日志的存放路径。
SQL> alter system set log_archive_dest_1='location=D:\arch';
然后将数据库启动到MOUNT状态,将数据库修改为归档模式后建数据库启动到OPEN状态。
SQL> shutdown immediate
SQL> startup;
再次查看数据库的归档情况。
检查一下flashrecovery area的使用情况:
SYS@orcl>select * from v$flash_recovery_area_usage;
可以用rman 删除过期的备份文件与归档文件(本人的是测试机可以删除所有备份文件与归档文件,在生产库则要权衡要删除的文件)
RMAN> delete backupset;
RMAN> delete archivelog all;

报错:RMAN-06056: could not access datafile 15
查看这个文件是什么
SQL> select file#,name from v$datafile;
查看基于哪个表空间
sql> select a.file#,a.name,b.name from v$datafile a,v$tablespace b where a.ts#=b.ts#;
确定这个数据文件是否存在
sql> ! ls /opt/app/oracle/product/11.2.0/dbhome_1/dbs/MISSING00015
若该数据表空间不是USER表可删除。若是属于USER表,则需要恢复此数据。