Oracle的熱備份


一、 什么是熱備份

    熱備份也叫聯機備份,它是指數據庫處於open狀態下,對數據庫的數據文件、控制文件、參數文件、密碼文件等進行一系列備份操作(其中數據文件是必須備份的)。

    它要求數據庫處在歸檔模式下。

    在熱備時,是可以進行DML操作的

二、 熱備的過程

    凍結塊頭-->控制SCN在備份時不發生變化,並產生檢查點,發生在置於備份狀態的時候

         進行物理拷貝

        解凍塊頭-->讓SCN可以變化(當對SCN解凍后,系統會自動更新SCN至最新的狀態)

三、 需要注意的問題

  由於數據文件處於備份狀態時重做日志后台進程要將這些文件的所有的變化數據塊寫到重做日志文件中,這對重做日志緩沖區和重做日志文件的壓力都增大了,所以需要注意幾下加點:

  •   重做日志緩沖區和重做日志文件適當增大
  •   在聯機備份時,每次只備份一個表空間
  •   在DML最少的時候做備份

四、 幾種不同的熱備方式

1、 基於表空間的熱備

  --查詢表空間的名字和狀態

復制代碼
SQL> select file_id,tablespace_name,status from dba_data_files; 

   FILE_ID TABLESPACE_NAME          STATUS
---------- ------------------------------ ---------
     4 USERS              AVAILABLE
     3 UNDOTBS1              AVAILABLE
     2 SYSAUX              AVAILABLE
     1 SYSTEM              AVAILABLE
     5 COSTCTL_TBS              AVAILABLE
     6 DEV_DATA              AVAILABLE
     7 PDMS_DATA              AVAILABLE

已選擇7行。
復制代碼

  --開始備份,將會

SQL> alter tablespace PDMS_DATA  begin backup;

表空間已更改。

  --拷貝數據文件到指定的備份磁盤上

SQL> host cp /opt/oracle/app/oradata/pdms/PDMS_DATA.dbf /u03/backup/hotbak

  --查看所有數據文件的備份狀態

復制代碼
SQL> select * from v$backup;

     FILE# STATUS         CHANGE# TIME
---------- ------------------ ---------- --------------
     1 NOT ACTIVE               0
     2 NOT ACTIVE               0
     3 NOT ACTIVE               0
     4 NOT ACTIVE               0
     5 NOT ACTIVE               0
     6 NOT ACTIVE               0
         7 ACTIVE               12657642 15-12月-16
復制代碼

  --將表空間重新設置為非備份狀態

SQL> alter tablespace PDMS_DATA end backup;

表空間已更改。

  --查看備份狀態

復制代碼
SQL> select * from v$backup;

     FILE# STATUS         CHANGE# TIME
---------- ------------------ ---------- --------------
     1 NOT ACTIVE               0
     2 NOT ACTIVE               0
     3 NOT ACTIVE               0
     4 NOT ACTIVE               0
     5 NOT ACTIVE               0
     6 NOT ACTIVE               0
         7 NOT ACTIVE           12657642 15-12月-16

已選擇7行。
復制代碼

 

2. 基於數據庫的熱備

  alter database begin backup;

      拷貝所有的datafile到備份目錄

      alter database end backup;

 

3. 控制文件的熱備

  alter database backup controlfile to '<dir>' [reuse];          --控制文件的完整備份

    alter database backup controlfile to trace as '<dir>'  --用於創建控制文件的語句,丟失了部分信息,可以直接查看

復制代碼
SQL> alter database backup controlfile to '/u03/backup/hotbak/control01.ctl';

數據庫已更改。

SQL> alter database backup controlfile to trace as '/u03/backup/hotbak/control02.ctl';

數據庫已更改。
復制代碼

查control02.ctl

 View Code

 

4. 參數文件的熱備

  create pfile from spfile ;

      create pfile = '<dir>' from spfile;

SQL> create pfile = '/u03/backup/hotbak/initdbsrv1.ora' from spfile;

文件已創建。

 

5. 臨時表空間的數據文件、日志文件不需要備份

 

五、熱備腳本

基於表空間的熱備(推薦使用這種方式)

vim hotbak.sql

復制代碼
set feedback off
set heading off
set verify off
set trimspool off
set pagesize 0
set linesize 200
define dir = '/u03/backup/hotbak'
define script = '/tmp/hotbak_tb.sql'
ho rm &script
ho rm &dir/*
spool &script
select 'alter tablespace '|| tablespace_name ||' begin backup ;' ||
 chr(10)||'ho cp ' || file_name || ' &dir ' ||
 chr(10)||'alter tablespace '|| tablespace_name || ' end backup;'
 from dba_data_files order by tablespace_name;
spool off
start &script
alter database backup controlfile to '&dir/controlbak.ctl';
create pfile = '&dir/initdbsrv1.ora' from spfile;
復制代碼

  其中char(10)表示換行,紅色部分需要自行修改

SQL> start hotbak.sql;  --執行該腳本即可對數據庫基於表空間進行熱備

 

基於數據庫(數據文件)的熱備

vim hotbak.sql

復制代碼
set feedback off
set heading off
set verify off
set trimspool off
set pagesize 0
set linesize 200
define dir = '/u03/backup/hotbak'
define script = '/tmp/hotbak_tb.sql'
ho rm &script
ho rm &dir/* 
spool &script
select 'alter tablespace '|| tablespace_name ||' begin backup ;' ||
 chr(10)||'ho cp ' || file_name || ' &dir ' ||
 chr(10)||'alter tablespace '|| tablespace_name || ' end backup;'
 from dba_data_files order by tablespace_name;
spool off
start &script
alter database backup controlfile to '&dir/controlbak.ctl';
create pfile = '&dir/initdbsrv1.ora' from spfile;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM