注册
DISQL工具 数据库备份
专栏/技术分享/ 文章详情 /

DISQL工具 数据库备份

BigQ 2026/07/16 147 0 0
摘要

DISQL工具
数据库备份

目录
主要功能 1
1 数据库备份 1
1.1 完全备份 1
1.2 增量备份 1
1.2.1 WITH BACKUPDIR 2
1.2.2 BASE ON BACKUPSET 5
1.3 备份选项 6
1.3.1 设置备份名 7
1.3.2 指定备份集路径 8
1.3.3 指定介质类型 8
1.3.4 添加备份描述 10
1.3.5 限制备份片大小 10
1.3.6 备份压缩 11
1.3.7 并行备份 11
1.3.8 DDL_CLONE 12
1.3.9 备份加密 12
1.3.10 设置跟踪日志文件 12
1.4 表空间备份 13
1.5 表备份 13
1.6 归档备份 13

主要功能
主要用于联机数据备份与还原,包括库备份、表空间备份、表备份与还原。其中库、表空间备份需要处于归档模式。
1 数据库备份
1.1 完全备份
–备份语句中的参数 FULL 可以省略,不指定备份类型会默认指定备份类型为完全备份
SQL> backup database full backupset ‘/dmbak/mydm_dbfull’;
该命令,会在/dmbak目录下,创建 mydm_full_dbbak 目录,并在该目录中生成备份文件
[dmdba@dm8 ~]$ cd /dmbak/mydm_full_dbbak/
[dmdba@dm8 mydm_full_dbbak]$ ls -lrth
total 32M
-rw-r–r--. 1 dmdba dinstall 32M Jun 8 15:48 mydm_full_dbbak.bak
-rw-r–r--. 1 dmdba dinstall 69K Jun 8 15:48 mydm_full_dbbak_1.bak
-rw-r–r--. 1 dmdba dinstall 122K Jun 8 15:48 mydm_full_dbbak.meta
1.2 增量备份
增量备份指基于指定的库(或者表空间)的某个备份(完全备份或者增量备份),备份自该备份以来所有发生修改的数据页。备份语句中的 INCREMENT 参数不可省略,该参数用来指定执行的备份类型为增量备份。若要创建累积增量备份,还需要指定 CUMULATIVE 参数,否则缺省为差异增量备份。WITH BACKUPDIR 参数用来指定基备份集的搜索目录。
–增量备份
SQL> backup database increment with backupdir ‘/dmbak/mydm_dbfull’ backupset ‘/dmbak/mydm_dbfull/mydm_increment_01’;

–累积增量备份
SQL> backup database increment cumulative with backupdir ‘/dmbak/mydm_dbfull’ backupset ‘/dmbak/mydm_dbfull/mydm_increment_01’;

–各种备份之间的关系
SQL> select backup_name,type,base_name,BEGIN_LSN,END_LSN,CUMULATIVE from SYS.V$BACKUPSET;

行号 BACKUP_NAME TYPE BASE_NAME BEGIN_LSN END_LSN CUMULATIVE


1 T_FULLBAK 0 48371 48379 0
2 T_INCREMENTBAK_1 1 T_FULLBAK 48391 48391 0
3 T_INCREMENTBAK_2 1 T_FULLBAK 48391 48403 1
1.2.1 WITH BACKUPDIR
自动搜索最近一次有效的全备 / 增量备份作为本次增量的基备份。
增量备份必须依赖已存在的全量 / 增量基备份,显式指定WITH BACKUPDIR则在指定目录查找基备份,不指定时默认在增量备份自身存放目录检索,目录内无有效基备份会报 - 8036 错误,存在有效基备份,增量备份会自动绑定同目录下对应的全量备份。
以下为实验过程:
–执行第一次全备
SQL> backup database to FULLBAK_01 backupset ‘/dmbak/mydm_dbfull_01’;

–执行第二次全备
SQL> backup database to FULLBAK_02 backupset ‘/dmbak2/mydm_dbfull_02’;

–指定基备份集的搜索目录,进行增量备份,存放在/dmbak3目录下
SQL> backup database increment with backupdir ‘/dmbak/mydm_dbfull_01’ to INCRMMENT_01 backupset ‘/dmbak3/mydm_increment_01’;

–查询增量备份关系
SQL> select backup_name,type,base_name from SYS.V$BACKUPSET;

行号 BACKUP_NAME TYPE BASE_NAME


1 FULLBAK_01 0
2 FULLBAK_02 0
3 INCRMMENT_01 1 FULLBAK_01

–删除增量备份信息

