DM7使用離線工具DMRMAN執行資料庫備份

eric0435發表於2020-08-27

離線工具DMRMAN執行資料庫備份
1. 概述
在DMRMAN工具中使用BACKUP命令你可以備份整個資料庫。使用DMRMAN備份資料庫不需要設定歸檔,關閉伺服器在DMRMAN中輸入以下命令即可備份資料庫:

C:\Users\Administrator>net stop DmServicejydm
DmServicejydm 服務正在停止..
DmServicejydm 服務已成功停止。
RMAN> backup database 'E:\dmdbms\data\jydm\dm.ini';
backup database 'E:\dmdbms\data\jydm\dm.ini';
checking if the database under system path [E:\dmdbms\data\jydm] is running...[4].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[3].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[2].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[1].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[0].
checking if the database under system path [E:\dmdbms\data\jydm] is running, write dmrman info.
EP[0] max_lsn: 898933
BACKUP DATABASE [jydm], execute......
CMD CHECK LSN......
BACKUP DATABASE [jydm], collect dbf......
CMD CHECK ......
DBF BACKUP SUBS......
total 1 packages processed...
total 2 packages processed...
total 3 packages processed...
total 4 packages processed...
total 5 packages processed...
total 6 packages processed...
total 7 packages processed...
total 8 packages processed...
DBF BACKUP MAIN......
BACKUPSET [E:\dmdbms\data\jydm\bak\DB_jydm_FULL_20200531_181250_000528] END, CODE [0]......
META GENERATING......
total 9 packages processed...
total 9 packages processed!
CMD END.CODE:[0]
backup successfully!
time used: 8302.098(ms)

命令執行完後會在預設的備份路徑下生成備份集目錄,預設的備份路徑為dm.ini中BAK_PATH的配置值,若未配置,則為SYSTEM_PATH下的bak目錄。這是最簡單的離線資料庫備份語句,如果要設定其他備份選項請參考下文的語法及使用說明。語法如下:

