1. 完全備和增量備
-
當使用者選擇在資料庫或表空間上進行增量備份時,系統會自動将該資料庫或表空間最近的一個備份作為其基礎備份
手冊說基礎備份可以是完全備份也可以是一個增量備份
實際測試,基礎備份都是以完全備份
- 如果該資料庫或表空間自建立以來還沒有進行過備份,則增量備份無法進行
- 最近那一次的還原會使以前的備份對于目前系統都失效。系統管理者在每次系統還原後就立即作一次完全備份是一個很好的習慣
- 增量備份所依賴的基礎備份有且僅有一個完全備份
2. 聯機備和脫機備
聯機方式支援資料庫備份、使用者表空間備份和使用者表備份,而脫機方式隻支援資料庫備份
拷貝檔案不是簡單地将資料檔案和日志檔案的所有内容拷貝到備份檔案,而是僅僅拷貝使用過的資料頁
聯機
BACKUP DATABASE [FULL |INCREMENT WITH BACKUPDIR '<備份目錄>'{,'<備份目錄>'}] TO <備份名>
[BAKFILE '<備份路徑>'] [BACKUPINFO '<備份描述>'] [MAXSIZE <限制大小>] [IDENTIFIED BY <密鑰>
[WITH ENCRYPTION<TYPE>]][COMPRESSED][WITHOUT LOG][PARALLEL '<并行映射檔案路徑>']
參數說明:
(1) FULL|INCREMENT 備份類型,FULL 表示完全備份,INCREMENT 表示增量備份;
(2) <備份目錄> 基礎備份所在的目錄,最大長度為 256 個位元組;
(3) <備份名> 備份的名稱,在 DMDBMS 中以此辨別不同的備份;
(4) <備份路徑> 備份檔案存放的完整路徑;
(5) <備份描述> 備份的描述資訊;
(6) <限制大小> 最大備份檔案大小,最小值為 16M,最大值 2G;
(7) <密鑰> 備份加密通過使用 IDENTIFIED BY 來指定密碼;
(8) WITH ENCRYPTION 用來指定加密類型, 0 表示不加密, 1 表示簡單加密,2 表示複雜加密;
(9) COMPRESSED 用來指定是否壓縮。如果使用,則表示壓縮,否則表示不壓縮;
(10) WITHOUT LOG 聯機資料庫備份是否備份日志。如果使用,則表示不備份,否則表示備份;
(11) PARALLEL 用來指定并行映射檔案的完整路徑;
(12) <并行映射檔案路徑> 并行映射檔案的完整路徑,最大長度為 256 個位元組;
例子:
BACKUP DATABASE FULL TO full_bak BAKFILE ‘/home/dm/datafull_bak.bak’; (預設BAKFILE在dm.ini中BAK_PATH; 且備份名不可以重複,不管是在哪個路徑下。下同)
BACKUP DATABASE INCREMENT WITH BACKUPDIR ‘/home/dm/’ TO incr_bak BAKFILE ‘/home/dm/dataincr_bak.bak’;
脫機
./dmbackup TYPE=FULL INI_PATH=../data/DAMENG/dm.ini NAME=test
詳見手冊
備份使用者表空間
BACKUP TABLESPACE <表空間名> [FULL| INCREMENT WITH BACKUPDIR '<備份目錄>'{,'<備份目錄>'}] TO
<備份名> [BAKFILE '<備份路徑>'] [BACKUPINFO '<備份描述>'] [MAXSIZE <限制大小>][IDENTIFIED BY
<密鑰>[WITH ENCRYPTION <TYPE>]] [COMPRESSED];
BACKUP TABLESPACE main FULL TO TS_BAK BAKFILE ‘/home/dm/tablespace_bak.bak’ ;
3. 邏輯備
邏輯備份的指令行工具 dexp.exe
dexp 工具可以對本地或者遠端資料庫進行資料庫級、模式級和表級的邏輯備份。備份的内容非常靈活,可以選擇是否備份索引、資料行和權限,是否忽略各種限制(外鍵限制、非空限制、唯一限制等) ,在備份前可以選擇生成日志檔案,記錄備份的過程以供檢視
4. B樹備份
B 樹備份提供表級備份的功能
BACKUP TABLE <表名> TO <備份名> [BAKFILE '<備份路徑>'] [BACKUPINFO '<備份描述>'][MAXSIZE
<限制大小>] [IDENTIFIED BY <密鑰>[WITH ENCRYPTION <TYPE>]] [COMPRESSED];
BACKUP TABLE t TO table_bak BAKFILE ‘/home/dm/table_bak.bak’;
注:表名最好加雙引号,否則如果表名為全數字,備份失敗
5. 并行備份
系統在執行備份時,充分利用了 CPU 資源和磁盤組資源,達到提升備份性能的目的
6. 還原
dmrestore 還原指令
參數:
INI_PATH //配置檔案路徑,最大長度為 256 位元組
FILE //用于還原的備份檔案完整路徑
BACKUP_DIR //備份檔案存放路徑,用于搜尋備份檔案(預設會搜尋備份檔案所在的目錄,以及庫的預設備份目錄)
ARCHIVE_DIR //歸檔日志存放的目錄,可以指定 1~8 個。在還原聯機庫備份且不帶日志的備份檔案時,ARCHIVE_DIR 為必選參數
DATAFIL_PATH //指定還原後的新檔案路徑([編号,路徑],……,[編号,路徑])。編号與路徑成對出現,最多可以指定 16 個
SHOW_BAK_INFO //可選值(0,1,2)0:表示利用備份還原;1:僅顯示備份資訊,不進行還原;2:表示使用歸檔日志進行還原
RES_TYPE //可選值(0,1,2,3)0:表示利用備份還原;1:僅顯示備份資訊,不進行還原;2:表示使用歸檔日志進行還原;
//3:僅還原單個完全備份或者增量備份
LOG //指定一個檔案,還原時日志會寫入該檔案
HELP //列印幫助資訊
還原資料庫
利用備份檔案還原:
# ./dmrestore INI_PATH=data/DAMENG/dm.ini FILE=data/DAMENG/bak/DB_DAMENG_20150506194312000009.bak
//檢視歸檔是否打開
select arch_mode from v$database;
//檢視歸檔日志資訊
select arch_name,arch_type,arch_dest from v$dm_arch_ini;
//檢視源備份庫中system.dbf的db_magic
# ./dmmdf data1/DAMENG/SYSTEM.DBF 1
**********************************************************
1 db_magic=1430986615
2 next_trxid=1169
**********************************************************
檢視到 db_magic
//修改目的備份庫中system.dbf的db_magic
# ./dmmdf data2/DAMENG/SYSTEM.DBF 1
Please input which parameter you want to change(1-2), q to quit:
選擇1,修改成1430986615
//修改目的備份庫中 DAMENG01.log的db_magic
# ./dmmdf data2/DAMENG/DAMENG01.log 2
**********************************************************
1 sig = DMRLOG
2 ver = 7001
3 chksum = 0
4 dbversion = 0x70009
5 sta = 0
6 n_magic = 21
7 db_magic = 1430986615
8 clsn_fil = 0
10 next_seq = 15556
11 arch_seq = 0
12 len = 67108864
13 free = 4096
14 clsn = 59219
15 clsn_off = 4096
16 arch_lsn = 0
**********************************************************
You can only reset sta(5) or db_magic (7) or clsn (14).
Please input the num which one you want to change, q to quit:
選擇7,修改成1430986615
//還原資料庫
# ./dmrestore INI_PATH=data/DAMENG/dm.ini ARCHIVE_DIR=dmdata/arch SHOW_BAK_INFO=2
還原表空間
RESTORE TABLESPACE <表空間名> FROM '<備份路徑>' | BACKUP <備份檔案名> [ INDENTIFIED BY <密碼>]
[ WITH BACKUPDIR '<備份目錄>'{,'<備份目錄>'}][WITH ARCHIVEDIR '歸檔目錄'{,'歸檔目錄'}][DBFILE
<檔案 ID> TO '<檔案路徑>' {,DBFILE <檔案 ID> TO '<檔案路徑>'}] [MIRROR <檔案 ID> TO '<檔案路徑>'
{,MIRROR <檔案 ID> TO '<檔案路徑>'}];
ALTER TABLESPACE main OFFLINE;
RESTORE TABLESPACE main FROM '/usr/local/tablespace_bak.bak' IDENTIFIED BY ABCDEF;
ALTER TABLESPACE main ONLINE;
還原使用者表
RESTORE TABLE FROM '<檔案路徑>' | BACKUP <備份名> [IDENTIFIED BY <密鑰>]