–不指定基备份集的搜索目录,进行增量备份,存放在/dmbak3目录下
SQL> backup database increment to INCRMMENT_02 backupset ‘/dmbak3/mydm_increment_02’;
backup database increment to INCRMMENT_02 backupset ‘/dmbak3/mydm_increment_02’;
[-8036]:无基备份或无匹配基备份.
已用时间: 00:00:03.163. 执行号:0.

–再次执行增量备份,此时修改存放路径为/dmbak,执行增量备份成功
SQL> backup database increment to INCRMMENT_03 backupset ‘/dmbak/mydm_increment_03’;
操作已执行
已用时间: 00:00:04.434. 执行号:2209.

–查询增量备份关系
SQL> select backup_name,type,base_name from SYS.V$BACKUPSET;

行号 BACKUP_NAME TYPE BASE_NAME


1 FULLBAK_01 0
2 FULLBAK_02 0
3 INCRMMENT_03 1 FULLBAK_01

–删除增量备份信息

–再次执行增量备份,此时修改存放路径为/dmbak2,执行增量备份成功
SQL> backup database increment to INCRMMENT_04 backupset ‘/dmbak2/mydm_increment_04’;
操作已执行
已用时间: 00:00:04.392. 执行号:2211.

–查询增量备份关系
SQL> select backup_name,type,base_name from SYS.V$BACKUPSET;

行号 BACKUP_NAME TYPE BASE_NAME


1 FULLBAK_01 0
2 FULLBAK_02 0
3 INCRMMENT_04 1 FULLBAK_02

已用时间: 51.422(毫秒). 执行号:2212.
1.2.2 BASE ON BACKUPSET
SQL> backup database increment base on backupset ‘/dmbak/mydm_dbfull_01’ to incrmment_02 backupset ‘/dmbak/mydm_increment_02’;
强制指定某一个基备份集作为本次增量的基备份,不管它是不是最新。
以下为实验过程:
–执行第一次全备
SQL> backup database to FULLBAK_01 backupset ‘/dmbak/mydm_dbfull_01’;

–执行第二次全备
SQL> backup database to FULLBAK_02 backupset ‘/dmbak/mydm_dbfull_02’;

–不指定基备份集的搜索目录,进行增量备份
SQL> backup database increment to INCRMMENT_01 backupset ‘/dmbak/mydm_increment_01’;

–查询增量备份关系
SQL> select backup_name,type,base_name from SYS.V$BACKUPSET;

行号 BACKUP_NAME TYPE BASE_NAME


1 FULLBAK_01 0
2 FULLBAK_02 0
3 INCRMMENT_01 1 FULLBAK_02

–删除增量备份

–指定基备份集
SQL> backup database increment base on backupset ‘/dmbak/mydm_dbfull_01’ to incrmment_02 backupset ‘/dmbak/mydm_increment_02’;

–查询增量备份关系
SQL> select backup_name,type,base_name from SYS.V$BACKUPSET;

行号 BACKUP_NAME TYPE BASE_NAME


1 FULLBAK_01 0
2 FULLBAK_02 0
3 INCRMMENT_02 1 FULLBAK_01
1.3 备份选项
SQL> backup database to weekly_full_bak backupset ‘/dmbak/mydm_fullbak’ device type disk backupinfo ‘完全备份’ maxpiecesize 300 compressed level 5 parallel 8;
该命令,会在/dmbak目录下,创建 mydm_fullbak ,并在该目录中生成备份文件
[dmdba@dm8 ~]$ cd /dmbak/mydm_fullbak/
[dmdba@dm8 mydm_fullbak]$ ls -lrth
total 428K
drwxr-xr-x. 2 dmdba dinstall 59 Jun 8 16:07 mydm_fullbak_1
drwxr-xr-x. 2 dmdba dinstall 59 Jun 8 16:07 mydm_fullbak_2
drwxr-xr-x. 2 dmdba dinstall 59 Jun 8 16:07 mydm_fullbak_0
-rw-r–r--. 1 dmdba dinstall 6.0K Jun 8 16:07 mydm_fullbak.bak
-rw-r–r--. 1 dmdba dinstall 418K Jun 8 16:07 mydm_fullbak.meta
1.3.1 设置备份名
系统为每个备份指定一个备份名,它可作为识别备份的一种方式。如果不显式地指定备份名,系统会默认为备份创建一个备份名。备份名的格式为:DB_库名_备份类型_备份时间,DB 表示备份为数据库备份,备份类型表示该备份为完全备份还是增量备份,数据库名为当前连接数据库的名称,备份时间为开始执行备份的系统时间。
–不指定,使用默认名执行备份
SQL> backup database full backupset ‘/dmbak/mydm_fullbak_all/’;

–注册备份目录,否则数据库找不到备份信息
SQL> select SF_BAKSET_BACKUP_DIR_ADD(‘DISK’,’/dmbak’);

–查看备份信息
SQL> select backup_name,BACKUP_PATH from SYS.V$BACKUPSET;

