disql备份还原

disql备份还原

前言

本文档根据官方文档,进行整理。

一、概述

在 disql 工具中使用 BACKUP 语句你可以备份整个数据库。通常情况下,在数据库实例配置归档后输入以下语句即可备份数据库:

BACKUP DATABASE BACKUPSET 'db_bak_01';

语句执行完后会在默认的备份路径下生成名为“db_bak_01”的备份集目录。默认的备份路径为 dm.ini 中 BAK_PATH 配置的路径,若未配置 BAK_PATH,则默认使用 SYSTEM_PATH 下的 bak 目录。这是最简单的数据库备份语句,如果要设置其他的备份选项需了解联机备份数据库的语法。

1、语法

BACKUP DATABASE[<备份类型>] [<指定备份集子句>] [TO <备份名>] [BACKUPSET '<备份集路径>'] [DEVICE TYPE <介质类型> [PARMS '<介质参数>']] 
[BACKUPINFO '<备份描述>'] [MAXPIECESIZE <备份片限制大小>] 
[LIMIT <read_limit>|<write_limit>] 
[IDENTIFIED BY <密码>|"<密码>" [WITH ENCRYPTION <TYPE>][ENCRYPT WITH <加密算法>]]
[COMPRESSED [LEVEL <压缩级别>]] [WITHOUT LOG][WITHOUT MIRROR]
[TRACE FILE '<TRACE文件名>'] [TRACE LEVEL <TRACE日志级别>] 
[TASK THREAD <线程数>][PARALLEL [<并行数>] [READ SIZE <拆分块大小>]];
<备份类型>::= FULL|
			[FULL] DDL_CLONE|
			[FULL] SHADOW|
			INCREMENT <increment_statement>
<increment_statement>::= [FROM LSN <lsn>] | <inc_sub_statement>
<inc_sub_statement>::= [CUMULATIVE][<指定基备份子句>]
<指定基备份子句>::= BASE ON BACKUPSET '<基备份目录>'
<指定备份集子句>::= WITH BACKUPDIR ‘<备份集搜索路径>’{,<备份集搜索路径>’}
<read_limit>::= READ SPEED <读速度上限> [WRITE SPEED <写速度上限>]
<write_limit>::= WRITE SPEED <写速度上限>

参数说明:

参数说明
备份类型1️⃣FULL:完全备份,完全备份生成的备份集包含了指定库(或者表空间)的全部有效数据页。
2️⃣DDL_CLONE:数据库克隆,该参数只能用于完全备份中,对于数据库中的表来说,只备份表的定义不备份表中数据。表空间和表备份不支持该参数,数据库克隆必须备份日志
3️⃣SHADOW:影子备份,该参数只能用于完全备份中,表示生成影子备份集,只备份源库的 SYSTEM.DBF 及日志相关信息表空间和表备份不支持该参数,影子备份必须备份日志
4️⃣INCREMENT:增量备份
TO指定生成备份名称(管理工具中可以查看)。若未指定,系统随机生成,默认备份名格式为:DB_备份类型_备份时间。
BACKUPSET指定当前备份集目录。若指定为相对路径,例如 BACKUPSET ‘db_bak_01’,则在默认备份目录中生成备份集。若不指定(命令不写),则在默认备份目录中按约定规则,生成默认备份集目录。
SQL> backup database full;
DEVICE TYPE指存储备份集的介质类型,支持 DISK 和 TAPE,默认 DISK
PARMS只对介质类型为 TAPE 时有效
BACKUPINFO备份的描述信息。
MAXPIECESIZE最大备份片文件大小上限,以 MB 为单位,最小 128MB,32 位系统最大 2GB,64 位系统最大 128GB,缺省为最大取值
LIMIT指定备份时最大的读写文件速度,单位为 MB/S,默认为 0,表示无速度限制。
READ SPEED备份时读速度上限,取值范围 0~2147483647,单位为 MB/S,0 表示无限制。
WRITE SPEED备份时写速度上限,取值范围 0~2147483647,单位为 MB/S,0 表示无限制。
IDENTIFIED BY指定备份时的加密密码
WITH ENCRYPTION指定加密类型,取值范围 0、1、2。0 表示不加密,不对备份文件进行加密处理;
1默认值,表示简单加密,对备份文件设置口令,但文件内容仍以明文方式存储;
2:表示完全数据加密,对备份文件进行完全的加密,备份文件以密文方式存储。
当不指定 WITH ENCRYPTION 子句时,采用简单加密。
ENCRYPT WITH指定加密算法。当不指定 ENCRYPT WITH 子句时,使用 AES256_CFB 加密算法。
COMPRESSED是否对备份数据进行压缩处理。LEVEL 表示压缩等级,取值范围 0~9:0(默认值) 表示不压缩;1 表示 1 级压缩;9 表示 9 级压缩。压缩级别越高,压缩速度越慢,但压缩比越高。
若指定 COMPRESSED,但未指定 LEVEL,则压缩等级默认 1;
若未指定 COMPRESSED,则默认不进行压缩处理。
WITHOUT LOG联机数据库备份是否备份联机日志。如果使用,则表示不备份,否则表示备份。
WITHOUT MIRROR联机数据库备份是否备份镜像文件。如果使用,则表示不备份,否则表示备份。
TRACE LEVEL是否启用 TRACE。有效值 1、2,默认为 1 表示不启用 TRACE,此时若指定了 TRACE FILE,会生成 TRACE 文件,但不写入 TRACE 信息;为 2 启用 TRACE 并在 TRACE 文件中写入 TRACE 相关内容。
TRACE FILE指定生成的 TRACE 文件。启用 TRACE,但不指定 TRACE FILE 时,默认在 DM 数据库系统的 log 目录下生成 DM_SBTTRACE_年月.log 文件;若使用相对路径,则生成在执行码同级目录下;若用户指定 TRACE FILE,则指定的文件不能为已经存在的文件,否则报错。TRACE FILE 不可以为 ASM 文件。
TASK THREAD备份过程中数据处理过程线程的个数,取值范围 0~64,默认为 4。若指定为 0,则调整为 1;若指定超过当前系统主机核数,则调整为主机核数。线程数(TASK THREAD)*并行数(PARALLEL)不得超过 512。
PARALLEL指定**并行备份的并行数和拆分块大小**。并行数取值范围 0~128。若不指定并行数,则默认为 4,若指定为 0 或者 1 均认为非并行备份。若未指定关键字 PARALLEL,则认为非并行备份。
FROM LSN用于增量备份中,指定备份的起始 LSN。起始 LSN 必须小于等于检查点 LSN,用户可以手动刷新检查点 LSN。仅支持库级增量备份
CUMULATIVE用于增量备份中,指明为累积增量备份类型,若不指定则缺省为差异增量备份类型。
WITH BACKUPDIR用于增量备份中,指定基备份的搜索目录。若缺省,自动在以下路径中搜索:默认备份目录(即 BAK_PATH 配置的路径,如果 BAK_PATH 没有配置,则使用 SYSTEM_PATH 配置的路径)、当前备份集目录(即 BACKUPSET 指定的路径,例如 BACKUPSET ‘D:\ bakrman\db_bak’的路径)、当前备份集目录的上一级目录(例如’D:\bakrman’)搜索基备份。如果基备份不在上述路径下,增量备份必须指定该参数
BASE ON BACKUPSET用于增量备份中,指定基备份集路径。

注意

增量备份时,DM不会在默认备份目录或当前备份目录的子目录中搜索基备份集,因此若基备份集在默认备份目录或当前备份目录的子目录中,则需要指定基备份的搜索目录或直接指定基备份集路径,否则将无法搜索到相应的基备份集,备份操作将会失败。

2、常用的备份命令

2.1 设置联机备份路径(BACKUPSET)
  • 指定备份集路径为“/dmdata/dmbak/db_bak_3_01”
BACKUP DATABASE BACKUPSET '/dmdata/dmbak/db_bak_3_01';
2.2 设置备份名(TO)
  • 创建备份集,备份名设置为“FULLBAK01”,备份路径为what
BACKUP DATABASE TO FULLBAK01 BACKUPSET 'what'

备份集名称为FULLBAK01 ,保存路径是/dmdata/dmbak/what
在这里插入图片描述
在这里插入图片描述

2.3 添加备份描述(BACKUPINFO)
  • 创建备份为备份集添加描述信息为“测试备份”
BACKUP DATABASE BACKUPINFO '测试备份';

在这里插入图片描述

2.4 限制备份片大小(MAXPIECESIZE)
  • 创建备份限制备份片大小为 300MB
BACKUP DATABASE BACKUPSET '/dmdata/dmbak/db_bak_3_05' MAXPIECESIZE 300;
2.5 备份压缩(COMPRESSED LEVEL)
  • 执行备份压缩,压缩级别设置为 5
BACKUP DATABASE BACKUPSET '/dmdata/dmbak/db_bak_3_06' COMPRESSED LEVEL 5;
2.6 并行备份(PARALLEL)
  • 创建并行备份,指定并行数为 8
BACKUP DATABASE BACKUPSET '/dmdata/dmbak/db_bak_3_07' PARALLEL 8;

二、数据备份

1、数据库备份

执行数据库备份,数据库必须处于 OPEN 状态,MOUNT 和 SUSPEND 状态下不允许执行数据库备份。,除此之外,还要运行在归档模式

1.1 完全备份

完全备份数据库步骤如下:

  1. 配置归档;
  2. 保证数据库处于 OPEN 状态;
  3. DIsql 中输入备份数据库语句,最简单的不设置其他参数的完全备份语句如下:
BACKUP DATABASE FULL BACKUPSET '/dmdata/dmbak/db_full_bak_01';

备份语句中的参数 FULL 可以省略,不指定备份类型会默认指定备份类型为完全备份。

1.2 增量备份

增量备份指基于指定的库(或者表空间)的某个备份(完全备份或者增量备份),备份自该备份以来所有发生修改的数据页。

增量备份数据库步骤如下:

  1. 配置归档;

  2. 保证数据库处于 OPEN 状态;

  3. disql 中输入备份数据库语句

1.2.1 差异增量备份
  • 最简单的不设置其他参数的增量备份语句如下:
BACKUP DATABASE INCREMENT WITH BACKUPDIR '/dmdata/dmbak' BACKUPSET '/dmdata/dmbak/db_increment_bak_02';
  • 指定基备份集路径/dmdata/dmbak/DB_DAMENG_FULL_20240210_163606_932454
BACKUP DATABASE INCREMENT BASE ON BACKUPSET '/dmdata/dmbak/DB_DAMENG_FULL_20240210_163606_932454' BACKUPSET '/dmdata/dmbak/INC';

/dmdata/dmbak/DB_DAMENG_FULL_20240210_163606_932454这个备份集作为基备份集

  • 指定基备份扫描路径/dmdata/dmbak
BACKUP DATABASE INCREMENT WITH BACKUPDIR '/dmdata/dmbak' BACKUPSET 'DB_DAMENG_INCRE_2024_02_10_16_52_32';

扫描目录'/dmdata/dmbak'找到其中最新的备份集,将其作为基备份集。

WITH BACKUPDIR 参数用来指定基备份集的搜索目录

1.2.2 累积增量备份
BACKUP DATABASE INCREMENT CUMULATIVE;

2、表空间备份

在 disql 工具中使用 BACKUP 语句也可以备份单个表空间。同备份数据库一样,执行表空间备份数据库实例也必须运行在归档模式下

2.1 语法
BACKUP TABLESPACE <表空间名> [FULL | INCREMENT <increment_statement>] [<指定备份集子句>] [TO  <备份名>] [BACKUPSET '<备份集路径>'][DEVICE TYPE <介质类型> [PARMS '<介质参数>']]
[BACKUPINFO '<备份描述>'] [MAXPIECESIZE <备份片限制大小>] 
[LIMIT <read_limit>|<write_limit>] 
[IDENTIFIED BY <密码>|"<密码>" [WITH ENCRYPTION<TYPE>][ENCRYPT WITH <加密算法>]] [COMPRESSED [LEVEL <压缩级别>]][WITHOUT LOG][WITHOUT MIRROR]
[TRACE FILE '<TRACE文件名>'] [TRACE LEVEL <TRACE日志级别>]
[TASK THREAD <线程数>][PARALLEL [<并行数>][READ SIZE <拆分块大小>]];
<inc_sub_statement>::= 参考3.2.2.1.1概述
<read_limit>::= READ SPEED <读速度上限> [WRITE SPEED <写速度上限>]
<write_limit>::= WRITE SPEED <写速度上限>
2.2 完全备份
  • 备份MAIN表空间
BACKUP TABLESPACE MAIN BACKUPSET 'ts_bak_01';
2.3 增量备份

下面以增量备份用户 MAIN 表空间为例

BACKUP TABLESPACE MAIN BACKUPSET 'ts_full_bak_01';
BACKUP TABLESPACE MAIN INCREMENT BACKUPSET 'ts_increment_bak_01';
BACKUP TABLESPACE MAIN INCREMENT BASE ON BACKUPSET 'ts_full_bak_01' BACKUPSET 'ts_increment_bak_02';

上述示例中,增量备份 ts_increment_bak_02 若不指定备份集 ts_full_bak_01 作为基备份,那么默认会使用最近一次的备份集 ts_increment_bak_01 作为基备份。


3、表备份

与备份数据库与表空间不同,备份表不需要服务器配置归档。

3.1 语法
BACKUP TABLE <表名> [TO <备份名>] [BACKUPSET '<备份集路径>'] 
[DEVICE TYPE <介质类型> [PARMS '<介质参数>']] [BACKUPINFO '<备份描述>'] [MAXPIECESIZE <备份片限制大小>] [LIMIT <read_limit>|<write_limit>] 
[IDENTIFIED BY <密码>|"<密码>" [WITH ENCRYPTION <TYPE>][ENCRYPT WITH <加密算法>]] 
[COMPRESSED [LEVEL <压缩级别>]]
[TRACE FILE '<TRACE文件名>'] [TRACE LEVEL <TRACE日志级别>];
<read_limit>::= READ SPEED <读速度上限> [WRITE SPEED <写速度上限>]
<write_limit>::= WRITE SPEED <写速度上限>

使用说明:

  1. 仅支持对用户的非分区的行存储表堆表进行备份,不支持对分区表的备份。在非分区表中,也不支持对临时表、物化视图表、物化视图附属表、日志表和特定模式(DBG_PKG/INFORMATION_SCHEMA/INFO_SCHEM/SYSREP/SYSGEO/SYSJOB/SYSCPT/SYS)下的表进行表备份。
  2. 表的**列类型为对象类型的表不支持表备份**。
  3. 表备份不备份表上的注释以及 default 表达式中的函数定义,因此还原时需用户自行确认。
  4. 不支持在加密库上进行表备份与还原。
  5. 当备份数据超过限制大小时,会生成新的备份文件,新的备份文件名是初始文件名后加文件编号。
  6. 表备份时,其所属表空间必须处于联机状态。
  7. 目前表备份不支持备份到 TAPE 介质上。
3.2 完整备份步骤
  1. 保证数据库处于 OPEN 状态;
  2. 创建待备份的表 TAB_01:
CREATE TABLE TAB_01(C1 INT);
  1. disql 中输入备份表语句,简单的备份语句如下:
BACKUP TABLE TAB_01 BACKUPSET '/dmdata/dmbak/tab_bak_01';

4、归档备份

4.1 归档备份前提
  1. 归档文件的 db_magic、permanent_magic 值和库的 db_magic、permanent_magic 值必须一样;

  2. 服务器必须配置归档;

  3. 归档日志必须连续,如果出现不连续的情况,前面的连续部分会忽略,仅备份最新的连续部分。如果备份时未收集到指定范围内的归档,则直接报错。联机备份的时候经常会切换归档文件,最后一个归档总是空的,所以最后一个归档不会被备份

