1、删除多余的归档日志
在ORACLE10G中,默认的归档路径为$ORACLE_BASE/flash_recovery_area。对于这个路径,ORACLE有一个限制,就是默认只能有2G的空间给归档日志使用,可以使用下面两个SQL语句去查看它的限制:
1. select * from v$recovery_file_dest;
2. show parameter db_recovery_file_dest(这个更友好直观一些)
当归档日志数量大于2G时,那么就会由于没有更多的空间去容纳更多的归档日志会报无法继续归档的错误。
如:“RA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 10017792 bytes disk space from 2147483648 limit
ARC0: Error 19809 Creating archive log file to '/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_04_30/o1_mf_1_220_0_.arc' ”这时我们可以修改它的默认限制,比如说将它增加到5G或更多,也可以将归档路径重新置到别的路径,就不会有这个限制了。
更改限制语句如下:
alter system set db_recovery_file_dest_size=5368709102 (这里为5G 5x1024x1024x1024=5G)
alter system set db_recovery_file_dest_size=10737418240
进入
rman target username/password@database
执行下边的交叉校验
crosscheck archivelog all;
此时可能会提示校验失败,类似下边的提示:
RMAN> crosscheck archivelog all;
释放的通道: ORA_DISK_1
分配的通道: ORA_DISK_1
通道ORA_DISK_1: sid=14 devtype=DISK
对归档日志的验证失败
…………….
这时,需要执行exit退出rman。
在命令提示符窗口下执行下边的字符集设置
C:>set nls_lang=american_america.zhs16gbk
然后再进入rman ,再执行crosscheck archivelog all;一般不会再出现这样的问题了。
在命令窗口里面执行
DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
说明
SYSDATA-7,表明当前的系统时间7天前,before关键字表示在7天前的归档日志,如果使用了闪回功能,也会删除闪回的数据。
同样道理,也可以删除从7天前到现在的全部日志,不过这个命令要考虑清楚,做完这个删除,最好马上进行全备份数据库
DELETE ARCHIVELOG FROM TIME 'SYSDATE-7';
UNIX/LINUX下也可以通过FIND找到7天前的归档数据,使用EXEC子操作删除
find /oraarchive -xdev -mtime +7 -name "*.dbf" -exec rm -f {} ;
这样做仍然会在RMAN里留下未管理的归档文件
仍需要在RMAN里执行下面2条命令
crosscheck archivelog all;
delete expired archivelog all;
所以还不如上面的方法好用,不过用FIND的好处就是,可以在条件上,和EXEC子项上做很多操作,实现更复杂的功能
2、report obsolete及delete obsolete删除过期备份命令
使用report obsolete命令报告过期备份
RMAN> report obsolete;
RMAN retention policy will be applied to the command
RMAN retention policy is set to redundancy 1
Report of obsolete backups and copies
Type Key Completion Time Filename/Handle
-------------------- ------ ------------------ --------------------
Backup Set 125 01-NOV-04
Backup Piece 125 01-NOV-04 /data1/oracle/orabak/full_1_541045804
Backup Set 131 04-NOV-04
Backup Piece 131 04-NOV-04 /data1/oracle/orabak/full_AVATAR2_20041104_131
....
使用delete obsolete命令删除过期备份:
RMAN> delete obsolete;
RMAN retention policy will be applied to the command
RMAN retention policy is set to redundancy 1
using channel ORA_DISK_1
Deleting the following obsolete backups and copies:
Type Key Completion Time Filename/Handle
-------------------- ------ ------------------ --------------------
Backup Set 125 01-NOV-04
Backup Piece 125 01-NOV-04 /data1/oracle/orabak/full_1_541045804
....
Archive Log 2704 17-DEC-04 /opt/oracle/oradata/avatar2/archive/1_2716.dbf
Archive Log 2703 17-DEC-04 /opt/oracle/oradata/avatar2/archive/1_2715.dbf
Archive Log 2702 17-DEC-04 /opt/oracle/oradata/avatar2/archive/1_2714.dbf
Do you really want to delete the above objects (enter YES or NO)? yes
deleted backup piece
backup piece handle=/data1/oracle/orabak/full_AVATAR2_20041206_173 recid=173 stamp=544156241
.....
注:在执行删除的时候,可能会提示下边的报错信息:
ORA-19554:配置设备时出错,设备类型: SBT_TAPE,设备名称:
ORA-27211:未能加载介质管理库
解决方法,运行下边的命令:
RMAN> allocate channel for maintenance type disk;
RMAN> crosscheck archivelog all;
RMAN> delete obsolete;
3、Oracle RMAN的show,list,crosscheck,delete
Oracle RMAN的show,list,crosscheck,delete命令整理
1、SHOW命令:
显示rman配置:RMAN> show all;
2、REPORT命令:
2.1、RMAN> report schema 报告目标数据库的物理结构;
2.2、RMAN>report need backup days=3; 报告最近3天没有被备份的数据文件;
2.3、RMAN> report need backup days 3 tablespace users; 在USERS表空间上3天未备份的数据文件;
2.4、RMAN> report need backup incremental 3; 报告恢复数据文件需要的增量备份个数超过3次的数据文件;
2.5、RMAN> report need backup redundancy 2 database; 报告备份文件低于2份的所有数据文件;
RMAN>report need backup redundancy=2;
2.6、RMAN> report need backup recovery window of 6 days; 报告文件报表的恢复需要超过6天的归档日志的数据文件;
2.7、RMAN> report unrecoverable; 报告数据库所有不可恢复的数据文件;
2.8、RMAN> report obsolete redunndancy 2;报告备份次数超过2次的陈旧备份;
2.9、RMAN>report obsolete; 报告多余的备份;
3、LIST命令:列出备份信息
3.1、列出数据文件备份集
RMAN>list backup 列出详细备份;
RMAN>list expired backup 列出过期备份;
RMAN> list backup of database; 列出所有数据文件的备份集;
RMAN> list backup of tablespace user01;列出特定表空间的所有数据文件备份集;
3.2、RMAN> list backup of controlfile 列出控制文件备份集;
3.3、RMAN> list backup of archivelog all 列出归档日志备份集详细信息;
RMAN>list archivelog all; 列出归档日志备份集简要信息
3.4、RMAN> list backup of spfile 列出SPFILE备份集;
3.5、RMAN> list copy of datafile 5 列出数据文件映像副本;
3.6、RMAN> list copy of controlfile 列出控制文件映像副本;
3.7、RMAN> list copy of archivelog all 列出归档日志映像副本;
3.8、RMAN> list incarnation of database 列出对应物/列出数据库副本;
3.9、RMAN>list backup summary; 概述可用的备份;
B表示backup
F表示FULL
A表示archive log
0 1表示incremental backup
S说明备份状态(A AVAILABLE X EXPIRED )
3.10、RMAN>list backup by file 按备份类型列出备份;
按照数据文件备份,归档日志备份,控制文件备份,服务器参数文件备份 列出
4、CROSSCHECK命令:校验备份信息
4.1、RMAN> crosscheck backup 核对所有备份集;
4.2、RMAN> crosscheck backup of database 核对所有数据文件的备份集;
4.3、RMAN> crosscheck backup of tablespace users 核对特定表空间的备份集;
4.4、RMAN> crosscheck backup of datafile 4 核对特定数据文件的备份集;
4.5、RMAN> crosscheck backup of controlfile 核对控制文件的备份集;
4.6、RMAN> crosscheck backup of spfile 核对SPFILE的备份集;
4.7、RMAN> crosscheck backup of archivelog sequence 3核对归档日志的备份集;
4.8、RMAN> crosscheck copy 核对所有映像副本;
4.9、RMAN> crosscheck copy of database 核对所有数据文件的映像副本;
4.10、RMAN> crosscheck copy of tablespace users 核对特定表空间的映像副本;
4.11、RMAN> crosscheck copy of datafile 6 核对特定数据文件的映像副本;
4.12、RMAN> crosscheck copy of archivelog sequence 4 核对归档日志的映像副本;
4.13、RMAN> crosscheck copy of controlfile 核对控制文件的映像副本;
4.14、RMAN> crosscheck backup tag='SAT_BACKUP';
4.15、RMAN> crosscheck backup completed after 'sysdate - 2'
4.16、RMAN> crosscheck backup completed between 'sysdate - 5' and 'sysdate -2 '
4.17、RMAN> crosscheck backup device type sBT;
4.18、RMAN> crosscheck archivelog all;
4.19、RMAN> crosscheck archivelog like '%ARC00012.001'
4.20、RMAN> crosscheck archivelog from sequence 12;
4.21、RMAN> crosscheck archivelog until sequence 522;
5、DELETE:删除备份
5.1、RMAN> delete obsolete; 删除陈旧备份;
5.2、RMAN> delete expired backup;删除EXPIRED备份
5.3、RMAN> delete expired copy; 删除EXPIRED副本;
5.4、RMAN> delete backupset 19; 删除特定备份集;
5.5、RMAN> delete backuppiece ''d:\backup\DEMO_19.bak'' 删除特定备份片;
5.6、RMAN> delete backup 删除所有备份集;
5.7、RMAN> delete datafilecopy ''d:\backup\DEMO_19.bak'' 删除特定映像副本;
5.8、RMAN> delete copy 删除所有映像副本;
5.9、RMAN> delete archivelog all delete input;
RMAN> delete backupset 22 format = ''d:\backup\%u.bak'' delete input
在备份后删除输入对象;
5.10、RMAN> delete backupset id;
4、em控制台对备份的操作
使用sys用户的sysdba权限进入em控制台
在“维护”模块下,点击进入到“管理当前备份”操作选项。
在“管理当前备份”选项中可以列出所有的备份集
如果要删除备份,可以在下边的列表中选中要删除的备份集,执行“删除”命令,这时会有一个确认提示的页面:
点击“是”按钮,进行删除操作。如果提示操作“删除”失败,可以将上一步要执行的命令在命令提示符下使用rman命令来执行。
5、小结
像归档日志之类的备份,备份的文件夹是在一个叫flash_recovery_area的目录下边。
1、归档日志备份在ARCHIVELOG这个文件夹下边,上边对归档日志的操作基本上是对这个文件夹下的文件进行操作。
2、obsolete删除操作基本上是对AUTOBACKUP这个文件夹下的文件进行操作。(不是十分的确定)
3、delete backup操作基本上是对BACKUPSET文件夹和DATAFILE文件夹的内容进行操作的。
4、在em管理后台,最下边有一个“相关链接”模块,下有“作业”选项链接,可以看到所有数据库备份操作历史作业记录,在此可以对相应的备份作业进行修改操作。
另外如果要添加备份操作作业时,需要在“维护”模块下找到“调试备份”链接,推荐使用“Oracle建议的备份”来添加备份操作作业。
----查看恢复空间使用情况:
select * from v$recovery_file_dest;