行号 BACKUP_NAME BACKUP_PATH


1 DB_DAMENG_FULL_20260608_163440_343113 /dmbak/mydm_fullbak

–设置备份名并进行备份
SQL> backup database to WEEKLY_FULL_BAK backupset ‘/dmbak/mydm_fullbak_new’;

–查看备份信息
SQL> select backup_name,BACKUP_PATH from SYS.V$BACKUPSET;

行号 BACKUP_NAME BACKUP_PATH


1 DB_DAMENG_FULL_20260608_163440_343113 /dmbak/mydm_fullbak
2 WEEKLY_FULL_BAK /dmbak/mydm_fullbak_new
1.3.2 指定备份集路径
备份语句中的 BACKUPSET 参数用于指定备份集的输出路径。如果仅指定该关键字,不指定目标备份集目录,那么将会在数据库的默认备份目录下自动生成备份集。
也可以指定 FORMAT 参数,系统会对该格式串进行解析,使用相应字段替换其中包含的占位符生成备份集路径。
–在 backupset 指定目录生成备份,否则在数据文件目录下的 bak 目录下生成
SQL> backup database full backupset ‘/dmbak/mydm_fullbak_all/’;

–指定 format 参数
SQL> backup database format ‘/dmbak/%R_%D_%T’;

[dmdba@dm8 DB_08_20260608]$ ls -lrth
total 33M
-rw-r–r--. 1 dmdba dinstall 33M Jun 8 17:51 DB_08_20260608.bak
-rw-r–r--. 1 dmdba dinstall 13K Jun 8 17:51 DB_08_20260608_1.bak
-rw-r–r--. 1 dmdba dinstall 122K Jun 8 17:51 DB_08_20260608.meta
1.3.3 指定介质类型
DM8 自定义 SBT 接口(一套 API 函数),承担备份数据在存储介质上的实际读写动作;所有存储介质读写操作,均由 介质管理层(MML) 调用 SBT 接口执行。
支持两类存储介质:磁盘(DISK)、磁带(TAPE)。
接口库文件实现:

  1. 磁盘介质
    SBT 接口实现库:dmsbt
    ▪Windows:dmsbt.dll
    ▪Linux/Unix 等非 Windows 系统:dmsbt.so
  2. 磁带介质
    默认实现库:dmsbtex
    ▪Windows:dmsbtex.dll
    ▪Linux:dmsbtex.so
    第三方磁带存储对接要求:
  3. 第三方库文件名固定命名:Windows 下为 dmsbtex.dll,非 Windows 环境为 dmsbtex.so;
  4. 使用第三方库替换 DM8 原有同名 dmsbtex 库文件,即可完成适配接入。
    –不指定介质类型
    SQL> backup database backupset ‘/dmbak/T_DEVICE_TYPE’;

–注册备份目录
SQL> select SF_BAKSET_BACKUP_DIR_ADD(‘DISK’,’/dmbak’);
–查询备份信息
SQL> select DEVICE_TYPE,BACKUP_PATH from SYS.V$BACKUPSET;

行号 DEVICE_TYPE BACKUP_PATH


1 DISK /dmbak/T_DEVICE_TYPE

–指定介质类型
SQL> backup database backupset ‘/dmbak/T_DEVICE_TYPE_2’ device type disk;
–查询备份信息
SQL> select DEVICE_TYPE,BACKUP_PATH from SYS.V$BACKUPSET;

行号 DEVICE_TYPE BACKUP_PATH


1 DISK /dmbak/T_DEVICE_TYPE
2 DISK /dmbak/T_DEVICE_TYPE_2
1.3.4 添加备份描述
联机备份可选择对执行的备份添加描述信息,相比备份名参数,描述信息可以更详细地对备份类型、用途、场景等进行说明。描述信息最大长度支持 256 个字节。
–backupinfo 关键字添加描述信息
SQL> backup database backupset ‘/dmbak/T_BAK_INFO’ backupinfo ‘数据库完全备份’;
操作已执行

SQL> select DESC#,BACKUP_PATH from SYS.V$BACKUPSET;

行号 DESC# BACKUP_PATH


