oracle的熱備份和冷備份

531079521發表於2015-03-23

oracle的熱備份和冷備份

 一、冷備份介紹:

   冷備份資料庫是將資料庫關閉之後備份所有的關鍵性檔案包括資料檔案、控制檔案、聯機REDO LOG檔案,將其複製到另外的位置。此外冷備份也可以包含對引數檔案和口令檔案的備份,但是這兩種備份是可以根據需要進行選擇的。,冷備份實際也是一種物理備份,是一個備份資料庫物理檔案的過程。因為冷備份要備份除了重做日誌以外的所有資料庫檔案,因此也被成為完全的資料庫備份。它的優缺點如下所示:

1、優點:

        <1>只需複製檔案即可,是非常快速的備份方法。

        <2>只需將檔案再複製回去,就可以恢復到某一時間點上。

        <3>與資料庫歸檔的模式相結合可以使資料庫很好地恢復。

        <4>維護量較少,但安全性確相對較高。

2、缺點:

        <1>在進行資料庫冷備份的過程中資料庫必須處於關閉狀態。

   <2>單獨使用冷備份時,資料庫只能完成基於某一時間點上的恢復。

        <3>若磁碟空間有限,冷備份只能將備份資料複製到磁帶等其他外部儲存上,速度會更慢。

        <4>冷備份不能按表或按使用者恢復。

3、具體備份步驟如下:

        <1>以DBA使用者或特權使用者登入,查詢動態效能檢視v$datafilev$controlfile可以分別列出資料庫的資料檔案以及控制檔案。

SQL> select name from v$datafile;

NAME 
-------------------------------------------------------------------------------- 
/u02/oradata/db01/system01.dbf 
/u02/oradata/db01/undotbs01.dbf 
/u02/oradata/db01/sysaux01.dbf 
/u02/oradata/db01/users01.dbf

SQL> select name from v$controlfile;

NAME 
-------------------------------------------------------------------------------- 
/u02/oradata/db01/control01.ctl 
/u02/oradata/db01/control02.ctl 
/u02/oradata/db01/control03.ctl 
/u01/app/oracle/bak/control04.ctl

<2>以DBA使用者或特權使用者關閉資料庫。

SQL> conn /  as sysdba; 
Connected. 
SQL> shutdown normal 
Database closed. 
Database dismounted. 
ORACLE instance shut down.

<3>複製資料檔案,複製時應該將檔案複製到單獨的一個硬碟或者磁碟上。控制檔案是相互映象的,因此只需複製一個控制檔案即可。