BACKUP DATABASE '<INI檔案路徑>' [[[FULL][DDL_CLONE]] |INCREMENT [CUMULATIVE][WITH BACKUPDIR '<基備份搜尋目錄>'{,'<基備份搜尋目錄>'}]|[BASE ON BACKUPSET '<基備份集目錄>']]
[TO <備份名>] [BACKUPSET '<備份集目錄>'][DEVICE TYPE <介質型別>[PARMS '<介質引數>']
[BACKUPINFO '<備份描述>'] [MAXPIECESIZE <備份片限制大小>]
[IDENTIFIED BY <加密密碼>[WITH ENCRYPTION][ENCRYPT WITH <加密演算法>]]
[COMPRESSED [LEVEL <壓縮級別>]][WITHOUT LOG]
[TASK THREAD <執行緒數>][PARALLEL [<並行數>]];

DATABASE:必選引數。指定還原目標庫的INI檔案路徑。

FULL:備份型別。FULL表示完全備份,可不指定,DMRMAN會預設為完全備份。

DDL_CLONE:資料庫克隆。該引數只能用於完全備份中,表示僅複製所有的後設資料不複製資料。如對於資料庫中的表來說,只備份表的定義不備份表中資料。

INCREMENT:備份型別。INCREMENT表示增量備份,若要執行增量備份必須指定該引數。

WITH BACKUPDIR:用於增量備份中,指定基備份的搜尋目錄,最大長度為256個位元組。若不指定,伺服器自動在預設備份目錄下搜尋基備份。如果基備份不在預設的備份目錄下,增量備份必須指定該引數。

CUMULATIVE:用於增量備份中,指明為累積增量備份型別,若不指定則預設為差異增量備份型別。

BASE ON BACKUPSET:用於增量備份中,為增量備份指定基備份集目錄。,如果沒有指定基備份集,則會自動搜尋一個最近可用的備份集作為基備份集

TO:指定生成備份名稱。若未指定,系統隨機生成,預設備份名格式為:DB_備份型別_資料庫名_備份時間。

BACKUPSET:指定當前備份集生成目錄。若指定為相對路徑,則在預設備份路徑中生成備份集。

DEVICE TYPE:指儲存備份集的介質型別,支援DISK和TAPE,預設DISK。DISK表示儲存備份集到磁碟,TAPE表示儲存到磁帶。

PARMS:只對介質型別為TAPE時有效。

BACKUPINFO:備份的描述資訊。最大不超過256個位元組。

MAXPIECESIZE:最大備份片檔案大小上限,以M為單位,最小128M,32位系統最大2G,64位系統最大128G。

IDENTIFIED BY:指定備份時的加密密碼。密碼應用雙引號括起來,這樣避免一些特殊字元通不過語法檢測。密碼的設定規則遵行ini引數pwd_policy指定的口令策略。

WITH ENCRYPTION:指定加密型別,0表示不加密,不對備份檔案進行加密處理;1表示簡單加密,對備份檔案設定口令,但檔案內容仍以明文存;2表示完全資料加密,對備份檔案進行完全的加密,備份檔案以密文方式儲存。

ENCRYPT WITH:加密演算法。預設情況下,演算法為AES256_CFB。具體可以使用的加密演算法參考聯機資料庫備份章節的引數說明。

COMPRESSED:取值範圍0~9。0表示不壓縮,1表示1級壓縮,9表示9級壓縮。壓縮級別越高,壓縮越慢,但壓縮比越高。若未指定,但指定COMPRESSED,則預設1;否則,預設0。

WITHOUT LOG:離線資料庫備份是否備份日誌。如果使用,則表示不備份,否則表示備份。如果使用了WITHOUT LOG引數,則使用DMRMAN工具還原時,必須指定WITH ARCHIVEDIR引數。

TASK THREAD:備份過程中資料處理過程執行緒的個數,取值範圍0~64,預設為4。若指定為0,則調整為1;若指定大於當前系統主機核數,則調整為當前主機核數。執行緒數(TASK THREAD)*並行數(PARALLEL)不得超過512。

PARALLEL:指定並行備份的並行數,取值範圍0~128。若不指定,則預設為4,指定0或者1均認為為非並行備份。若未指定關鍵PARALLEL,則認為非並行備份。並行備份不支援介質為TAPE的備份。執行緒數(TASK THREAD)*並行數(PARALLEL)不得超過512。

使用說明:
1. 備份成功後會在<備份集目錄>或者備份預設目錄下生成備份集。備份集中包括一個備份後設資料檔案,字尾.meta,一個或多個備份片檔案,字尾.bak。

2. 對於並行備份的備份集,備份集中還包括其他子備份集目錄,但每個子備份集目錄中也都包含一個meta檔案,0個或者多個備份片檔案。

3. DDL_CLONE庫備份集不能作為增量備份的基備份,僅能用於庫級還原。

4.離線備份的資料庫可以正常退出庫,也可以是故障退出的資料庫。若是故障退出的資料庫,則備份前,需先進行歸檔修復。

5. 在執行離線資料庫備份過程中,如果報錯歸檔不完整,則需要檢查庫是不是異常退出。如果庫是異常退出,則需要先進行歸檔修復。

2. 備份資料庫
本節主要描述使用DMRMAN如何執行基本的離線資料庫備份及實施一些備份策略,包括:
1. 設定備份選項
2. 建立完全備份
3. 建立增量備份

1.設定備份選項
備份命令如果僅指定了必選引數如“BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini'”,那麼DMRMAN會根據配置的環境及內建的引數預設值自動指定備份介質型別、備份路徑、備份片大小等引數。使用者備份時也可以指定這些引數來覆蓋預設值,常見的備份選項有設定備份集路徑、指定備份名、限制備份片大小、新增描述資訊、並行備份等。DMRMAN離線備份資料庫的語法與使用DIsql聯機備份類似。

2.建立完全備份
執行資料庫備份要求資料庫處於離線狀態。與聯機備份資料庫不同的是,離線備份不需要配置歸檔。一個完整的建立離線資料庫備份的示例如下:
1) 啟動DMRMAN命令列工具。
2) 保證資料庫處於離線狀態。
3) DMRMAN中輸入以下命令:

RMAN> backup database 'E:\dmdbms\data\jydm\dm.ini' full backupset 'E:\dmdbms\backup\db_full_bak_01';
backup database 'E:\dmdbms\data\jydm\dm.ini' full backupset 'E:\dmdbms\backup\db_full_bak_01';
checking if the database under system path [E:\dmdbms\data\jydm] is running...[4].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[3].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[2].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[1].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[0].
checking if the database under system path [E:\dmdbms\data\jydm] is running, write dmrman info.
EP[0] max_lsn: 898933
BACKUP DATABASE [jydm], execute......
CMD CHECK LSN......
BACKUP DATABASE [jydm], collect dbf......
CMD CHECK ......
DBF BACKUP SUBS......
total 1 packages processed...
total 2 packages processed...
total 3 packages processed...
total 4 packages processed...
total 5 packages processed...
total 6 packages processed...
total 7 packages processed...
total 8 packages processed...
DBF BACKUP MAIN......
BACKUPSET [E:\dmdbms\backup\db_full_bak_01] END, CODE [0]......
META GENERATING......
total 9 packages processed...
total 9 packages processed!
CMD END.CODE:[0]
backup successfully!
time used: 7256.870(ms)

RAC使用dmrman執行備份

[dmdba@dmrac1 bin]$ dmrman
dmrman V7.1.6.46-Build(2018.02.08-89107)ENT
RMAN> backup database '/dm7/data/rac0_config/dm.ini' backupset '/dm7/backup/bak/db_rac_full_bak_2020060801';
backup database '/dm7/data/rac0_config/dm.ini' backupset '/dm7/backup/bak/db_rac_full_bak_2020060801';
file dm.key not found, use default license!
Read ini warning, default backup path [/dm7data/bak] does not exist.
[-105]:Invalid control file

