DM聯機執行SQL語句進行資料庫備份
DM支援透過聯機執行SQL語句方式對資料庫執行備份還原操作。聯機方式支援資料庫、使用者表空間、使用者表和歸檔的備份,使用者表空間、使用者表的還原。在進行聯機庫級備份、歸檔備份表空間備份和表空間還原時,必須保證系統處於歸檔模式,否則聯機備份還原不能進行。聯機備份之前,請設定INI引數BAK_POLICY,選用合適的備份策略。在使用的SQL語句中,若指定的備份名、加密演算法名長度超過128個位元組,會導致語法分析錯誤。需要說明的是,DM新備份還原在執行聯機操作時,語句的解析執行使用的是DM伺服器的編碼方式,而檔案操作使用作業系統的編碼方式。因此,當DM建庫引數的編碼方式與作業系統編碼方式不一致時,使用中文檔名或路徑名等可能造成控制檯列印資訊和日誌檔案中的資訊的中文部分顯示亂碼。
下面將描述瞭如何使用DIsql完成最基本的資料庫備份及實施一些備份策略,如限制備份集大小、加密備份等。主要內容包括:
1. 概述
2. 設定備份選項
3. 備份資料庫
1.概述
在DIsql工具中使用BACKUP語句你可以備份整個資料庫。通常情況下,在伺服器配置歸檔後輸入以下語句即可備份資料庫:
SQL>BACKUP DATABASE BACKUPSET 'db_bak_01';
語句執行完後會在預設的備份路徑下生成名為“db_bak_01”的備份集目錄,預設的備份路徑為dm.ini中BAK_PATH配置的路徑,若未配置,則使用SYSTEM_PATH下的bak目錄。這是最簡單的資料庫備份語句,如果要設定其他的備份選項需瞭解聯機備份資料庫的語法。
語法如下:
BACKUP DATABASE [[[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]
[TRACE FILE '< TRACE檔名>'] [TRACE LEVEL < TRACE日誌級別>]
[TASK THREAD < 執行緒數>][PARALLEL [< 並行數>]];
FULL:備份型別。FULL表示完全備份,可不指定,伺服器會預設為完全備份。
DDL_CLONE:資料庫克隆。該引數只能用於完全備份中,表示僅複製所有的後設資料不複製資料。如對於資料庫中的表來說,只備份表的定義不備份表中資料。表空間和表備份不支援該引數。DDL_CLONE會克隆HUGE表的後設資料資訊,之後庫還原時會還原HUGE表的表定義。
INCREMENT:備份型別。INCREMENT表示增量備份,若要執行增量備份必須指定該引數。
CUMULATIVE:用於增量備份中,指明為累積增量備份型別,若不指定則預設為差異增量備份型別。
WITH BACKUPDIR:用於增量備份中,指定基備份的搜尋目錄,最大長度為256個位元組。若不指定,伺服器自動在預設備份目錄下搜尋基備份。如果基備份不在預設的備份目錄下,增量備份必須指定該引數。
BASE ON:用於增量備份中,指定基備份集目錄。
TO:指定生成備份名稱。若未指定,系統隨機生成,預設備份名格式為:DB_備份型別_資料庫名_備份時間。其中,備份時間為開始備份時的系統時間。
BACKUPSET:指定當前備份集生成路徑。若指定為相對路徑,則在預設備份路徑中生成備份集。若不指定,則在預設備份路徑中按約定規則,生成預設備份集目錄。庫級備份預設備份集目錄名生成規則:DB_庫名_備份型別_時間,如DB_DAMENG_FULL_20160518_143057_123456。表明該備份集為2016年5月18日14時30分57秒123456毫秒時生成的庫名為DAMENG的資料庫完全備份集。若庫名超長,使上述完整名稱長度大於128個位元組,則去掉庫名欄位,調整為DB_備份型別_時間。
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。
加密演算法包括:
DES_ECB、DES_CBC、DES_CFB、DES_OFB、DESEDE_ECB、
DESEDE_CBC、DESEDE_CFB、DESEDE_OFB、AES128_ECB、
AES128_CBC、AES128_CFB 、AES128_OFB、AES192_ECB、
AES192_CBC、AES192_CFB 、AES192_OFB、AES256_ECB、
AES256_CBC、AES256_CFB 、AES256_OFB 、RC4
COMPRESSED:取值範圍0~9。0表示不壓縮,1表示1級壓縮,9表示9級壓縮。壓縮級別越高,壓縮越慢,但壓縮比越高。若未指定,但指定COMPRESSED,則預設1;否則,預設0。
WITHOUT LOG:聯機資料庫備份是否備份日誌。如果使用,則表示不備份,否則表示備份。如果使用了WITHOUT LOG引數,則使用DMRMAN工具還原時,必須指定WITH ARCHIVEDIR引數。
TRACE FILE:指定生成的TRACE檔案。啟用TRACE,但不指定TRACE FILE時,預設在DM資料庫系統的log目錄下生成DM_SBTTRACE_年月.log檔案;若使用相對路徑,則生成在執行碼同級目錄下。若使用者指定,則指定的檔案不能為已經存在的檔案,否則報錯;也不可以為ASM檔案。
TRACE LEVEL:有效值1、2,預設為1表示不啟用TRACE,此時若指定了TRACE FILE,會生成TRACE檔案,但不寫入TRACE資訊;為2啟用TRACE並寫入TRACE相關內容。
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. 當備份資料超過限制大小時,會生成新的備份檔案,新的備份檔名是初始檔名後加檔案編號。
3. 系統處於歸檔模式下時,才允許進行資料庫聯機備份。若備份庫為RAC庫,且未指定WITHOUT LOG,則也需要配置REMOTE歸檔。
4. MOUNT狀態下不允許進行資料庫備份。
5. DDL_CLONE庫備份集不能作為增量備份的基備份,僅能用於庫級還原。
6. 在執行聯機資料庫備份過程中,如果報錯歸檔不完整,則需要先執行生成檢查點操作,才能正常備份。例如:select checkpoint(50);
2 設定備份選項
DIsql中備份語句如果僅指定了必選引數如“BACKUP DATABASE BACKUPSET 'db_bak_01';”,那麼伺服器會預設地指定備份介質型別、備份路徑、備份片大小及備份聯機日誌等。使用者備份時也可以指定這些引數來修改預設值,本節將介紹以下幾種常用的備份選項:
1. 設定聯機資料庫備份集路徑
2. 設定備份名
3. 指定介質型別
4. 新增備份描述
5. 限制備份片大小
6. 加密備份
7. 備份壓縮
1.設定聯機資料庫備份集路徑
備份語句中的BACKUPSET引數用於指定備份集的輸出路徑,例1備份資料庫到指定的路徑“/dm7/backup/db_backup_20200528_01”。
SQL> backup database backupset '/dm7/backup/db_backup_20200528_01'; executed successfully used time: 00:00:01.300. Execute id is 10.
在檢視之前應先使用sf_bakset_backup_dir_add新增備份集目錄,否則只顯示預設備份路徑下的備份集資訊,使用方法如下例所示:
SQL> select * from v$dm_ini where para_name like'%PATH'; LINEID PARA_NAME PARA_VALUE MIN_VALUE MAX_VALUE MPP_CHK SESS_VALUE FILE_VALUE DESCRIPTION PARA_TYPE ---------- ----------------- --------------------------- --------- --------- ------- --------------------------- ------------------------ ---------------------------- --------- 1 CTL_PATH +DMDATA/data/rac/dm.ctl NULL NULL N +DMDATA/data/rac/dm.ctl +DMDATA/data/rac/dm.ctl path of dm.ctl READ ONLY 2 CTL_BAK_PATH +DMDATA/data/rac/ctl_bak NULL NULL N +DMDATA/data/rac/ctl_bak +DMDATA/data/rac/ctl_bak backup path of dm.ctl READ ONLY 3 SYSTEM_PATH +DMDATA/data/rac NULL NULL N +DMDATA/data/rac +DMDATA/data/rac system path READ ONLY 4 CONFIG_PATH /dm7/data/rac0_config NULL NULL N /dm7/data/rac0_config /dm7/data/rac0_config config path READ ONLY 5 TEMP_PATH +DMDATA/data/rac NULL NULL N +DMDATA/data/rac +DMDATA/data/rac temporary database file path READ ONLY 6 BAK_PATH +DMDATA/data/rac/bak NULL NULL N +DMDATA/data/rac/bak +DMDATA/data/rac/bak backup file path READ ONLY 7 AUD_PATH NULL NULL NULL N NULL NULL audit log path READ ONLY 8 SSD_FILE_PATH NULL NULL NULL N NULL NULL SSD buffer file path IN FILE 9 SVR_LOG_FILE_PATH ../log NULL NULL N ../log ../log File Path for SQLs Log SYS 10 TRACE_PATH /dm7/data/rac0_config/trace NULL NULL N /dm7/data/rac0_config/trace NULL System trace path name READ ONLY 11 DCR_PATH /dev/raw/raw1 NULL NULL N /dev/raw/raw1 NULL Path of dcr disk IN FILE 11 rows got used time: 10.522(ms). Execute id is 20. SQL> select sf_bakset_backup_dir_add('disk', '/dm7/backup/db_backup_20200528_01'); LINEID SF_BAKSET_BACKUP_DIR_ADD('disk','/dm7/backup/db_backup_20200528_01') ---------- -------------------------------------------------------------------- 1 1 used time: 1.716(ms). Execute id is 18. SQL> select * from v$backupset; LINEID DEVICE_TYPE BACKUP_ID PARENT_ID BACKUP_NAME BACKUP_PATH TYPE LEVEL RANGE# OBJECT_NAME OBJECT_ID BASE_NAME BACKUP_TIME DESC# ENCRYPT_TYPE COMPRESS_LEVEL WITHOUT_LOG USE_PWR PKG_SIZE BEGIN_LSN END_LSN BKP_NUM DBF_NUM PARALLEL_NUM DDL_CLONE MPP_FLAG MIN_TRX_START_LSN MIN_EXEC_VER CUMULATIVE ---------- ----------- ----------- ----------- ---------------------------------- --------------------------------- ----------- ----------- ----------- ----------- ----------- --------- --------------------------- ----- ------------ -------------- ----------- ----------- ----------- -------------------- -------------------- ----------- ----------- ------------ ----------- ----------- -------------------- ------------ ----------- 1 DISK 22076147 -1 DB_FULL_rac_20200528_210146_000437 /dm7/backup/db_backup_20200528_01 0 0 1 rac -1 2020-05-28 21:01:47.000670 0 0 0 0 33554432 50908 50909 2 4 1 0 0 49398 117507596 0 used time: 00:00:01.022. Execute id is 19.
BACKUPSET為必選引數。如果該引數僅指定備份集名稱即指定為相對路徑,備份集就會生成到預設的備份路徑下。如果僅指定該關鍵字,不指定目標備份集目錄,那麼將會在預設備份路徑下自動生成。
2.設定備份名
系統為每個備份指定一個備份名,它可作為識別備份的一種方式。備份時使用者可以採用系統生成的備份名也可以指定屬於自己的備份名。
備份名可以有效地表示備份的目的或者不同型別備份的用途。比如對於一個用於還原的資料庫完全備份可設定備份名為“db_full_for_restore”。
如果不顯式地指定備份名,系統會預設為備份建立一個備份名。備份名的格式為:DB_備份型別_資料庫名_備份時間,DB表示備份為資料庫備份,備份型別表示該備份為完全備份還是增量備份,資料庫名為當前連線資料庫的名稱,備份時間為開始執行備份的系統時間。
若一次備份產生多個備份片,那麼每個備份片的備份名是相同的。
指定的備份名不能與預設備份路徑中已有的備份名相同,但可以與非預設備份路徑中已有的備份名相同。備份路徑指備份集名稱的上一層路徑,如例1中的備份路徑為“/home/backup/”。
備份名最大長度為128個位元組,如果超長伺服器會報語法分析出錯。備份名的設定不可以使用特殊的格式,如%NAME。
例2建立備份集,備份名設定為“weekly_full_bak”。
SQL> backup database to weekly_full_bak backupset '/dm7/backup/db_backup_20200528_02'; executed successfully used time: 00:00:01.571. Execute id is 23. SQL> select sf_bakset_backup_dir_add('disk', '/dm7/backup/db_backup_20200528_02'); LINEID SF_BAKSET_BACKUP_DIR_ADD('disk','/dm7/backup/db_backup_20200528_02') ---------- -------------------------------------------------------------------- 1 1 used time: 1.924(ms). Execute id is 24. SQL> select * from v$backupset; LINEID DEVICE_TYPE BACKUP_ID PARENT_ID BACKUP_NAME BACKUP_PATH TYPE LEVEL RANGE# OBJECT_NAME OBJECT_ID BASE_NAME BACKUP_TIME DESC# ENCRYPT_TYPE COMPRESS_LEVEL WITHOUT_LOG USE_PWR PKG_SIZE BEGIN_LSN END_LSN BKP_NUM DBF_NUM PARALLEL_NUM DDL_CLONE MPP_FLAG MIN_TRX_START_LSN MIN_EXEC_VER CUMULATIVE ---------- ----------- ----------- ----------- ---------------------------------- --------------------------------- ----------- ----------- ----------- ----------- ----------- --------- --------------------------- ----- ------------ -------------- ----------- ----------- ----------- -------------------- -------------------- ----------- ----------- ------------ ----------- ----------- -------------------- ------------ ----------- 1 DISK 22076147 -1 DB_FULL_rac_20200528_210146_000437 /dm7/backup/db_backup_20200528_01 0 0 1 rac -1 2020-05-28 21:01:47.000670 0 0 0 0 33554432 50908 50909 2 4 1 0 0 49398 117507596 0 2 DISK -825903455 -1 WEEKLY_FULL_BAK /dm7/backup/db_backup_20200528_02 0 0 1 rac -1 2020-05-28 21:42:58.000425 0 0 0 0 33554432 50908 50933 2 4 1 0 0 49398 117507596 0 used time: 00:00:01.026. Execute id is 25.
3.指定介質型別
device type引數用於指定儲存備份集到磁碟還是磁帶。若需要備份資料到磁帶可使用backup...device type tape語句。
例3指定備份資料庫到磁帶。
sql>backup database backupset '/HOME/DM_BAK/DB_BAK_3_03' device type tape; 若備份時不指定介質型別引數伺服器會預設儲存備份集到磁碟。
4.新增備份描述
聯機備份可選擇對執行的備份新增描述資訊,相比備份名引數,描述資訊可以更詳細地對備份型別、用途、場景等進行說明。描述資訊最大長度支援256個位元組。
例4建立備份為備份集新增描述資訊為“rac_full_backup”。
SQL> backup database backupset '/dm7/backup/db_backup_20200528_03' backupinfo 'rac_full_backup'; executed successfully used time: 00:00:01.342. Execute id is 27. SQL> select sf_bakset_backup_dir_add('disk', '/dm7/backup/db_backup_20200528_03'); LINEID SF_BAKSET_BACKUP_DIR_ADD('disk','/dm7/backup/db_backup_20200528_03') ---------- -------------------------------------------------------------------- 1 1 used time: 1.286(ms). Execute id is 28. SQL> select * from v$backupset; LINEID DEVICE_TYPE BACKUP_ID PARENT_ID BACKUP_NAME BACKUP_PATH TYPE LEVEL RANGE# OBJECT_NAME OBJECT_ID BASE_NAME BACKUP_TIME DESC# ENCRYPT_TYPE COMPRESS_LEVEL WITHOUT_LOG USE_PWR PKG_SIZE BEGIN_LSN END_LSN BKP_NUM DBF_NUM PARALLEL_NUM DDL_CLONE MPP_FLAG MIN_TRX_START_LSN MIN_EXEC_VER CUMULATIVE ---------- ----------- ----------- ----------- ---------------------------------- --------------------------------- ----------- ----------- ----------- ----------- ----------- --------- --------------------------- --------------- ------------ -------------- ----------- ----------- ----------- -------------------- -------------------- ----------- ----------- ------------ ----------- ----------- -------------------- ------------ ----------- 1 DISK 22076147 -1 DB_FULL_rac_20200528_210146_000437 /dm7/backup/db_backup_20200528_01 0 0 1 rac -1 2020-05-28 21:01:47.000670 0 0 0 0 33554432 50908 50909 2 4 1 0 0 49398 117507596 0 2 DISK -825903455 -1 WEEKLY_FULL_BAK /dm7/backup/db_backup_20200528_02 0 0 1 rac -1 2020-05-28 21:42:58.000425 0 0 0 0 33554432 50908 50933 2 4 1 0 0 49398 117507596 0 3 DISK 418984588 -1 DB_FULL_rac_20200528_215152_000262 /dm7/backup/db_backup_20200528_03 0 0 1 rac -1 2020-05-28 21:51:53.000563 rac_full_backup 0 0 0 0 33554432 50908 50948 2 4 1 0 0 49398 117507596 0 used time: 00:00:01.027. Execute id is 29.
使用者如果不指定該引數,備份集對應的描述資訊屬性則為空。
5.限制備份片大小
MAXPIECESIZE引數用於控制單個備份片的大小,當介質管理器對單個檔案的大小有限制或者需要備份的資料檔案很大時就可以使用這個引數。MAXPIECESIZE不能大於磁碟剩餘空間大小,否則報錯磁碟空間不足。
MAXPIECESIZE指定了單個備份片檔案大小的上限,單位為M,最小為128M,32位系統最大可設定為2G,64位系統最大可設定為128G。如果不設定32系統預設為2G,64位系統預設為4G。例如,要限制備份片大小不超過300M,可指定MAXPIECESIZE 300,備份時伺服器會限定所有的備份片大小不超過300M。
限制備份片大小主要用於解決檔案系統或介質管理器對檔案最大值的限制小於備份片預設值的情況,當備份片較大時會導致無法儲存。
例5建立備份限制備份片大小為300M。
SQL> backup database backupset '/dm7/backup/db_backup_20200528_04' maxpiecesize 300; executed successfully used time: 00:00:01.195. Execute id is 30. SQL> select sf_bakset_backup_dir_add('disk', '/dm7/backup/db_backup_20200528_04'); LINEID SF_BAKSET_BACKUP_DIR_ADD('disk','/dm7/backup/db_backup_20200528_04') ---------- -------------------------------------------------------------------- 1 1 used time: 1.259(ms). Execute id is 31. SQL> select * from v$backupset; LINEID DEVICE_TYPE BACKUP_ID PARENT_ID BACKUP_NAME BACKUP_PATH TYPE LEVEL RANGE# OBJECT_NAME OBJECT_ID BASE_NAME BACKUP_TIME DESC# ENCRYPT_TYPE COMPRESS_LEVEL WITHOUT_LOG USE_PWR PKG_SIZE BEGIN_LSN END_LSN BKP_NUM DBF_NUM PARALLEL_NUM DDL_CLONE MPP_FLAG MIN_TRX_START_LSN MIN_EXEC_VER CUMULATIVE ---------- ----------- ----------- ----------- ---------------------------------- --------------------------------- ----------- ----------- ----------- ----------- ----------- --------- --------------------------- --------------- ------------ -------------- ----------- ----------- ----------- -------------------- -------------------- ----------- ----------- ------------ ----------- ----------- -------------------- ------------ ----------- 1 DISK 22076147 -1 DB_FULL_rac_20200528_210146_000437 /dm7/backup/db_backup_20200528_01 0 0 1 rac -1 2020-05-28 21:01:47.000670 0 0 0 0 33554432 50908 50909 2 4 1 0 0 49398 117507596 0 2 DISK -825903455 -1 WEEKLY_FULL_BAK /dm7/backup/db_backup_20200528_02 0 0 1 rac -1 2020-05-28 21:42:58.000425 0 0 0 0 33554432 50908 50933 2 4 1 0 0 49398 117507596 0 3 DISK 418984588 -1 DB_FULL_rac_20200528_215152_000262 /dm7/backup/db_backup_20200528_03 0 0 1 rac -1 2020-05-28 21:51:53.000563 rac_full_backup 0 0 0 0 33554432 50908 50948 2 4 1 0 0 49398 117507596 0 4 DISK -556033448 -1 DB_FULL_rac_20200528_215831_000073 /dm7/backup/db_backup_20200528_04 0 0 1 rac -1 2020-05-28 21:58:32.000229 0 0 0 0 33554432 50908 50954 2 4 1 0 0 49398 117507596 0 used time: 00:00:01.027. Execute id is 32.
6.備份壓縮
所有的備份語句都可以設定壓縮選項,指定COMPRESSED引數後備份集就會先被壓縮然後再寫到磁碟或磁帶。壓縮選項有不同的壓縮級別可以選擇,取值範圍為0~9。0表示不壓縮,1表示1級壓縮,9表示9級壓縮。壓縮級別越高,壓縮越慢,但壓縮比越高。若僅指定COMPRESSED,壓縮級別為1。實際應用中使用者可根據儲存空間、資料檔案大小、備份效率等確定合適的壓縮級別。
例6執行備份壓縮,壓縮級別設定為5。
SQL> backup database backupset '/dm7/backup/db_backup_20200528_05' compressed level 5; executed successfully used time: 00:00:01.311. Execute id is 33. SQL> select sf_bakset_backup_dir_add('disk', '/dm7/backup/db_backup_20200528_05'); LINEID SF_BAKSET_BACKUP_DIR_ADD('disk','/dm7/backup/db_backup_20200528_05') ---------- -------------------------------------------------------------------- 1 1 used time: 1.623(ms). Execute id is 34. SQL> select * from v$backupset; LINEID DEVICE_TYPE BACKUP_ID PARENT_ID BACKUP_NAME BACKUP_PATH TYPE LEVEL RANGE# OBJECT_NAME OBJECT_ID BASE_NAME BACKUP_TIME DESC# ENCRYPT_TYPE COMPRESS_LEVEL WITHOUT_LOG USE_PWR PKG_SIZE BEGIN_LSN END_LSN BKP_NUM DBF_NUM PARALLEL_NUM DDL_CLONE MPP_FLAG MIN_TRX_START_LSN MIN_EXEC_VER CUMULATIVE ---------- ----------- ----------- ----------- ---------------------------------- --------------------------------- ----------- ----------- ----------- ----------- ----------- --------- --------------------------- --------------- ------------ -------------- ----------- ----------- ----------- -------------------- -------------------- ----------- ----------- ------------ ----------- ----------- -------------------- ------------ ----------- 1 DISK 22076147 -1 DB_FULL_rac_20200528_210146_000437 /dm7/backup/db_backup_20200528_01 0 0 1 rac -1 2020-05-28 21:01:47.000670 0 0 0 0 33554432 50908 50909 2 4 1 0 0 49398 117507596 0 2 DISK -825903455 -1 WEEKLY_FULL_BAK /dm7/backup/db_backup_20200528_02 0 0 1 rac -1 2020-05-28 21:42:58.000425 0 0 0 0 33554432 50908 50933 2 4 1 0 0 49398 117507596 0 3 DISK 418984588 -1 DB_FULL_rac_20200528_215152_000262 /dm7/backup/db_backup_20200528_03 0 0 1 rac -1 2020-05-28 21:51:53.000563 rac_full_backup 0 0 0 0 33554432 50908 50948 2 4 1 0 0 49398 117507596 0 4 DISK -556033448 -1 DB_FULL_rac_20200528_215831_000073 /dm7/backup/db_backup_20200528_04 0 0 1 rac -1 2020-05-28 21:58:32.000229 0 0 0 0 33554432 50908 50954 2 4 1 0 0 49398 117507596 0 5 DISK 2085599548 -1 DB_FULL_rac_20200528_220043_000211 /dm7/backup/db_backup_20200528_05 0 0 1 rac -1 2020-05-28 22:00:44.000485 0 5 0 0 33554432 50908 50960 2 4 1 0 0 49398 117507596 0 used time: 00:00:01.030. Execute id is 35.
7.並行備份
DM支援對庫級和表空間級的並行備份,待備份資料檔案很大時使用並行備份可以顯著提高備份效率。使用者可透過關鍵字PARALLEL指定是否執行並行備份,以及執行並行備份的並行數。執行備份時實際使用的並行數由使用者指定的並行數和實際可使用的最大並行數決定,而實際可使用的最大並行數由資料檔案的個數決定。關於並行備份的更多內容請參考2.1.1.5小節。
例7建立並行備份,指定並行數為8。
SQL> backup database backupset '/dm7/backup/db_backup_20200528_06' parallel 8; executed successfully used time: 00:00:04.318. Execute id is 36. SQL> select sf_bakset_backup_dir_add('disk', '/dm7/backup/db_backup_20200528_06'); LINEID SF_BAKSET_BACKUP_DIR_ADD('disk','/dm7/backup/db_backup_20200528_06') ---------- -------------------------------------------------------------------- 1 1 used time: 2.009(ms). Execute id is 37. SQL> select * from v$backupset; LINEID DEVICE_TYPE BACKUP_ID PARENT_ID BACKUP_NAME BACKUP_PATH TYPE LEVEL RANGE# OBJECT_NAME OBJECT_ID BASE_NAME BACKUP_TIME DESC# ENCRYPT_TYPE COMPRESS_LEVEL WITHOUT_LOG USE_PWR PKG_SIZE BEGIN_LSN END_LSN BKP_NUM DBF_NUM PARALLEL_NUM DDL_CLONE MPP_FLAG MIN_TRX_START_LSN MIN_EXEC_VER CUMULATIVE ---------- ----------- ----------- ----------- ------------------------------------ --------------------------------------------------------- ----------- ----------- ----------- ----------- ----------- --------- --------------------------- --------------- ------------ -------------- ----------- ----------- ----------- -------------------- -------------------- ----------- ----------- ------------ ----------- ----------- -------------------- ------------ ----------- 1 DISK 22076147 -1 DB_FULL_rac_20200528_210146_000437 /dm7/backup/db_backup_20200528_01 0 0 1 rac -1 2020-05-28 21:01:47.000670 0 0 0 0 33554432 50908 50909 2 4 1 0 0 49398 117507596 0 2 DISK -825903455 -1 WEEKLY_FULL_BAK /dm7/backup/db_backup_20200528_02 0 0 1 rac -1 2020-05-28 21:42:58.000425 0 0 0 0 33554432 50908 50933 2 4 1 0 0 49398 117507596 0 3 DISK 418984588 -1 DB_FULL_rac_20200528_215152_000262 /dm7/backup/db_backup_20200528_03 0 0 1 rac -1 2020-05-28 21:51:53.000563 rac_full_backup 0 0 0 0 33554432 50908 50948 2 4 1 0 0 49398 117507596 0 4 DISK -556033448 -1 DB_FULL_rac_20200528_215831_000073 /dm7/backup/db_backup_20200528_04 0 0 1 rac -1 2020-05-28 21:58:32.000229 0 0 0 0 33554432 50908 50954 2 4 1 0 0 49398 117507596 0 5 DISK 2085599548 -1 DB_FULL_rac_20200528_220043_000211 /dm7/backup/db_backup_20200528_05 0 0 1 rac -1 2020-05-28 22:00:44.000485 0 5 0 0 33554432 50908 50960 2 4 1 0 0 49398 117507596 0 6 DISK 2023209010 -1 DB_FULL_rac_20200528_220405_000089 /dm7/backup/db_backup_20200528_06 0 0 1 rac -1 2020-05-28 22:04:09.000361 0 0 0 0 33554432 50908 50966 4 4 3 0 0 49398 117507596 0 7 DISK -1507864128 2023209010 DB_FULL_rac_20200528_220405_000089_1 /dm7/backup/db_backup_20200528_06/db_backup_20200528_06_1 0 0 1 rac -1 2020-05-28 22:04:09.000254 0 0 0 0 33554432 50908 50907 1 1 1 0 0 49398 117507596 0 8 DISK -1887457992 2023209010 DB_FULL_rac_20200528_220405_000089_0 /dm7/backup/db_backup_20200528_06/db_backup_20200528_06_0 0 0 1 rac -1 2020-05-28 22:04:09.000274 0 0 0 0 33554432 50908 50907 1 1 1 0 0 49398 117507596 0 9 DISK -794647678 2023209010 DB_FULL_rac_20200528_220405_000089_2 /dm7/backup/db_backup_20200528_06/db_backup_20200528_06_2 0 0 1 rac -1 2020-05-28 22:04:09.000300 0 0 0 0 33554432 50908 50907 1 1 1 0 0 49398 117507596 0 9 rows got used time: 00:00:01.034. Execute id is 38.
3.備份資料庫
完全備份和增量備份是資料庫備份的最常用策略,本節將詳細介紹這兩種型別備份。
完全備份
執行資料庫備份,資料庫必須處於OPEN狀態,MOUNT和SUSPEND狀態下不允許執行資料庫備份。
資料庫完全備份中包含了指定庫的全部有效資料頁,為了保證資料安全應該對資料庫定期執行完全備份。多久執行一次完全備份才合適,一般規則是資料庫經過頻繁修改後最好執行一次完全備份。
完全備份資料庫步驟如下:
1) 配置歸檔,
2) 保證資料庫處於OPEN狀態。
3) DIsql中輸入備份資料庫語句,最簡單的不設定其他引數的完全備份語句如下:
SQL> backup database full backupset '/dm7/backup/db_backup_20200529_01'; executed successfully used time: 00:00:01.218. Execute id is 39.
備份語句中的引數FULL引數可以省略,不指定備份型別伺服器會預設指定備份型別為完全備份。
增量備份
增量備份指基於指定的庫(或者表空間)的某個備份(完全備份或者增量備份),備份自該備份以來所有發生修改了的資料頁。執行增量備份的主要目的是快速備份資料庫中的修改,減少備份時間和避免重複的備份。
如何制定備份策略要根據可接受的最小恢復時間。例如,每週執行一次完全備份,每天執行一次增量備份,那麼恢復時要重做的歸檔就不會超過一天。
增量備份資料庫步驟如下:
1) 配置歸檔,
2) 保證資料庫處於OPEN狀態。
3) DIsql中輸入備份資料庫語句,最簡單的不設定其他引數的增量備份語句如下:
SQL> backup database increment with backupdir '/dm7/backup/db_backup_20200529_01' backupset '/dm7/backup/db_increment_backup_20200529_02'; executed successfully used time: 00:00:01.172. Execute id is 41.
備份語句中的INCREMENT引數不可省略,該引數用來指定執行的備份型別為增量備份。若要建立累積增量備份,還需要指定CUMULATIVE引數,否則預設為差異增量備份。WITH BACKUPDIR引數用來指定基備份集的搜尋目錄,如果基備份集不在預設目錄該引數不可省略。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-2709366/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- DM7聯機執行SQL語句進行表備份SQL
- DM7聯機執行SQL語句進行歸檔備份SQL
- DM7聯機執行SQL語句進行表空間備份SQL
- DM7使用聯機執行SQL語句進行備份還原SQL
- DM7聯機執行SQL語句進行加密備份與設定跟蹤日誌SQL加密
- Oracle資料庫SQL語句執行過程Oracle資料庫SQL
- DM7使用離線工具DMRMAN執行資料庫備份資料庫
- 使用MySQL Workbench進行資料庫備份MySql資料庫
- Laravel 使用 sql 語句 和 sql 檔案 來建立執行資料庫遷移LaravelSQL資料庫
- 資料庫查詢優化:使用explain分析sql語句執行效率資料庫優化AISQL
- sql語句如何執行的SQL
- SQL語句執行順序SQL
- python使用多執行緒備份資料庫Python執行緒資料庫
- MySQL資料庫詳解(一)SQL查詢語句是如何執行的?MySql資料庫
- 【資料庫】SQL語句資料庫SQL
- Mybatis 動態執行SQL語句MyBatisSQL
- 後臺執行SQL語句(oracle)SQLOracle
- mysql執行sql語句過程MySql
- sql語句執行緩慢分析SQL
- mysql的sql語句執行流程MySql
- SQL 語句的執行順序SQL
- DM7使用DMRMAN執行歸檔備份
- 11. shell多執行緒備份資料庫執行緒資料庫
- Mysqldump 在備庫進行備份時會阻塞備庫的sql_threadMySqlthread
- 使用離線工具dmbackup進行資料庫備份資料庫
- SQL Server資料庫判斷最近一次的備份執行結果SQLServer資料庫
- java連線oracle執行sql語句JavaOracleSQL
- Laravel 獲取執行的sql語句LaravelSQL
- MySQL cron定時執行SQL語句MySql
- DM7使用DMRAMN執行備份集恢復
- Oracle資料庫多條sql執行語句出現錯誤時的控制方式Oracle資料庫SQL
- C#一次執行多條SQL語句,Oracle11g資料庫C#SQLOracle資料庫
- Shell多執行緒備份資料庫的指令碼執行緒資料庫指令碼
- 1.4 資料庫和常用SQL語句(正文)——MySQL資料庫命令和SQL語句資料庫MySql
- SQL資料庫備份管理SQL資料庫
- 查詢Oracle正在執行的sql語句及執行該語句的使用者OracleSQL
- Elasticsearch 使用 NFS 進行資料備份ElasticsearchNFS
- SQL Server 查詢歷史執行的SQL語句SQLServer