备份,是作为DBA的头等大事,无论你的技术多强大,没有备份,出问题的时候,依然束手无策。

    这里只是在工作中总结的备份命令,后续收集到好的脚本,会持续更新......

 

1、在RAC环境下,如果两个节点的archivelog分别保存在自己的本地,在备份的时候如何操作呢?

   开启两个通道并分别用TNS连接串连接到两个实例,进行备份,相当开启一个备份脚本但是同时在两个节点执行的。注:这个需要配置tnsnames文件,不然无法找到另一个节点。

 
   
   
   
   
  1. nbrbdb1$[/archivelog]more backup_log.sh 
  2. #!/bin/sh 
  3. #set env 
  4. export ORACLE_HOME=/oracle/product/10.2.0/db_1 
  5. export ORACLE_SID=orcl1 
  6. export PATH=$PATH:$ORACLE_HOME/db_1/bin:/sbin:/usr/sbin 
  7. echo "-----------------------------start-----------------------------";date 
  8. #backup start 
  9. $ORACLE_HOME/bin/rman <<EOF 
  10. connect target 
  11. delete noprompt obsolete; 
  12. run {  
  13. allocate channel c3 type disk connect 'sys/oracle@orcl1'; 
  14. allocate channel c4 type disk connect 'sys/oracle@orcl2'; 
  15. sql 'alter system archive log current';  
  16. backup archivelog all delete input format '/archivelog/rman/%U.bak' filesperset =5
  17. release channel c3;  
  18. release channel c4;  
  19. exit; 
  20. EOF 
  21. echo "------------------------------end------------------------------";date 

 

2、如果备份时候,发现操作系统限制了单个文件的大小怎么办?

在备份的时候设置通道生成的单个文件的大小,下例既设置大小为2G

   
   
   
   
  1. #backup start 
  2. $ORACLE_HOME/bin/rman <<EOF 
  3. connect target 
  4. run {  
  5. configure controlfile autobackup on; 
  6. configure controlfile autobackup format device type disk to '/backup/controlfile/%F'; 
  7. allocate channel cannel1 type disk connect 'sys/oracle@rac1'; 
  8. allocate channel cannel2 type disk connect 'sys/oracle@rac2'; 
  9. set limit channel cannel1 kbytes 2000000;   
  10. set limit channel cannel2 kbytes 2000000; 
  11. backup incremental level 0 database tag 'fullbak_level0' format '/backup/database/full_level0_%U'; 
  12. release channel cannel1; 
  13. release channel cannel2; 
  14. exit; 
  15. EOF 

 

3、如果希望删除指定日期的归档文件,可以使用以下的命令

   
   
   
   
  1. delete archivelog until time 'sysdate-7';  <<<<<删除归档时间大于7天的,按照归档文件FIRST_TIME计算
  2. DELETE ARCHIVELOG ALL COMPLETED BEFORE "to_timestamp('2012-10-10 05:00:00','YYYY-MM-DD hh24:mi:ss')";

    <<<<< 删除时间早于2012-10-10 05:00:00的归档,根据归档文件COMPLETION_TIME决定。

  3. delete noprompt archivelog until time 'sysdate-1' backed up 1 times to device type disk;

    <<<<< 删除归档时间早于1天,并气已经备份过一次的归档文件,而且不做询问确认,直接删除。

     

 

4、备份一天以前没有备份过的归档,在备份的过程中,跳过不可读写的文件,最后将删除这些归档文件。

   
   
   
   
  1. Backup not backed up 1 times archivelog until time 'sysdate-1' SKIP INACCESSIBLE DELETE INPUT;