DM7聯機執行SQL語句進行表空間備份

eric0435發表於2020-08-05

聯機執行SQL語句進行表空間備份
下面將描述瞭如何使用DIsql完成最基本的表空間備份及實施一些備份策略,如限制備份集大小、加密備份等。主要內容包括:
1. 概述
2. 設定備份選項
3. 備份表空間

1. 概述
在DIsql工具中使用BACKUP語句也可以備份單個表空間。同備份資料庫一樣,執行表空間備份伺服器也必須執行在歸檔模式下,啟動DIsql輸入以下語句即可備份表空間:

SQL> backup tablespace main backupset 'ts_backup_main_01';
executed successfully
used time: 00:00:13.841. Execute id is 45.

預設的備份目錄為+DMDATA/data/rac/bak

SQL> select * from v$dm_ini where para_name='BAK_PATH';
LINEID     PARA_NAME PARA_VALUE           MIN_VALUE MAX_VALUE MPP_CHK SESS_VALUE           FILE_VALUE           DESCRIPTION      PARA_TYPE
---------- --------- -------------------- --------- --------- ------- -------------------- -------------------- ---------------- ---------
1          BAK_PATH  +DMDATA/data/rac/bak NULL      NULL      N       +DMDATA/data/rac/bak +DMDATA/data/rac/bak backup file path READ ONLY
used time: 9.531(ms). Execute id is 48.
SQL>
SQL> select * from v$backupset where backup_path like '+DMDATA/data/rac/bak%';
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        2044941324  -1          TS_FULL_MAIN_20200529_091214_000914 +DMDATA/data/rac/bak/ts_backup_main_01 0           0           2           MAIN        4                     2020-05-29 09:12:22.000279        0            0              0           0           33554432    50908                50990                1           1           1            0           0           49398                117507596    0
used time: 00:00:01.041. Execute id is 50.
ASM>cd ts_backup_main_01
+DMDATA/data/rac/bak/ts_backup_main_01
Used time: 2.098(ms).
ASM>ls
        file : ts_backup_main_01.bak
        file : ts_backup_main_01.meta
total count 2.
Used time: 3.583(ms).

備份集“ts_backup_main_01”會生成到預設的備份路徑下。如要設定其他備份選項需參考下文的聯機備份表空間語法。

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

表空間名:指定備份的表空間名稱(除了temp表空間)。

FULL|INCREMENT:備份型別,FULL表示完全備份,INCREMENT表示增量備份。若不指定,預設為完全備份。

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

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

BASE ON:用於增量備份中,指定基備份集目錄。

TO:指定生成備份名稱。若未指定,系統隨機生成,預設備份名格式為:DB_備份型別_表空間名_備份時間。其中,備份時間為開始備份的系統時間。

BACKUPSET:指定當前備份集生成路徑。若指定為相對路徑,則在預設備份路徑中生成備份集。若不指定,則在預設備份路徑下以約定規則生成預設的表空間備份集目錄。表空間級備份預設備份集目錄名生成規則:TS_表空間名_備份型別_時間,如
TS_MAIN_INCREMENT_20160518_143057_123456。表明該備份集為2016年5月18日14時30分57秒123456毫秒時生成的表空間名為MAIN的表空間增量備份集。若表空間名稱超長,使上述完整名稱長度大於128個位元組,則去掉表空間名欄位,調整為TS_備份型別_時間。

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。

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. 當備份資料超過限制大小時,會生成新的備份檔案,新的備份檔名是初始檔名後加檔案編號。
2. 系統處於歸檔模式下時,才允許進行表空間備份。
3. MOUNT狀態下,不允許進行表空間備份。
4. MPP環境不允許進行表空間備份。

2. 設定備份選項
表空間備份也可指定備份集路徑、介質型別、備份名等備份選項。

增量備份指定基備份目錄
BASE ON 引數用於增量備份中,用來指定基備份集的目錄。如果不指定該引數,會在備份搜尋目錄中搜尋最近一次的完全備份或增量備份作為這次增量備份的基備份。若需要在特定的備份集基礎上執行增量備份就需要使用該引數。

下面以增量備份使用者MAIN表空間為例,指定BASE ON引數執行增量備份:

SQL> backup tablespace main backupset '/dm7/backup/ts_main_full_bak_20200529_01';
executed successfully
used time: 00:00:01.133. Execute id is 51.
SQL> backup tablespace main increment backupset '/dm7/backup/ts_main_increment_bak_20200529_01';
executed successfully
used time: 00:00:01.126. Execute id is 52.
SQL> select sf_bakset_backup_dir_add('disk','/dm7/backup/ts_main_full_bak_20200529_01');
LINEID     SF_BAKSET_BACKUP_DIR_ADD('disk','/dm7/backup/ts_main_full_bak_20200529_01')
---------- ---------------------------------------------------------------------------
1          1
used time: 2.024(ms). Execute id is 53.
SQL> select sf_bakset_backup_dir_add('disk','/dm7/backup/ts_main_increment_bak_20200529_01');
LINEID     SF_BAKSET_BACKUP_DIR_ADD('disk','/dm7/backup/ts_main_increment_bak_20200529_01')
---------- --------------------------------------------------------------------------------
1          1
used time: 1.520(ms). Execute id is 54.
SQL> select * from v$backupset where backup_path like '/dm7/backup/ts%';
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        1493450986  -1          TS_FULL_MAIN_20200529_111133_000175 /dm7/backup/ts_main_full_bak_20200529_01      0           0           2           MAIN        4                                               2020-05-29 11:11:34.000272        0            0              0           0           33554432    50908                50996                1           1           1            0           0           49398                117507596    0
2          DISK        1885674227  -1          TS_INCR_MAIN_20200529_111346_000167 /dm7/backup/ts_main_increment_bak_20200529_01 1           0           2           MAIN        4           TS_FULL_MAIN_20200529_111133_000175 2020-05-29 11:13:47.000258        0            0              0           0           33554432    50908                51002                1           1           1            0           0           49398                117507596    0
used time: 00:00:01.048. Execute id is 55.
SQL> backup tablespace main increment base on backupset '/dm7/backup/ts_main_full_bak_20200529_01' backupset '/dm7/backup/ts_main_increment_bak_20200529_02';
executed successfully
used time: 00:00:01.133. Execute id is 57.
SQL> select sf_bakset_backup_dir_add('disk','/dm7/backup/ts_main_increment_bak_20200529_02');
LINEID     SF_BAKSET_BACKUP_DIR_ADD('disk','/dm7/backup/ts_main_increment_bak_20200529_02')
---------- --------------------------------------------------------------------------------
1          1
used time: 1.748(ms). Execute id is 58.
SQL> select * from v$backupset where backup_path like '/dm7/backup/ts%';
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        1493450986  -1          TS_FULL_MAIN_20200529_111133_000175 /dm7/backup/ts_main_full_bak_20200529_01      0           0           2           MAIN        4                                               2020-05-29 11:11:34.000272        0            0              0           0           33554432    50908                50996                1           1           1            0           0           49398                117507596    0
2          DISK        1885674227  -1          TS_INCR_MAIN_20200529_111346_000167 /dm7/backup/ts_main_increment_bak_20200529_01 1           0           2           MAIN        4           TS_FULL_MAIN_20200529_111133_000175 2020-05-29 11:13:47.000258        0            0              0           0           33554432    50908                51002                1           1           1            0           0           49398                117507596    0
3          DISK        707233150   -1          TS_INCR_MAIN_20200529_111805_000417 /dm7/backup/ts_main_increment_bak_20200529_02 1           0           2           MAIN        4           TS_FULL_MAIN_20200529_111133_000175 2020-05-29 11:18:06.000513        0            0              0           0           33554432    50908                51008                1           1           1            0           0           49398                117507596    0
used time: 00:00:01.045. Execute id is 59.

上述示例中,增量備份ts_main_increment_bak_20200529_02若不指定備份集'/dm7/backup/ts_main_full_bak_20200529_01作為基備份,那麼預設會使用最近一次的備份集/dm7/backup/ts_main_increment_bak_20200529_01作為基備份。

3. 備份表空間
同資料庫備份一樣,表空間備份也可分為完全備份和增量備份。本節主要內容包括:
1. 完全備份
2. 增量備份

1.完全備份
執行表空間備份,資料庫必須處於OPEN狀態,MOUNT和SUSPEND狀態下不允許執行表空間備份。表空間備份就是複製表空間內所有資料檔案有效資料的過程。DM7僅支援表空間聯機備份,完全備份一個表空間步驟如下:
1) 配置歸檔 。
2) 保證資料庫處於OPEN狀態。
3) DIsql中輸入備份表空間語句,最簡單的不設定其他引數的完全備份表空間語句,如下所示:

SQL> backup tablespace main full backupset '/dm7/backup/ts_main_full_bak_20200529_02';
executed successfully
used time: 00:00:01.129. Execute id is 68.

備份語句中的FULL引數可以省略,不指定備份型別伺服器會預設指定備份型別為完全備份。

SQL> select sf_bakset_backup_dir_add('disk','/dm7/backup/ts_main_full_bak_20200529_02');
LINEID     SF_BAKSET_BACKUP_DIR_ADD('disk','/dm7/backup/ts_main_full_bak_20200529_02')
---------- ---------------------------------------------------------------------------
1          1
used time: 2.508(ms). Execute id is 69.
SQL> select * from v$backupset where backup_path='/dm7/backup/ts_main_full_bak_20200529_02';
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        -1442575362 -1          TS_FULL_MAIN_20200529_112705_000332 /dm7/backup/ts_main_full_bak_20200529_02 0           0           2           MAIN        4                     2020-05-29 11:27:06.000424        0            0              0           0           33554432    50908                51014                1           1           1            0           0           49398                117507596    0
used time: 00:00:01.046. Execute id is 70.

2.增量備份
執行表空間增量備份的主要目的同資料庫增量備份一樣是為了快速備份資料庫中的修改,減少備份時間和避免重複的備份。
增量備份表空間步驟如下:
1) 配置歸檔。
2) 保證資料庫處於OPEN狀態。
3) DIsql中輸入備份表空間語句,最簡單的不設定其他引數的增量備份語句如下:

SQL> backup tablespace main increment base on backupset '/dm7/backup/ts_main_full_bak_20200529_02' backupset '/dm7/backup/ts_main_increment_bak_2020052903';
executed successfully
used time: 00:00:01.134. Execute id is 71.
SQL> select sf_bakset_backup_dir_add('disk','/dm7/backup/ts_main_increment_bak_2020052903');
LINEID     SF_BAKSET_BACKUP_DIR_ADD('disk','/dm7/backup/ts_main_increment_bak_2020052903')
---------- -------------------------------------------------------------------------------
1          1
used time: 1.720(ms). Execute id is 72.
SQL>  select * from v$backupset where backup_path like '%/dm7/backup/ts_main_%20200529%';
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        1493450986  -1          TS_FULL_MAIN_20200529_111133_000175 /dm7/backup/ts_main_full_bak_20200529_01      0           0           2           MAIN        4                                               2020-05-29 11:11:34.000272        0            0              0           0           33554432    50908                50996                1           1           1            0           0           49398                117507596    0
2          DISK        1885674227  -1          TS_INCR_MAIN_20200529_111346_000167 /dm7/backup/ts_main_increment_bak_20200529_01 1           0           2           MAIN        4           TS_FULL_MAIN_20200529_111133_000175 2020-05-29 11:13:47.000258        0            0              0           0           33554432    50908                51002                1           1           1            0           0           49398                117507596    0
3          DISK        707233150   -1          TS_INCR_MAIN_20200529_111805_000417 /dm7/backup/ts_main_increment_bak_20200529_02 1           0           2           MAIN        4           TS_FULL_MAIN_20200529_111133_000175 2020-05-29 11:18:06.000513        0            0              0           0           33554432    50908                51008                1           1           1            0           0           49398                117507596    0
4          DISK        -1442575362 -1          TS_FULL_MAIN_20200529_112705_000332 /dm7/backup/ts_main_full_bak_20200529_02      0           0           2           MAIN        4                                               2020-05-29 11:27:06.000424        0            0              0           0           33554432    50908                51014                1           1           1            0           0           49398                117507596    0
5          DISK        -738478264  -1          TS_INCR_MAIN_20200529_113155_000766 /dm7/backup/ts_main_increment_bak_2020052903  1           0           2           MAIN        4           TS_FULL_MAIN_20200529_112705_000332 2020-05-29 11:31:56.000863        0            0              0           0           33554432    50908                51020                1           1           1            0           0           49398                117507596    0
used time: 00:00:01.062. Execute id is 73.

備份語句中指定的INCREMENT參數列示執行的備份型別為增量備份,不可省略。若要建立累積增量備份,還需要指定CUMULATIVE引數,否則預設為差異增量備份。若基備份不在預設備份目錄,WITH BACKUPDIR引數必須指定,用於搜尋基備份集。


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

相關文章