disql备份还原

news2024/11/24 14:38:40

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

spring boot(2.4.x 开始)和spring cloud项目中配置文件application和bootstrap加载顺序

在前面的文章基础上 https://blog.csdn.net/zlpzlpzyd/article/details/136060312 spring boot 2.4.x 版本之前通过 ConfigFileApplicationListener 加载配置 https://github.com/spring-projects/spring-boot/blob/v2.3.12.RELEASE/spring-boot-project/spring-boot/src/mai…

使用耳机壳UV树脂制作私模定制耳塞有哪些选择呢?

私模定制耳塞人士的选择可以从以下几个方面考虑&#xff1a; 专业经验&#xff1a;选择有丰富经验的私模定制耳塞人士&#xff0c;能够更好地理解用户需求&#xff0c;提供更专业的建议和服务。可以通过查看其作品和客户评价来了解其经验和口碑。材料质量&#xff1a;选择使用…

第五篇:MySQL常见数据类型

MySQL中的数据类型有很多&#xff0c;主要分为三类:数值类型、字符串类型、日期时间类型 三个表格都在此网盘中&#xff0c;需要者可移步自取&#xff0c;如果觉得有帮助希望点个赞~ MySQL常见数据类型表 数值类型 &#xff08;注&#xff1a;decimal类型举例&#xff0c;如1…

【闲谈】开源软件的崛起与影响

随着信息技术的快速发展&#xff0c;开源软件已经成为软件开发的趋势&#xff0c;并产生了深远的影响。开源软件的低成本、可协作性和透明度等特点&#xff0c;使得越来越多的企业和个人选择使用开源软件&#xff0c;促进了软件行业的繁荣。然而&#xff0c;在使用开源软件的过…

STM32 STD/HAL库驱动W25Q64模块读写字库数据+OLED0.96显示例程

STM32 STD/HAL库驱动W25Q64 模块读写字库数据OLED0.96显示例程 &#x1f3ac;原创作者对W25Q64保存汉字字库演示&#xff1a; W25Q64保存汉字字库 &#x1f39e;测试字体显示效果&#xff1a; &#x1f4d1;功能实现说明 利用W25Q64保存汉字字库&#xff0c;OLED显示汉字的时…

vue electron 应用在windows系统上以管理员权限打开应用

打开package.json文件&#xff0c;在build下的win增加配置 "requestedExecutionLevel": "requireAdministrator",

商汤科技「日日新4.0」正式发布,多维度升级大模型体系,能力比肩GPT-4!

文 | BFT机器人 近日&#xff0c;商汤科技正式发布「日日新SenseNova 4.0」&#xff0c;宣告大模型体系多维度全面升级。这款模型具备更全面的知识覆盖、更可靠的推理能力&#xff0c;以及更优越的长文本理解和数字推理能力。同时&#xff0c;它还支持跨模态交互&#xff0c;为…

给定具体日期 返回给定日期是星期几 calendar.weekday(year,month,day)

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 给定具体日期 返回给定日期是星期几 calendar.weekday(year,month,day) [太阳]选择题 如果2024年2月12日是星期一&#xff0c;请问最后一个print语句的运行结果是&#xff1f; import calenda…

【Spring学习】Spring Data Redis:RedisTemplate、Repository、Cache注解

1&#xff0c;spring-data-redis官网 1&#xff09;特点 提供了对不同Redis客户端的整合&#xff08;Lettuce和Jedis&#xff09;提供了RedisTemplate统一API来操作Redis支持Redis的发布订阅模型支持Redis哨兵和Redis集群支持基于Lettuce的响应式编程支持基于JDK、JSON、字符…

【教3妹学编程-算法题】执行操作后的最大分割数量

2哥 : 3妹&#xff0c;今年过年收到压岁钱了没呢。 3妹&#xff1a;切&#xff0c;我都多大了啊&#xff0c;肯定没收了啊 2哥 : 俺也一样&#xff0c;不仅没收到&#xff0c;小侄子小外甥都得给&#xff0c;还倒贴好几千 3妹&#xff1a;哈哈哈哈&#xff0c;2叔叔&#xff0c…

JAVA学习笔记9

1.Java API 文档 1.java类的组织形式 2.字符类型(char) 1.基本介绍 ​ *字符类型可以表示单个字符&#xff0c;字符类型是char&#xff0c;char是两个字节&#xff08;可以存放汉字&#xff09;&#xff0c;多个字符我们用字符串String ​ eg:char c1 ‘a’; ​ char c2…

AJAX——常用请求方法

1 请求方法 请求方法&#xff1a;对服务器资源&#xff0c;要执行的操作 2 数据提交 场景&#xff1a;当数据需要在服务器上保存 3 axios请求配置 url&#xff1a;请求的URL网址 method&#xff1a;请求的方法&#xff0c;GET可以省略&#xff08;不区分大小写&#xff09; …

牛客网SQL进阶114:更新记录

官网链接&#xff1a; 更新记录&#xff08;二&#xff09;_牛客题霸_牛客网现有一张试卷作答记录表exam_record&#xff0c;其中包含多年来的用户作答试卷记录&#xff0c;结构如下表。题目来自【牛客题霸】https://www.nowcoder.com/practice/0c2e81c6b62e4a0f848fa7693291d…

Excel下载接口

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; Excel下载接口 需求分析 页面表格的数据下载&#xff0c;保存到Excel表格搜索后的数据点击下载&#xff0c;下载的数据需要是搜索后的数据 Controller HTTP 响应对象:…

【HTTP】localhost和127.0.0.1的区别是什么?

目录 localhost是什么呢&#xff1f; 从域名到程序 localhost和127.0.0.1的区别是什么&#xff1f; 域名的等级划分 多网站共用一个IP和端口 私有IP地址 IPv6 今天在网上逛的时候看到一个问题&#xff0c;没想到大家讨论的很热烈&#xff0c;就是标题中这个&#xff1a; …

python常用的深度学习框架

目录 一&#xff1a;介绍 二&#xff1a;使用 Python中有几个非常受欢迎的深度学习框架&#xff0c;它们提供了构建和训练神经网络所需的各种工具和库。以下是一些最常用的Python深度学习框架&#xff1a; 一&#xff1a;介绍 TensorFlow&#xff1a;由Google开发的TensorF…

LeetCode Python -8.字符串转整数

文章目录 题目答案运行结果 题目 请你来实现一个 myAtoi(string s) 函数&#xff0c;使其能将字符串转换成一个 32 位有符号整数&#xff08;类似 C/C 中的 atoi 函数&#xff09;。 函数 myAtoi(string s) 的算法如下&#xff1a; 读入字符串并丢弃无用的前导空格检查下一个…

C语言--------数据在内存中的存储

1.整数在内存中的存储 整数在内存是以补码的形式存在的&#xff1b; 整型家族包括char,int ,long long,short类型&#xff1b; 因为char类型是以ASCII值形式存在&#xff0c;所以也是整形家族&#xff1b; 这四种都包括signed,unsigned两种&#xff0c;即有符号和无符号&am…

ncc匹配提速总结

我们ncc最原始的匹配方法是&#xff1a;学习模板w*h个像素都要带入ncc公式计算 第一种提速&#xff0c;学习模板是w*h&#xff0c;而我们支取其中的w/2*h/2,匹配窗口同理&#xff0c;计算量只有1/4。 另外一种因为ncc是线性匹配&#xff0c;我们在这上面也做了文章&#xff0…

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

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