4.2 语法
BACKUP <ARCHIVE LOG |ARCHIVELOG> [ALL | [FROM LSN <lsn>]| [UNTIL LSN <lsn>]|
[LSN BETWEEN <lsn> AND <lsn>] | [FROM TIME '<time>']|[UNTIL TIME '<time>']|
[TIME BETWEEN'<time>'> AND '<time>']][<notBackedUpSpec>][<指定备份集子句>][DELETE INPUT]
[TO <备份名>][<备份集子句>];
<备份集子句>::=BACKUPSET ['<备份集路径>'][DEVICE TYPE <介质类型> [PARMS '<介质参数>']]
[BACKUPINFO '<备份描述>'] [MAXPIECESIZE <备份片限制大小>] 
[LIMIT <read_limit>|<write_limit>] 
[IDENTIFIED BY <密码>|"<密码>" [WITH ENCRYPTION <TYPE>][ENCRYPT WITH <加密算法>]]
[COMPRESSED [LEVEL <压缩级别>]] [WITHOUT LOG]
[TRACE FILE '<TRACE文件名>'] [TRACE LEVEL <TRACE日志级别>]
[TASK THREAD <线程数>][PARALLEL [<并行数>][READ SIZE <拆分块大小>]]
<notBackedUpSpec>::=NOT BACKED UP [<num> TIMES]|[SINCE TIME '<datetime_string>']
<read_limit>::= READ SPEED <读速度上限> [WRITE SPEED <写速度上限>]
<write_limit>::= WRITE SPEED <写速度上限>

参数说明:

参数说明
ALL备份所有的归档。若不指定,则默认为 ALL。
FROM LSN指定备份的起始 lsn。
UNTIL LSN指定备份的截止 lsn。
FROM TIME指定备份的开始的时间点。
UNTIL TIME指定备份的截止的时间点。
BETWEEN … AND …指定备份的区间。指定区间后,只会备份指定区间内的归档文件。
DELETE INPUT用于指定备份完成之后,是否删除归档操作。
BACKUPSET指定当前备份集目录。若指定为相对路径,例如 BACKUPSET ‘db_bak_01’,则在默认备份目录中生成备份集。若不指定(命令不写),则在默认备份目录中按约定规则,生成默认备份集目录。
SQL> backup database full;
DEVICE TYPE指存储备份集的介质类型,支持 DISK 和 TAPE,默认 DISK
PARMS只对介质类型为 TAPE 时有效
BACKUPINFO备份的描述信息。
MAXPIECESIZE最大备份片文件大小上限,以 MB 为单位,最小 128MB,32 位系统最大 2GB,64 位系统最大 128GB,缺省为最大取值
LIMIT指定备份时最大的读写文件速度,单位为 MB/S,默认为 0,表示无速度限制。
IDENTIFIED BY指定备份时的加密密码
WITH ENCRYPTION指定加密类型,取值范围 0、1、2。0 表示不加密,不对备份文件进行加密处理;
1默认值,表示简单加密,对备份文件设置口令,但文件内容仍以明文方式存储;
2:表示完全数据加密,对备份文件进行完全的加密,备份文件以密文方式存储。
当不指定 WITH ENCRYPTION 子句时,采用简单加密。
ENCRYPT WITH指定加密算法。当不指定 ENCRYPT WITH 子句时,使用 AES256_CFB 加密算法。
COMPRESSED是否对备份数据进行压缩处理。LEVEL 表示压缩等级,取值范围 0~9:0(默认值) 表示不压缩;1 表示 1 级压缩;9 表示 9 级压缩。压缩级别越高,压缩速度越慢,但压缩比越高。
若指定 COMPRESSED,但未指定 LEVEL,则压缩等级默认 1;
若未指定 COMPRESSED,则默认不进行压缩处理。
WITHOUT LOG联机数据库备份是否备份联机日志。如果使用,则表示不备份,否则表示备份。
TRACE LEVEL是否启用 TRACE。有效值 1、2,默认为 1 表示不启用 TRACE,此时若指定了 TRACE FILE,会生成 TRACE 文件,但不写入 TRACE 信息;为 2 启用 TRACE 并在 TRACE 文件中写入 TRACE 相关内容。
TRACE FILE指定生成的 TRACE 文件。启用 TRACE,但不指定 TRACE FILE 时,默认在 DM 数据库系统的 log 目录下生成 DM_SBTTRACE_年月.log 文件;若使用相对路径,则生成在执行码同级目录下;若用户指定 TRACE FILE,则指定的文件不能为已经存在的文件,否则报错。TRACE FILE 不可以为 ASM 文件。
TASK THREAD备份过程中数据处理过程线程的个数,取值范围 0~64,默认为 4。若指定为 0,则调整为 1;若指定超过当前系统主机核数,则调整为主机核数。线程数(TASK THREAD)*并行数(PARALLEL)不得超过 512。
PARALLEL指定**并行备份的并行数和拆分块大小**。并行数取值范围 0~128。若不指定并行数,则默认为 4,若指定为 0 或者 1 均认为非并行备份。若未指定关键字 PARALLEL,则认为非并行备份。
READ SPEED备份时读速度上限,取值范围 0~2147483647,单位为 MB/S,0 表示无限制。
WRITE SPEED备份时写速度上限,取值范围 0~2147483647,单位为 MB/S,0 表示无限制。
4.3 备份步骤
  1. 配置归档;
  2. 保证数据库处于 OPEN 或者 MOUNT 状态;
  3. DIsql 中输入备份数据库语句。

在这里插入图片描述
如何通过 LSN BETWEEN … AND …来指定起始和截至 LSN

  • 首先,确定 LSN 范围
select ARCH_LSN, CLSN, PATH from V$ARCH_FILE;

ARCH_LSN             CLSN                 PATH
----------- ---------- ------------------------------------------------------------------
314973      315394     /dmdata/arch/ARCHIVE_LOCAL1_0x2DFFFDD8_EP0_2024-02-10_21-50-01.log
315395      315713     /dmdata/arch/ARCHIVE_LOCAL1_0x2DFFFDD8_EP0_2024-02-10_21-57-56.log
……
//通过查询结果选出备份的起始LSN和截至LSN。比如315395	315713
  • 备份归档