報錯是因為對於rac環境來說在啟動dmrman時需要指定dcr_ini引數

[dmdba@dmrac1 bin]$ dmrman dcr_ini=/dm7/data/dmdcr.ini
dmrman V7.1.6.46-Build(2018.02.08-89107)ENT
RMAN> backup database '/dm7/data/rac0_config/dm.ini';
backup database '/dm7/data/rac0_config/dm.ini';
file dm.key not found, use default license!
checking if the RAC database under system path [+DMDATA/data/rac] is running....
EP [0] is checking....
[-12000]:The specified instance has been started

報錯是因為指定的資料庫例項已經啟動了,dmrman是用於離線備份,所以需要停止資料庫

RMAN> backup database '/dm7/data/rac0_config/dm.ini';
backup database '/dm7/data/rac0_config/dm.ini';
checking if the RAC database under system path [+DMDATA/data/rac] is running....
EP [0] is checking....
EP [1] is checking....
EP[0] max_lsn: 58852
EP[0] adjust cur_lsn from [58852] to [58867]
BACKUP DATABASE [rac], execute......
CMD CHECK LSN......
BACKUP DATABASE [rac], collect dbf......
CMD CHECK ......
DBF BACKUP SUBS......
total 1 packages processed...
total 2 packages processed...
total 3 packages processed...
total 4 packages processed...
total 5 packages processed...
DBF BACKUP MAIN......
BACKUPSET [+DMDATA/data/rac/bak/DB_rac_FULL_20200608_160009_000828] END, CODE [0]......
META GENERATING......
total 9 packages processed...
total 9 packages processed!
CMD END.CODE:[0]
backup successfully!
time used: 16303.415(ms)

命令中的FULL參數列示執行的備份為完全備份,也可以不指定該引數,DMRMAN預設執行的備份型別為完全備份。

3.建立增量備份
增量備份指基於指定的庫的某個備份(完全備份或者增量備份),備份自該備份以來所有發生修改了的資料頁。離線增量備份要求兩次備份之間資料庫必須有操作,否則備份會報錯。增量備份示例如下:
首先啟動資料庫執行一些操作

C:\Users\Administrator>net start DmServicejydm
DmServicejydm 服務正在啟動 ....
DmServicejydm 服務已經啟動成功。
SQL> create table t2(id int);
操作已執行
已用時間: 8.250(毫秒). 執行號:5.
SQL> begin
2   for i in 1 .. 10 loop
3   insert into t2 values(i);
4   end loop;
5   commit;
6   end;
7   /
DMSQL 過程已成功完成
已用時間: 2.845(毫秒). 執行號:6.
SQL> exit

1) 啟動DMRMAN命令列工具。
2) 保證資料庫處於離線狀態。

C:\Users\Administrator>net stop DmServicejydm
DmServicejydm 服務正在停止..
DmServicejydm 服務已成功停止。

3) DMRMAN中輸入以下命令:

RMAN> backup database 'E:\dmdbms\data\jydm\dm.ini' increment with backupdir 'E:\dmdbms\backup' backupset 'E:\dmdbms\backup\db_full_bak_02';
backup database 'E:\dmdbms\data\jydm\dm.ini' increment with backupdir 'E:\dmdbms\backup' backupset 'E:\dmdbms\backup\db_full_bak_02';
checking if the database under system path [E:\dmdbms\data\jydm] is running...[4].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[3].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[2].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[1].
checking if the database under system path [E:\dmdbms\data\jydm] is running...[0].
checking if the database under system path [E:\dmdbms\data\jydm] is running, write dmrman info.
EP[0] max_lsn: 901685
BACKUP DATABASE [jydm], execute......
CMD CHECK LSN......
BACKUP DATABASE [jydm], collect dbf......
CMD CHECK ......
DBF BACKUP SUBS......
total 1 packages processed...
total 2 packages processed...
total 3 packages processed...
total 4 packages processed...
total 5 packages processed...
total 6 packages processed...
total 7 packages processed...
total 8 packages processed...
DBF BACKUP MAIN......
BACKUPSET [E:\dmdbms\backup\db_full_bak_02] END, CODE [0]......
META GENERATING......
total 9 packages processed...
total 9 packages processed!
CMD END.CODE:[0]
backup successfully!
time used: 8219.138(ms)

命令中的INCREMENT參數列示執行的備份為增量備份,增量備份該引數不可省略。如果增量備份的基備份不在預設備份目錄,必須指定WITH BACKUPDIR引數用於搜尋基備份集,或者使用CONFIGURE...BACKUPDIR命令配置預設的基備份集搜尋目錄


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

相關文章