Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2445097
  • 博文数量: 328
  • 博客积分: 4302
  • 博客等级: 上校
  • 技术积分: 5486
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-01 11:14
个人简介

悲剧,绝对的悲剧,悲剧中的悲剧。

文章分类

全部博文(328)

文章存档

2017年(6)

2016年(18)

2015年(28)

2014年(73)

2013年(62)

2012年(58)

2011年(55)

2010年(28)

分类: Oracle

2013-09-16 21:21:48

Archivelog并不能直接得从OS层直接物理删除,因为archivelog的相关信息是记录在controlfile中的,当物理删除后不会改变controlfile的设置。并且在查询相关的动态视图(例如v$archived_log)时,该部分日志仍然标注为存在。也就是说Oracle并不认为这些日志被删除了,所以在删除archivelog的时候,需要我们在其他地方做一些设置。 

一、使用RMAN清除物理删除后的记录 

可以使用RMAN来删除archivelog,具体可以按以下步骤操作: 
1、物理删除archivelog 
2、进入RMAN 
3、crosscheck archivelog all; 
4、delete expired archivelog all; 
这样就在一些Oracle的记录中查不到相应的archivelog记录了。 


二、直接使用RMAN删除archivelog 

其实在RMAN中是可以使用命令直接将ARCHIVELOG删除的,命令如下: 
RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7'; 
表示删除7天以前的所有archivelog,但是这个命令的缺点是无法对archivelog进行细致的划分。 


三、使用RMAN备份achivelog后删除 

这是一种最为稳妥的方法了,使用RMAN备份archivelog,备份后全部删除 
backup format '/u01/arch_%T_%s_%U' archivelog all delete input; 
或者 
backup database plus archivelog;

附:
list backup 命令

点击(此处)折叠或打开

  1. RMAN> list backup of archivelog all;
  2. 列出所有archive log 备份

  3. RMAN> list backup of archivelog from logseq 100 until logseq 120;
  4. 列出archive log 从100到120

  5. RMAN> list backup of archivelog sequence between 100 and 110;
  6. 列出archive log 从100到120
  7. –说明:between……and只能使用sequence,而不能使用logseq

  8. RMAN> list backup of archivelog from logseq 100;
  9. 列出seq大于等于100的archive log

  10. RMAN> list backup of archivelog low logseq 120;
  11. 列出seq大于等于120的archive log

  12. RMAN> list backup of archivelog sequence 100;
  13. 列出seq为100的archive log
  14. –说明:在对于rman中关于archivelog的操作中logseq与sequence作用相同,但是建议尽量使用sequence

  15. RMAN> list backup of archivelog logseq 85;
  16. 列出seq为85的archive log

  17. RMAN> list backup of archivelog until logseq 85;
  18. 列出seq小于等于85的archive log

  19. RMAN> list backup of archivelog high logseq 40;
  20. 列出seq小于等于40的archive log

  21. RMAN> list backup of archivelog from time ‘sysdate-7′;
  22. 列出7天以前的archive log
list archivelog命令

点击(此处)折叠或打开

  1. RMAN> list archivelog until time 'sysdate-1';
  2. 此时是按照归档日志开始时间即fisrt_time作为截止时间

  3. RMAN> list archivelog all completed before 'sysdate-1';
  4. 是按照归档日志完成时间即completion_time作为截止时间

  5. SQL> select THREAD#,sequence#,FIRST_TIME,NEXT_TIME,COMPLETION_TIME
  6.   2 from v$archived_log order by thread#,sequence#;
配置和delete

点击(此处)折叠或打开

  1. RMAN> run {
  2. 2> set archivelog destination to '/opt/oracle/oradata/test/newlog';
  3. 3> restore archivelog low logseq 40;
  4. 4> }
  5. 从seq为40开始,恢复到/opt/oracle/oradata/test/newlog中
  6. –说明:list backup of archivelog中限定日志的位置也适合restore archivelog

  7. RMAN> backup archivelog sequence between 100 and 110 format '/tmp/text_test.rman' delete input;
  8. 备份seq为100至110的archive log
  9. –说明:list backup of archivelog中限定日志的位置也适合backup archivelog

  10. RMAN>DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
  11. 删除7天前archive log

  12. RMAN>DELETE ARCHIVELOG low logseq 40;
  13. 删除seq大于等于40的archive log

  14. RMAN> crosscheck archivelog all;

  15. RMAN> delete expired archivelog all;
  16. 删除无效archive log
  17. –说明:DELETE ARCHIVELOG中限定日志的位置也适合restore archivelog


四、备份还原,恢复数据库 