BACKUP ARCHIVELOG LSN BETWEEN 315395 AND 315713 BACKUPSET '/dmdata/dmbak/arch_bak_time_14-78';

三、数据备份高级

DM 的数据库、表空间、表备份和归档备份**均支持创建加密备份和备份时设置跟踪日志文件**,本节仅以数据库备份为例说明这两种类型备份的创建。

1、加密备份

备份语句中通过指定 IDENTIFIED BY…WITH ENCRYPTION…ENCRYPT WITH…执行加密备份。其中,IDENTIFIED BY 子句指定加密密码,密码长度为 9 到 48 个字节,若密码长度不符合要求会报错;

WITH ENCRYPTION 子句指定加密类型,加密类型分为简单加密和复杂加密,简单加密是对备份文件设置口令,但文件内容仍以明文存储复杂加密则对备份文件进行完全的加密,备份文件以密文方式存储,用户可根据备份数据的重要程度选择加密类型;ENCRYPT WITH 子句指定加密算法,默认使用的加密算法为 AES256_CFB。

加密备份过程中 IDENTIFIED BY 子句必须指定,子句 WITH ENCRYPTION 和子句 ENCRYPT WITH 可不指定,此时 WITH ENCRYPTION 默认值为 1,ENCRYPT WITH 默认值为 AES256_CFB。

  • 简单加密
BACKUP DATABASE BACKUPSET '/dmdata/dmbak/db_bak_for_encrypt' IDENTIFIED BY "cdb546789";

BACKUP DATABASE BACKUPSET '/dmdata/dmbak/db_bak_for_encrypt' IDENTIFIED BY "cdb546789" ENCRYPT WITH RC4;
  • 复杂加密
BACKUP DATABASE BACKUPSET '/dmdata/dmbak/db_bak_for_encrypt' IDENTIFIED BY "cdb546789" WITH ENCRYPTION 2;

BACKUP DATABASE BACKUPSET '/dmdata/dmbak/db_bak_for_encrypt' IDENTIFIED BY "cdb546789" WITH ENCRYPTION 2 ENCRYPT WITH RC4;
  • 若指定了加密密码,但加密类型 WITH ENCRYPTION 指定为 0,则为非加密备份
BACKUP DATABASE BACKUPSET '/dmdata/dmbak/db_bak_for_encrypt' IDENTIFIED BY "cdb546789" WITH ENCRYPTION 0;

注意:

  • 对于增量备份加密,如果基备份存在加密,则增量备份使用的加密密码、加密类型和加密算法必须与基备份保持一致;
  • 如果基备份未进行加密处理,则对增量备份使用的加密密码、加密类型和加密算法没有特殊要求。

2、设置跟踪日志文件

DM 备份时支持设置 SBT 接口跟踪日志文件,日志记录了 SBT 接口的调用过程,用户通过查看日志可跟踪备份还原过程。

与生成跟踪日志文件相关的参数有两个:TRACE FILE 和 TRACE LEVEL。 TRACE FILE 用于指定生成的跟踪日志文件路径,TRACE LEVEL 表示是否启用 TRACE。TRACE LEVEL 有效值包括 1 和 2。1 表示不启用 TRACE 功能,2 表示启用,系统默认值为 1。

2.1 指定TRACE FILE
  • TRACE LEVEL = 1(默认值)
-- 下面两个语句等价,1.log日志内容为空,保存在$DM_HOME/bin/1.log
backup database trace file '1.log';   
backup database trace file '1.log' trace level 1;

指定参数 TRACE FILE 但 TRACE LEVEL 值设置为 1 即不启用 TRACE 功能,则会生成 TRACE 文件,但不会写入 TRACE 信息。

  • TRACE LEVEL = 2
backup database trace file '2.log' trace level 2;  -- 2.log日志内容不为空,保存在$DM_HOME/bin/2.log
backup database trace file '/dmdata/3.log' trace level 2;  -- 3.log日志内容不为空,保存在/dmdata/3.log

注意:

  • 若 TRACE FILE 使用相对路径,日志文件生成在执行码同级目录下**$DM_HOME/bin**。
  • 若 TRACE FILE 使用绝对路径,日志文件生成在指定的绝对路径。
  • 如果指定的 TRACE 文件已存在,则报错
2.2 不指定TRACE FILE
  • TRACE LEVEL = 2
backup database trace level 2;  -- 在$DM_HOME/log路径下生成.log文件

TRACE LEVEL 值设置为 2 即启用 TRACE 功能,但若 TRACE FILE 没有指定,则系统默认在执行码路径的 log 目录$DM_HOME/log生成 DM_SBTTRACE_年月.log 文件


四、管理备份

1、备份管理相关系统过程与函数总结

