非歸檔模式的備份與恢復

非歸檔模式的備份:
 非歸檔模式下只能進行冷備(停庫再備份)

備份的方法:
 拷貝文件,要拷貝哪些文件呢?

 必須的文件:數據文件、控制文件
 可選的文件:日誌文件、參數文件、密碼文件


爲了提高備份速度,最好寫腳本來做
    /share/ocp/backup_script/get_file.sql

 set heading off;
 set feedback off;
 set pagesize 0;
 set trimspool on;
 spool /share/ocp/backup_script/col_backup_command.sql;
 select 'shutdown immediate;' from dual
 union all
 select 'host cp '||name||' /u03/backup/' from v$datafile
 union all
 select 'host cp '||name||' /u03/backup/' from v$controlfile
 union all
 select 'host cp '||member|| ' /u03/backup/' from v$logfile
 union all
 select 'host cp $ORACLE_HOME/dbs/spfile${ORACLE_SID}.ora /u03/backup/' from dual
 union all
 select 'host cp $ORACLE_HOME/dbs/orapw${ORACLE_SID} /u03/backup/' from dual
 union all
 select 'startup;' from dual;
 spool off;


 如果要保留7份備份,可以考慮,放到7個不同的目錄,那/u03/backup/ 可改爲
 /u03/backup'||to_char(sysdate,'d')||'/'

    以後備份時,只要在 SQL> 運行  get_file.sql 和 /home/oracle/col_backup_command.sql
    但如果要作自動備份的話,還要進行一定的設置

  
非歸檔模式下自動備份的實現:
    1、做一個 crontab
 [oracle@t183 backup]$ crontab -l
  03 04 * * * oracle_col_backup.sh

 時間格式:分 時 日 月 周

    2、編寫一個oracle_col_backup.sh 腳本來調用上面的 get_file.sql 和
        col_backup_command.sql


  #!/bin/bash
  #

  ORACLE_BASE=/u01/app/oracle
  ORACLE_HOME=/u01/app/oracle/product/10.2/db_1
  ORACLE_SID=orcl
  LANG=en
  LD_LIBRARY_PATH=$ORACLE_HOME/lib

  PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin

  sqlplus sys/oracle as sysdba <<EOF
  @/share/ocp/backup_script/get_file.sql;
  @/share/ocp/backup_script/col_backup_command.sql;
  EOF

 

非歸檔模式下的恢復:
 只要任何一個數據文件或控制文件損壞,要把所有的數據文件、控制文件、日誌文件還原回去
 實際就是將數據庫回到備份點的狀態(備份後的數據丟失)

 非歸檔恢復時,爲了加快恢復速度,最好寫腳本來實現,而且這個腳本就在備份的時候就寫好
 腳本大致內容:
  

spool /share/ocp/backup_script/col_restore_command.sql;
select 'host cp /u03/backup'||substr(name,instr(name,'/',-1))||' '||name from v$datafile
union all
select 'host cp /u03/backup'||substr(name,instr(name,'/',-1))||' '||name from v$controlfile
union all
select 'host cp /u03/backup'||substr(member,instr(member,'/',-1))||' '||member from v$logfile
union all
select 'host cp /u03/backup/spfile${ORACLE_SID}.ora $ORACLE_HOME/dbs/' from dual
union all
select 'host cp /u03/backup/orapw${ORACLE_SID} $ORACLE_HOME/dbs/' from dual;
spool off;
 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章