DM7联机执行SQL语句进行表备份

联机执行SQL语句进行表备份
下面将介绍使用DIsql完成表备份及实施一些备份策略,如限制备份集大小、加密备份等。主要内容包括:
1. 概述
2. 设置备份选项
3. 备份表

与备份数据库与表空间不同,备份表不需要服务器配置归档,DIsql中输入以下即可备份用户表:

SQL> backup table t1 backupset 'tab_t1_bak_01';
executed successfully
used time: 00:00:14.215. Execute id is 77.

SQL> select * from v$backupset where backup_path like '+DMDATA/data/rac/bak/tab%';

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        -1366932633 -1          TAB_T1_20200529_144738_000092 +DMDATA/data/rac/bak/tab_t1_bak_01 2           0           3           SYSDBA.T1   -1                    2020-05-29 14:47:45.000864        0            0              0           0           33554432    50908                51025                1           0           1            0           0           49398                117507596    0

used time: 00:00:01.064. Execute id is 79.

备份集“tab_t1_bak_01”会生成到默认的备份路径下。如要设置其他备份选项需参考下文的备份表语法。
语法如下:

BACKUP TABLE < 表名>
[TO < 备份名>]
BACKUPSET ['< 备份集路径>'] [DEVICE TYPE < 介质类型> [PARMS '< 介质参数>']]
[BACKUPINFO '< 备份集描述>']
[MAXPIECESIZE < 备份片限制大小>]
[IDENTIFIED BY < 加密密码>[WITH ENCRYPTION][ENCRYPT WITH < 加密算法>]]
[COMPRESSED [LEVEL < 压缩级别>]]
[TRACE FILE ''] [TRACE LEVEL ]

TABLE:指定备份的表,只能备份用户表。

TO:指定生成备份名称。若未指定,系统随机生成,默认备份名格式为:DB_备份类型_表名_备份时间。其中,备份时间为开始备份的系统时间。

BACKUPSET:指定当前备份集生成路径,若指定为相对路径,则在默认备份路径中生成备份集。若不指定具体备份集路径,则在默认备份路径下以约定规则生成默认的表备份集目录。表备份默认备份集目录名生成规则:TAB_表名_BTREE_时间,如
TAB_T1_BTREE_20160518_143057_123456。表明该备份集为2016年5月18日14时30分57秒123456毫秒时生成的表名为T1的表备份集。若表名超长,使上述完整名称长度大于128个字节,则去掉表名字段,调整为TAB_BTREE_时间。

DEVICE TYPE:指存储备份集的介质类型,表备份暂时只支持DISK,表示存储备份集到磁盘。

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相关内容。

使用说明:
1. 支持对用户的非分区行存储表和堆表进行备份。其中,系统表、临时表、物化视图表、物化视图附属表和日志表、特定模式(DBG_PKG/INFORMATION_SCHEMA/INFO_SCHEM/SYSREP/SYSGEO/SYSJOB/SYSCPT/SYS)下的表不支持备份。表列类型为对象类型的表不支持表备份。表备份不备份表上的注释,default表达式中函数定义,所以还原时需用户自行确认。
2. 当备份数据超过限制大小时,会生成新的备份文件,新的备份文件名是初始文件名后加文件编号。
3. 表备份时,其所属表空间必须处于联机状态。
4. 目前表备份不支持备份到TAPE介质上。

2. 设置备份选项
表备份常用的备份选项有设置备份名、设置备份集路径、指定介质参数、添加备份描述等,设置方式同数据库备份相同。

3. 备份表
表备份拷贝指定表所使用的所有数据页到备份集中,并记录各个数据页之间的逻辑关系用来恢复表数据结构。表备份均为联机完全备份,不需要备份归档日志,不存在增量备份之说。当数据库中某张表比较重要而又没必要备份整个数据库或表空间时就可以选择表备份。完整的备份表步骤如下:
1) 保证数据库处于OPEN状态。
2) 创建待备份的表TAB_01:

SQL> create table tab_01(c1 int);
executed successfully
used time: 32.117(ms). Execute id is 80.

3) DIsql中输入备份表语句,简单的备份语句如下:

SQL> backup table tab_01 to tab_tab_01_backup_20200529 backupset 'table_tab_01_backup_20200529';
executed successfully
used time: 00:00:13.981. Execute id is 81.

上面的语句将在默认备份目录+DMDATA/data/rac/bak(由BAK_PATH参数所指定)中生成备份集

SQL> select * from v$backupset where backup_path='+DMDATA/data/rac/bak/table_tab_01_backup_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        2025284018  -1          TAB_TAB_01_BACKUP_20200529 +DMDATA/data/rac/bak/table_tab_01_backup_20200529 2           0           3           SYSDBA.TAB_01 -1                    2020-05-29 15:08:24.000485        0            0              0           0           33554432    50908                51055                1           0           1            0           0           49398                117507596    0

used time: 00:00:01.063. Execute id is 82.

DM7联机执行SQL语句进行表空间备份

联机执行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参数必须指定,用于搜索基备份集。

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 ‘]][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参数用来指定基备份集的搜索目录,如果基备份集不在默认目录该参数不可省略。