1.1 函数
函数说明
SF_BAKSET_BACKUP_DIR_ADD添加备份目录
SF_BAKSET_BACKUP_DIR_REMOVE删除内存中指定的备份目录
SF_BAKSET_BACKUP_DIR_REMOVE_ALL删除内存中全部的备份目录
SF_BAKSET_CHECK对备份集进行校验
SF_BAKSET_REMOVE删除指定设备类型和指定备份集目录的备份集
SF_BAKSET_REMOVE_BATCH批量删除满足指定条件的所有备份集
SF_BAKSET_REMOVE_BATCH_S批量安全删除满足指定条件的所有库级备份集
SF_BAKSET_REMOVE_BATCH_N批量删除满足指定条件的所有备份集,并保留用户指定个数的库级完全备份集
1.2 过程
存储过程说明
SP_DB_BAKSET_REMOVE_BATCH批量删除指定时间之前的数据库备份集
SP_TS_BAKSET_REMOVE_BATCH批量删除指定表空间对象及指定时间之前的表空间备份集
SP_TAB_BAKSET_REMOVE_BATCH批量删除指定表对象及指定时间之前的表备份集
SP_ARCH_BAKSET_REMOVE_BATCH批量删除指定条件的归档备份集

注意:

上面函数存储过程的使用说明,内容太多,参考官方文档。

2、备份管理相关动态视图总结

视图说明
V$BACKUPSET显示备份集基本信息
V$BACKUPSET_DBINFO显示备份集的数据库相关信息
V$BACKUPSET_DBF显示备份集中数据文件的相关信息
V$BACKUPSET_ARCH显示备份集的归档信息
V$BACKUPSET_BKP显示备份集的备份片信息
V$BACKUPSET_SEARCH_DIRS显示备份集搜索目录
V$BACKUPSET_TABLE显示表备份集中备份表信息
V$BACKUPSET_SUBS显示并行备份中生成的子备份集信息
V$BACKUP_MONITOR显示当前备份任务实时监控信息
V$BACKUP_HISTORY显示最近 100 条备份监控信息
V$BACKUP_FILES显示当前备份任务待备份数据文件列表

五、数据还原

DM 仅支持表的联机还原,数据库、表空间和归档日志的还原必须通过脱机工具 DMRMAN 执行。

1、表还原

表还原之后不需要恢复操作。

1.1 语法
RESTORE TABLE [<表名>] [STRUCT] [KEEP TRXID] 

FROM BACKUPSET'<备份集路径>' [DEVICE TYPE <介质类型> [PARMS '<介质参数>']] 

[IDENTIFIED BY <密码>|"<密码>" [ENCRYPT WITH <加密算法>]] 

[TRACE FILE '<TRACE文件名>'] [TRACE LEVEL <TRACE日志级别>];
参数说明
表名可选参数,指定需要还原的表名称。
指定表名:还原时数据库中必须存在该表,否则报错,不会从备份集判断是否存在目标表
不指定表名:则使用备份集中记录的备份表作为还原目标表。
STRUCT执行表结构还原,若未指定,则认为是表中数据还原;表数据还原要求还原目标表结构与备份集中完全一致,否则报错,所以表结构还原可以在表数据还原之前执行,减少报错。
KEEP TRXID指定还原后数据页上记录的 TRXID 保持不变,若发现备份时系统最大的 TRXID 大于等于当前系统的最大 TRXID,则将当前系统最大事务 ID+1000。调整后副作用:rec_id >= next_trxid 的记录,或者 rec_id <= bak_max_trxid + 1000 的记录,可能因为执行了表还原,导致查询结果不正确,原本不可见的数据,变得可见了。
…………
1.2 还原限制
  • 仅支持对普通用户表进行还原,包括堆表。其中,系统表、临时表、物化视图表、物化视图附属表、日志表以及特定模式(DBG_PKG/INFORMATION_SCHEMA/INFO_SCHEM/SYSREP/SYSGEO/SYSJOB/SYSCPT/SYS)下的表不支持还原。

  • 列类型为对象类型的表不支持表还原。

  • 若还原表中存在位图连接索引和位图连接虚索引则不支持还原。

  • 若为加密库,表还原时要求源库与目标库加密算法一致。

  • 备份集路径指备份集所在目录,其中应包含完整备份数据,包括元数据文件(.meta)和备份片文件(.bak)。仅支持从表备份集中还原表

  • 表名设置为可选参数。若指定,则数据库中必须存在该表且表定义必须与备份表严格一致;若不指定,则使用备份集中记录的备份表作为还原目标表。

  • 还原时若不指定目标表,则表还原操作需要 DBA 权限;若指定目标表,则目标表的创建者可以进行表还原操作。

  • 目标表所在的表空间必须处于联机状态。

  • 数据守护环境下,主库允许表备份还原,备库不允许。

  • MOUNT 和 SUSPEND 状态下不允许进行表还原,必须处于OPEN状态

  • MPP 环境不允许进行表还原。

  • 若在语句中指定 STRUCT 关键字,则执行表结构还原。表结构还原会根据备份集中备份表还原要求,对目标表定义进行校验,并删除目标表中已存在的二级索引和约束。

  • 若不指定 STRUCT 关键字,则执行表数据还原,表数据还原默认仅会将备份表中聚集索引上的数据进行还原。表数据还原默认仅会在目标表定义与备份表一致且不存在二级索引和约束的情况下执行。

  • 若在未指定 STRUCT 的情况下,执行还原出现存在二级索引或冗余约束的错误,或在不指定目标表的情况下,报目标不存在的错误,可先执行 STRUCT 还原后,再继续执行实际数据的还原。

  • 若用户指定 TRACE FILE,则指定的文件不能为已经存在的文件,否则报错;也不可以为 ASM 文件。

  • 若表中存在大字段列,且表备份时 INI 参数 BLOB_OUTROW_REC_STOR 大于 0,但建立还原目标表时 INI 参数 BLOB_OUTROW_REC_STOR 等于 0,那么若大字段列存在行外数据,则在执行表还原时会报错,且表数据会丢失。

  • 表还原不检查目标表的缺省表达式(default 值)

  • 若表列进行了加密,则表还原时不能跨库或跨表还原,只能还原到自身。