cp /u02/oradata/db01/*.dbf  /u01/app/oracle/bak

cp /u02/oradata/db01/*.ctl  /u01/app/oracle/bak

<4>啟動例程開啟資料庫。

SQL> conn / as sysdba; 
Connected to an idle instance. 
SQL> startup 
ORACLE instance started.

Total System Global Area  285212672 bytes 
Fixed Size                  1218992 bytes 
Variable Size              83887696 bytes 
Database Buffers          197132288 bytes 
Redo Buffers                2973696 bytes 
Database mounted. 
Database opened. 
SQL>

二、熱備份:

   熱備份是在資料庫執行的情況下,採用archive log mode方式備份資料庫的方法。熱備份要求資料庫處於archive log模式下操作,並需要大量的檔案空間。一旦資料庫處於archive loh

模式,就可以進行備份了,當執行備份時,只能在資料檔案級或表空間進行。

1、優點:

          <1>可在表空間或資料檔案級備份,備份時間短。

<2>可達到秒級恢復(恢復到某一時間點上)

          <3>可對幾乎所有資料庫實體作恢復。

          <4>恢復是快速的,在大多數情況下在資料庫仍工作時恢復。

<5>備份時資料庫仍可用。

2、缺點:

         <1>因難以維護,所以要特別仔細小心,不允許“以失敗而告終”。

         <2>若熱備份不成功,所得結果不可用於時間點的恢復。

         <3>不能出錯,否則後果嚴重。

3、設定初始歸檔模式:

設定歸檔模式資料庫必須處在mount而非open狀態下:

         <1>首先檢視資料庫是否處在archive log模式下:

         SQL> archive log list; 
         Database log mode               No Archive Mode 
         Automatic archival                Disabled 
         Archive destination               USE_DB_RECOVERY_FILE_DEST 
         Oldest online log sequence    1 
         Current log sequence             2

         <2>在mount狀態下啟動資料庫:

         SQL> startup mount; 
         ORACLE instance started.

         Total System Global Area  285212672 bytes 
         Fixed Size                  1218992 bytes 
         Variable Size              83887696 bytes 
         Database Buffers          197132288 bytes 
         Redo Buffers                2973696 bytes 
         Database mounted.

         <3>設定資料庫為歸檔模式:

        SQL> alter database archivelog;

        Database altered.

        <4>開啟資料庫:

SQL> alter database open;

Database altered.

<5>將資料庫設定成自動歸檔,使用以下命令:

SQL> alter system set log_archive_start=true scope=spfile;

System altered.

<6>確定資料庫處於歸檔模式下,並且設定自動存檔:

SQL> archive log list; 
Database log mode              Archive Mode 
Automatic archival             Enabled 
Archive destination            USE_DB_RECOVERY_FILE_DEST 
Oldest online log sequence      1 
Next log sequence to archive   2 
Current log sequence             2

上面的Archive destination所定義的具體位置,可以檢視$ORACLE_HOME/dbs/spfile.ora檔案中的db_recovery_file_dest引數的值。

 

4、聯機備份:

      聯機備份是熱備份的一種備份方法,是指當表空間處於ONLINE狀態時,備份表空間的所有資料檔案和單個資料檔案的過程。使用聯機備份的優點是不影響使用者在表空間上的所有訪問操作,但聯機備份的缺點可能生產更多的重做日誌檔案和歸檔日誌檔案。以下是聯機備份的具體步驟:

       <1>以DBA使用者或特權使用者登入,確定表空間所包含的資料檔案。透過查詢資料字典DBA_DATA_FILES,可以得到資料檔案和表空間的對應關係:

SQL> select file_name from dba_data_files where tablespace_name='USERS';

FILE_NAME 
-------------------------------------------------------------------------------- 
/u02/oradata/db01/users01.dbf

<2>設定表空間為備份模式,在複製表空間的資料檔案之前必須將表空間設定成為備份模式:

SQL> alter tablespace users begin backup;

Tablespace altered.

<3>複製users資料檔案到備份目錄:

[oracle@server1 bak]$ cp /u02/oradata/db01/users01.dbf /bak

<4>複製後表空間就不需要設定成為備份模式了,因此可以將其返回正常模式:

SQL>  alter tablespace users end backup;

Tablespace altered.

5、離線備份:

      離線備份也是熱備份的一種方法,是指當表空間處於offline時,備份表空間的所有資料檔案以及單個資料檔案的過程。它的優點是會生產較少的重做日誌檔案,缺點是當使用者正在進行離線備份時所備份的表空間將不能訪問,由於SYSTEM系統表空間和正在使用的UNDO表空間不能被離線,因此離線備份不適用於SYSTEM表空間和正在使用的UNDO表空間。

        <1>使用DBA使用者或特權使用者登入,確定表空間所包含的資料檔案。這個和聯機備份的第一步相同:

SQL> select file_name from dba_data_files where tablespace_name='USERS';

FILE_NAME 
-------------------------------------------------------------------------------- 
/u02/oradata/db01/users01.dbf

<2>設定表空間為離線狀態,將表空間設定為離線狀態後使用者將不能訪問該表空間上的任何物件,因此也可以確保OFFLINE的表空間的資料檔案不會發生改變。

SQL> alter tablespace users offline;

Tablespace altered.

SQL> select tablespace_name,online_status from dba_data_files;

TABLESPACE_NAME                ONLINE_ 
------------------------------ ------- 
USERS                          OFFLINE 
SYSAUX                         ONLINE 
UNDOTBS1                       ONLINE 
\SYSTEM                         SYSTEM

<3>複製users資料檔案到備份目錄:

[oracle@server1 bak]$ cp /u02/oradata/db01/users01.dbf /bak

<4>複製完後將表空間置於online狀態:

SQL> alter  tablespace users online;

Tablespace altered.

SQL> select tablespace_name,online_status from dba_data_files;

TABLESPACE_NAME                ONLINE_ 
------------------------------ ------- 
USERS                          ONLINE 
SYSAUX                         ONLINE 
UNDOTBS1                       ONLINE 
SYSTEM                         SYSTEM

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28841119/viewspace-1470675/,如需轉載,請註明出處,否則將追究法律責任。

相關文章