可以参考这个博文,http://blog.csdn.net/leshami/article/details/6032739
  1. 1、切换服务器归档模式,如果已经是归档模式可跳过此步:
  2. %sqlplus /nolog (启动sqlplus)
  3. SQL> conn / as sysdba (以DBA身份连接数据库)
  4. SQL> shutdown immediate; (立即关闭数据库)
  5. SQL> startup mount (启动实例并加载数据库,但不打开)
  6. SQL> alter database archivelog; (更改数据库为归档模式)
  7. SQL> alter database open; (打开数据库)
  8. SQL> alter system archive log start; (启用自动归档)
  9. SQL> exit (退出)

  10. 2、连接:
  11. %rman target=rman/rman@mydb (启动恢复管理器)

  12. 3、基本设置:
  13. RMAN> configure default device type to disk; (设置默认的备份设备为磁盘)
  14. RMAN> configure device type disk parallelism 2; (设置备份的并行级别,通道数)
  15. RMAN> configure channel 1 device type disk fromat '/backup1/backup_%U'; (设置备份的文件格式,只适用于磁盘设备)
  16. RMAN> configure channel 2 device type disk fromat '/backup2/backup_%U'; (设置备份的文件格式,只适用于磁盘设备)
  17. RMAN> configure controlfile autobackup on; (打开控制文件与服务器参数文件的自动备份)
  18. RMAN> configure controlfile autobackup format for device type disk to '/backup1/ctl_%F'; (设置控制文件与服务器参数文件自动备份的文件格式)

  19. 4、查看所有设置:
  20. RMAN> show all

  21. 5、查看数据库方案报表:
  22. RMAN> report schema;

  23. 6、备份全库:
  24. RMAN> backup database plus archivelog delete input; (备份全库及控制文件、服务器参数文件与所有归档的重做日志,并删除旧的归档日志)

  25. 7、备份表空间:
  26. RMAN> backup tablespace system plus archivelog delete input; (备份指定表空间及归档的重做日志,并删除旧的归档日志)

  27. 8、备份归档日志:
  28. RMAN> backup archivelog all delete input;

  29. 9、复制数据文件:
  30. RMAN> copy datafile 1 to '/oracle/dbs/system.copy';

  31. 10、查看备份和文件复本:
  32. RMAN> list backup;

  33. 11、验证备份:
  34. RMAN> validate backupset 3;

  35. 12、从自动备份中恢复服务器参数文件:
  36. RMAN> shutdown immediate; (立即关闭数据库)
  37. RMAN> startup nomount; (启动实例)
  38. RMAN> restore spfile to pfile '/backup1/mydb.ora' from autobackup; (从自动备份中恢复服务器参数文件)

  39. 13、从自动备份中恢复控制文件:
  40. RMAN> shutdown immediate; (立即关闭数据库)
  41. RMAN> startup nomount; (启动实例)
  42. RMAN> restore controlfile to '/backup1' from autobackup; (从自动备份中恢复控制文件)

  43. 13、恢复和复原全数据库:
  44. RMAN> shutdown immediate; (立即关闭数据库)
  45. RMAN> exit (退出)
  46. %mv /oracle/dbs/tbs_12.f /oracle/dbs/tbs_12.bak (将数据文件重命名)
  47. %mv /oracle/dbs/tbs_13.f /oracle/dbs/tbs_13.bak (将数据文件重命名)
  48. %mv /oracle/dbs/tbs_14.f /oracle/dbs/tbs_14.bak (将数据文件重命名)
  49. %mv /oracle/dbs/tbs_15.f /oracle/dbs/tbs_15.bak (将数据文件重命名)
  50. %rman target=rman/rman@mydb (启动恢复管理器)
  51. RMAN> startup pfile=/oracle/admin/mydb/pfile/initmydb.ora (指定初始化参数文件启动数据库)
  52. RMAN> restore database; (还原数据库)
  53. RMAN> recover database; (恢复数据库)
  54. RMAN> alter database open; (打开数据库)

  55. 14、恢复和复原表空间:
  56. RMAN> sql 'alter tablespace users offline immediate'; (将表空间脱机)
  57. RMAN> exit (退出恢复管理器)
  58. %mv /oracle/dbs/users01.dbf /oracle/dbs/users01.bak (将表空间重命名)
  59. %rman target=rman/rman@mydb (启动恢复管理器)
  60. RMAN> restore tablespace users; (还原表空间)
  61. RMAN> recover tablespace users; (恢复表空间)
  62. RMAN> sql 'alter tablespace users online'; (将表空间联机)

  63. 15、增量备份与恢复:
  64. 第一天的增量基本备份:
  65. RMAN> backup incremental level=0 database plus archivelog delete input;
  66. 第二天的增量差异备份:
  67. RMAN> backup incremental level=2 database plus archivelog delete input;
  68. 第三天的增量差异备份:
  69. RMAN> backup incremental level=2 database plus archivelog delete input;
  70. 第四天的增量差异备份:
  71. RMAN> backup incremental level=1 database plus archivelog delete input;
  72. 第五天的增量差异备份:
  73. RMAN> backup incremental level=2 database plus archivelog delete input;
  74. 第六天的增量差异备份:
  75. RMAN> backup incremental level=2 database plus archivelog delete input;
  76. 第七天的增量差异备份:
  77. RMAN> backup incremental level=0 database plus archivelog delete input;
  78. 增量恢复:
  79. RMAN> shutdown immediate;
  80. RMAN> exit
  81. %mv /oracle/dbs/tbs_12.f /oracle/dbs/tbs_12.bak
  82. %mv /oracle/dbs/tbs_13.f /oracle/dbs/tbs_13.bak
  83. %mv /oracle/dbs/tbs_14.f /oracle/dbs/tbs_14.bak
  84. %mv /oracle/dbs/tbs_15.f /oracle/dbs/tbs_15.bak
  85. %rman target=rman/rman@mydb
  86. RMAN> startup pfile=/oracle/admin/mydb/pfile/initmydb.ora
  87. RMAN> restore database;
  88. RMAN> recover database;
  89. RMAN> alter database open
阅读(2286) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~