一、冷備份介紹:
冷備份數據庫是將數據庫關閉之后備份所有的關鍵性文件包括數據文件、控制文件、聯機REDO LOG文件,將其拷貝到另外的位置。此外冷備份也可以包含對參數文件和口令文件的備份,但是這兩種備份是可以根據需要進行選擇的。,冷備份實際也是一種物理備份,是一個備份數據庫物理文件的過程。因為冷備份要備份除了重做日志以外的所有數據庫文件,因此也被成為完全的數據庫備份。它的優缺點如下所示:
1、優點:
<1>只需拷貝文件即可,是非常快速的備份方法。
<2>只需將文件再拷貝回去,就可以恢復到某一時間點上。
<3>與數據庫歸檔的模式相結合可以使數據庫很好地恢復。
<4>維護量較少,但安全性確相對較高。
2、缺點:
<1>在進行數據庫冷備份的過程中數據庫必須處於關閉狀態。
<2>單獨使用冷備份時,數據庫只能完成基於某一時間點上的恢復。
<3>若磁盤空間有限,冷備份只能將備份數據拷貝到磁帶等其他外部存儲上,速度會更慢。
<4>冷備份不能按表或按用戶恢復。
3、具體備份步驟如下:
<1>以DBA用戶或特權用戶登錄,查詢動態性能視圖v$datafile、v$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.dbfSQL> 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/bakcp /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
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.
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.
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<dbname>.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
來源:http://candon123.blog.51cto.com/704299/249801/