1 数据库完全备份 /dmbak/T_BAK_INFO
1.3.5 限制备份片大小
MAXPIECESIZE 参数用于控制单个备份片的大小,当介质管理器对单个文件的大小有限制或者需要备份的数据文件很大时就可以使用这个参数。MAXPIECESIZE 不能大于磁盘剩余空间大小,否则报错磁盘空间不足。
MAXPIECESIZE 指定了单个备份片文件大小的上限,单位为 MB,最小为 128MB,32 位系统最大可设置为 2GB,64 位系统最大可设置为 128GB。如果不设置该参数则默认为最大取值。例如,要限制备份片大小不超过 300MB,可指定 MAXPIECESIZE 300,备份时会限定所有的备份片大小不超过 300MB。
限制备份片大小主要用于解决文件系统或介质管理器对文件最大值的限制小于备份片默认值的情况,当备份片较大时会导致无法存储。
–指定压缩级别
SQL> backup database backupset ‘/dmbak/T_MAXPIECESIZE’ maxpiecesize 300;
1.3.6 备份压缩
压缩选项有不同的压缩级别可以选择,取值范围为 0~9。0 表示不压缩,1 表示 1 级压缩,9 表示 9 级压缩。压缩级别越高,压缩越慢,但压缩比越高。若仅指定 COMPRESSED,则压缩级别为 1。
–设置压缩级别
SQL> backup database backupset ‘/dmbak/T_COMPRESSED’ compressed level 5;

SQL> select COMPRESS_LEVEL,BACKUP_PATH from SYS.V$BACKUPSET;

行号 COMPRESS_LEVEL BACKUP_PATH


1 5 /dmbak/T_COMPRESSED
1.3.7 并行备份
支持对库级和表空间级的并行备份,执行备份时实际使用的并行数由用户指定的并行数和实际可使用的最大并行数决定,而实际可使用的最大并行数由数据文件的个数决定。
–指定并行备份
SQL> backup database backupset ‘/dmbak/T_PARALLEL’ parallel 8;

–当前数据库只有3个数据文件,所以实际执行的为 parallel 3
[dmdba@dm8 T_PARALLEL]$ pwd
/dmbak/T_PARALLEL
[dmdba@dm8 T_PARALLEL]$ ls -lrt
total 440
drwxr-xr-x. 2 dmdba dinstall 55 Jun 9 10:20 T_PARALLEL_2
drwxr-xr-x. 2 dmdba dinstall 55 Jun 9 10:20 T_PARALLEL_1
drwxr-xr-x. 2 dmdba dinstall 55 Jun 9 10:20 T_PARALLEL_0
-rw-r–r--. 1 dmdba dinstall 13312 Jun 9 10:20 T_PARALLEL.bak
-rw-r–r--. 1 dmdba dinstall 432128 Jun 9 10:20 T_PARALLEL.meta
1.3.8 DDL_CLONE
该参数只能用于完全备份中,表示仅拷贝所有的元数据不拷贝数据。如对于数据库中的表来说,只备份表的定义不备份表中数据。表空间和表备份不支持该参数。数据库克隆必须备份日志。
SQL> backup database ddl_clone to t_fullbak backupset ‘/dmbak/mydm_ddlbak’;
1.3.9 备份加密
备份加密包括加密密码、加密类型和加密算法三个要素。加密密码通过使用 IDENTIFIED BY<加密密码>来指定,使用备份集的时候必须输入对应密码。加密类型分为不加密、简单加密和完全加密。简单加密仅仅对部分数据进行加密,加密速度快;完全加密对所有数据执行加密,安全系数高。
–加密密码为 Csdm2rc4,完全加密、加密算法为rc4
SQL> backup database backupset ‘/dmbak/T_ENCRYBAK’ identified by “Csdm2rc4” WITH ENCRYPTION 2 ENCRYPT WITH RC4;
1.3.10 设置跟踪日志文件
日志记录了 SBT 接口的调用过程,通过查看日志可跟踪备份还原过程。TRACE LEVEL 有效值包括 1 和 2。1 表示不启用 TRACE 功能,2 表示启用,系统默认值为 1。
SQL> backup database backupset ‘/dmbak/T_TRACEFILE’ trace file ‘/dmbak/log/dbbak_trace.log’ trace level 2;
1.4 表空间备份
表空间备份是针对特定表空间执行的备份,又称为表空间级备份。表空间备份只能在联机状态下执行,备机、MOUNT、MPP、RAC环境下不允许表空间备份。
SQL> backup tablespace main to tbs_main_bak backupset ‘/dmbak/T_MAINBAK’;
1.5 表备份
表备份则拷贝指定表的所有数据页到备份集中,并会记录各个数据页之间的逻辑关系用以恢复。表备份只能在联机状态下执行,一次表备份操作只能备份一张用户表,并且不支持增量表备份。
SQL> backup table sysdba.t1 backupset ‘/dmbak/TBAK_T1’;
1.6 归档备份
归档日志备份仅备份指定数据库生成的本地归档日志文件,要求归档日志文件的DB_MAGIC 与数据库的 DB_MAGIC 保持一致。如果本地归档目录中包含多个不同数据库的归档日志文件,也只会备份一个特定数据库的归档日志。
SQL> backup archive log all to arch_bak_1 backupset ‘/dmbak/archbak’;

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服