1.3. 不包含索引或约束的还原步骤
  1. 保证数据库为 OPEN 状态;
  2. 创建待备份的表
CREATE TABLE TAB_FOR_RES_01(C1 INT);
  1. 备份表数据
BACKUP TABLE TAB_FOR_RES_01 BACKUPSET '/dmdata/dmbak/tab_bak_for_res_01';
  1. 校验备份,此步骤为可选
SELECT SF_BAKSET_CHECK('DISK','/dmdata/dmbak/tab_bak_for_res_01');
  1. 还原表数据
RESTORE TABLE TAB_FOR_RES_01 FROM BACKUPSET '/dmdata/dmbak/tab_bak_for_res_01';

1.4 包含索引或约束的还原步骤
  1. 保证数据库为 OPEN 状态;
  2. 创建待备份的表
CREATE TABLE TAB_FOR_RES_02(C1 INT);
  1. 创建索引
CREATE INDEX I_TAB_FOR_RES_02 ON TAB_FOR_RES_02(C1);
  1. 备份表
BACKUP TABLE TAB_FOR_RES_02 BACKUPSET '/dmdata/dmbak/tab_bak_for_res_02';
  1. 校验备份,此步骤为可选
SELECT SF_BAKSET_CHECK('DISK','/dmdata/dmbak/tab_bak_for_res_02');
  1. 执行表结构还原,表备份和目标表中都包含索引,如果直接执行表数据还原会报错:还原表中存在二级索引或冗余约束
RESTORE TABLE TAB_FOR_RES_02 STRUCT FROM BACKUPSET '/dmdata/dmbak/tab_bak_for_res_02';
  1. 执行表数据还原
RESTORE TABLE TAB_FOR_RES_02 FROM BACKUPSET '/dmdata/dmbak/tab_bak_for_res_02';
1.5 指定还原时不重建索引

表备份时会默认备份表中的索引,还原时使用 RESTORE TABLE...WITHOUT INDEX...语句可选择不还原索引

  1. 建表跟索引
CREATE TABLE TAB_FOR_IDX_01(C1 INT);

CREATE INDEX I_TAB_FOR_IDX_01 ON TAB_FOR_IDX_01 (C1);
  1. 备份(略)

  2. 还原,但不重建索引

RESTORE TABLE TAB_FOR_RES WITHOUT INDEX FROM BACKUPSET '/dmdata/dmbak/tab_bak_for_res_01';
1.6 指定还原时不重建约束

表备份时会默认备份表中的索引定义,还原时使用 RESTORE TABLE...WITHOUT CONSTRAINT...语句可选择还原时不重建约束

  1. 建表跟索引
CREATE TABLE TAB_FOR_CONS_01(C1 INT);

CREATE INDEX I_TAB_FOR_CONS_01 ON TAB_FOR_CONS_01 (C1);
  1. 备份(略)

  2. 还原,但不重建约束

RESTORE TABLE TAB_FOR_RES WITHOUT CONSTRAINT FROM BACKUPSET '/dmdata/dmbak/tab_bak_for_res_01';

达梦社区:https://eco.dameng.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/383305.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用Cargo创建、编译与运行Rust项目

在 Rust 开发中&#xff0c;Cargo 是一个非常重要的工具&#xff0c;它负责项目的构建、管理和依赖管理。以下是如何使用 Cargo 创建、编译和运行 Rust 项目的详细步骤。 1. 创建新项目 首先确保你已经在计算机上安装了 Rust 和 Cargo。然后&#xff0c;在命令行中输入以下命…

【动态规划】1301. 最大得分的路径数目

作者推荐 【动态规划】【前缀和】【C算法】LCP 57. 打地鼠 本文涉及知识点 动态规划汇总 LeetCoce1301. 最大得分的路径数目 给你一个正方形字符数组 board &#xff0c;你从数组最右下方的字符 ‘S’ 出发。 你的目标是到达数组最左上角的字符 ‘E’ &#xff0c;数组剩余…

【Tauri】(1):使用Tauri1.5版本,进行桌面应用开发,在windows,linux进行桌面GUI应用程序开发,可以打包成功,使用 vite 最方便

1&#xff0c;视频地址&#xff1a; https://www.bilibili.com/video/BV1Pz421d7s4/ 【Tauri】&#xff08;1&#xff09;&#xff1a;使用Tauri1.5版本&#xff0c;进行桌面应用开发&#xff0c;在windows&#xff0c;linux进行桌面GUI应用程序开发&#xff0c;可以打包成功&…

springboot177健身房管理系统

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

Java图形化界面编程——弹球游戏 笔记

Java也可用于开发一些动画。所谓动画&#xff0c;就是间隔一定的时间(通常小于0 . 1秒 )重新绘制新的图像&#xff0c;两次绘制的图像之间差异较小&#xff0c;肉眼看起来就成了所谓的动画 。 ​ 为了实现间隔一定的时间就重新调用组件的 repaint()方法&#xff0c;可以借助于…

正则可视化工具:学习和编写正则表达式的利器

引言 正则表达式是一种强大的文本匹配和处理工具&#xff0c;但对于初学者和非专业开发者来说&#xff0c;编写和理解正则表达式可能是一项具有挑战性的任务。为了帮助人们更好地学习和编写正则表达式&#xff0c;正则可视化工具应运而生。本文将探讨正则可视化工具的优点&…

自动化AD域枚举和漏洞检测脚本

