轉載自candon123,感謝作者分享。訪問原地址:http://candon123.blog.51cto.com/704299/249801/
一、冷備份介紹:
冷備份數據庫是將數據庫關閉之後備份所有的關鍵性文件包括數據文件、控制文件、聯機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/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<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