linWinPwn 是一个 bash 脚本&#xff0c;可自动执行许多 Active Directory 枚举和漏洞检查。该脚本基于很多现有工具实现其功能&#xff0c;其中包括&#xff1a;impacket、bloodhound、netexec、enum4linux-ng、ldapdomaindump、lsassy、smbmap、kerbrute、adidnsdump、certip…

力扣49. 字母异位词分组

Problem: 49. 字母异位词分组 文章目录 题目描述思路复杂度Code 题目描述 思路 1.我们利用一个无序映射以排序后的字符作为键、字符数组作为值&#xff1b; 2.每次我们从原始数组中取出一个字符串并对其进行排序&#xff0c;并将其添加到对应键所存的数组中&#xff1b; 3.创建…

OpenAI---提示词工程的6大原则

OpenAI在官方的文档里上线了Prompt engineering&#xff0c;也就是提示词工程指南&#xff0c;其中OpenAI有提到写提示词的6条大的原则&#xff0c;它们分别是&#xff1a; &#xff08;1&#xff09;Write clear instructions&#xff08;写出清晰的指令&#xff09; &#xf…

【漏洞复现】狮子鱼CMS文件上传漏洞(wxapp.php)

Nx01 产品简介 狮子鱼CMS&#xff08;Content Management System&#xff09;是一种网站管理系统&#xff0c;它旨在帮助用户更轻松地创建和管理网站。该系统拥有用户友好的界面和丰富的功能&#xff0c;包括页面管理、博客、新闻、产品展示等。通过简单直观的管理界面&#xf…

Java的接口

目录 1.接口的概念 2.语法规则 3.接口的使用 4.接口的特性 总结&#xff1a; 5.实现多个接口 6.接口间的继承 1.接口的概念 接口就是公共的行为规范标准&#xff0c;大家在实现时&#xff0c;只要符合规范标准&#xff0c;就可以通用。 在Java中&#xff0c;接口可以看成…

学习Android的第十天

目录 Android CheckBox 复选框 获得选中的 CheckBox 的值 自定义点击效果 改变文字与选择框的相对位置 修改文字与选择框的距离 Android ToggleButton 开关按钮 改变 ToggleButton 的状态和文本 Android Switch 开关 改变 Switch 的状态和文本 Android CheckBox 复选框…

Vue源码系列讲解——模板编译篇【一】(综述)

目录 1. 前言 2. 什么是模板编译 3. 整体渲染流程 4. 模板编译内部流程 4.1 抽象语法树AST 4.2 具体流程 5. 总结 1. 前言 在前几篇文章中&#xff0c;我们介绍了Vue中的虚拟DOM以及虚拟DOM的patch(DOM-Diff)过程&#xff0c;而虚拟DOM存在的必要条件是得先有VNode&…

ChatGPT高效提问—prompt常见用法(续篇五)

ChatGPT高效提问—prompt常见用法&#xff08;续篇五&#xff09; 1.1 种子词 ​ 种子词&#xff08;seed word&#xff09;通常指的是在对话中使用的初始提示或关键词&#xff0c;用于引导ChatGPT生成相关回复。种子词可以是一个词、短语或句子&#xff0c;通常与对话的主题…

VTK 三维场景的基本要素(相机) vtkCamera

观众的眼睛好比三维渲染场景中的相机&#xff0c;在VTK中用vtkCamera类来表示。vtkCamera负责把三维场景投影到二维平面&#xff0c;如屏幕&#xff0c;相机投影示意图如下图所示。 1.与相机投影相关的要素主要有如下几个&#xff1a; 1&#xff09;相机位置: 相机所处的位置…

Vue3中Setup概述和使用(三)

一、引入Setup 1、Person.Vue 与Vue3编写简单的App组件(二) 中的区别是&#xff1a;取消data、methods等方法,而是将数据和方法定义全部放进setup中。 <template><div class"person"><h1>姓名:{{name}}</h1><h1>年龄:{{age}}</h…

Linux操作系统基础(九):Linux用户与权限

文章目录 Linux用户与权限 一、文件权限概述 二、终端命令&#xff1a;组管理 三、终端命令&#xff1a;用户管理 1、创建用户 、 设置密码 、删除用户 2、查看用户信息 3、su切换用户 4、sudo 4.1、给指定用户授予权限 4.2、使用 用户 zhangsan登录, 操作管理员命令…

【开源】SpringBoot框架开发天沐瑜伽馆管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 瑜伽课程模块2.3 课程预约模块2.4 系统公告模块2.5 课程评价模块2.6 瑜伽器械模块 三、系统设计3.1 实体类设计3.1.1 瑜伽课程3.1.2 瑜伽课程预约3.1.3 系统公告3.1.4 瑜伽课程评价 3.2 数据库设计3.2.…

字节跳动官方出品AI,白嫖使用GPT4!

关注我&#xff0c;紧跟本系列专栏文章&#xff0c;咱们下篇再续&#xff01; 作者简介&#xff1a;魔都技术专家兼架构&#xff0c;多家大厂后端一线研发经验&#xff0c;各大技术社区头部专家博主&#xff0c;编程严选网创始人。具有丰富的引领团队经验&#xff0c;深厚业务架…

Matplotlib核心:掌握Figure与Axes

详细介绍Figure和Axes&#xff08;基于Matplotlib&#xff09; &#x1f335;文章目录&#x1f335; &#x1f333;引言&#x1f333;&#x1f333; 一、Figure&#xff08;图形&#xff09;&#x1f333;&#x1f341;1. 创建Figure&#x1f341;&#x1f341;2. 添加Axes&am…