达梦数据库基础管理—联机执行SQL语句备份还原
文章目录
- 达梦数据库基础管理—联机执行SQL语句备份还原
- 三、联机执行SQL语句备份还原
- 3.1 支持与限制
- 3.2 归档配置
- 3.3 使用联机执行SQL语句备份还原
- 3.3.1 数据备份
- 3.3.2 管理备份
- 3.3.2.1 概述
- 3.3.2.2 备份目录管理
- 3.3.2.3 备份集检验与删除
- 3.3.2.3.1 SF_BAKSET_CHECK函数
- 3.3.2.3.2 SF_BAKSET_REMOVE函数
- 3.3.2.3.3 SF_BAKSET_REMOVE_BATCH函数
- 3.3.2.3.4 SP_DB_BAKSET_REMOVE_BATCH过程
- 3.3.2.3.5 SP_TS_BAKSET_REMOVE_BATCH过程
- 3.3.2.3.6 SP_TAB_BAKSET_REMOVE_BATCH过程
- 3.3.2.3.7 SP_ARCH_BAKSET_REMOVE_BATCH过程
- 3.3.2.3.8 SF_ARCHIVELOG_DELETE_BEFORE_TIME
- 3.3.2.3.9 SF_ARCHIVELOG_DELETE_BEFORE_LSN过程
- 3.3.3 数据还原
三、联机执行SQL语句备份还原
DM 提供的各种工具进行备份还原与恢复的操作,包括 DIsql 工具、DMRMAN 工具、图形化客户端管理工具 MANAGER 和 CONSOLE。
- DIsql 工具用于执行联机的数据备份与数据还原,包括数据库备份、归档备份、表空间备份与还原、表备份与还原;
- DMRMAN 工具用于执行脱机的数据备份、还原与恢复,包括脱机的数据库备份、还原
与恢复,脱机还原表空间,归档的备份、还原与修复; - 客户端工具 MANAGER 和 CONSOLE对应命令行工具 DIsql 和 DMRMAN 的功能,分别用于联机和脱机备份还原数据。
3.1 支持与限制
3.1.1 联机备份的支持与限制
- MPP环境仅允许库和归档备份,且各节点都会执行,生成相应的备份集,支持DDL_CLONE
- DSC环境支持库备份、表空间备份和表备份,要求DSC环境的所有节点都处于OPEN状态
- MOUNT状态仅支持归档备份
- SUSPEND状态所有备份均不支持
- OPEN状态支持所有备份,支持DDL_CLONE
- PRIMARY模式支持所有备份,支持DDL_CLONE
- STANDBY模式仅支持库级、表空间级和归档备份,支持DDL_CLONE
- DDL CLONE必须备份归档,不允许指定WITHOUT LOG
3.1.2 联机还原的支持与限制
- 仅支持表级还原
- MPP和分布式数据库不支持
- PRIMARY支持
- SUSPEND状态所有还原均不支持
- OPEN/NORMAL支持
3.1.3 脱机备份的支持与限制
- 支持库级和归档备份
- MPP视同单机环境,仅当前节点执行备份操作
- 允许异常退出后备份,支持DDL CLONE
- DSC支持库级备份,支持DDL CLONE,当DSC环境下正常节点的CKPT_LSN小于故障节点的CKPT_LSN时,不支持脱机备份
3.1.4 脱机还原的支持与限制
脱机还原跟目标库所处的模式、状态以及集群环境(MPP和DSC)无关,允许库级、表空间级和归档还原。
3.2 归档配置
3.2.1 归档配置相关参数
3.2.2 归档配置方法
联机配置归档即在数据库实例启动的情况下,使用SQL语句完成dmarch.ini和ARCH_INI的配置。本地归档和远程归档均可以联机配置归档。
语法如下:
ALTER DATABASE <ADD|MODIFY|DELETE> ARCHIVELOG <归档配置语句>;
<归档配置语句>::= 'DEST = <归档目标>,TYPE = <归档类型>'
<归档类型>::=<local 方式>|<remote 方式>
<local 方 式 >::=LOCAL [,FILE_SIZE = <文件大小>][,SPACE_LIMIT = <空间大小限
制>][,ARCH_FLUSH_BUF_SIZE = <归档合并刷盘缓存大小>][,HANG_FLAG=<0|1>]
<remote 方 式 >::=REMOTE [,FILE_SIZE = <文件大小>][,SPACE_LIMIT = <空间大小限
制>][,ARCH_FLUSH_BUF_SIZE = <归档合并刷盘缓存大小>],INCOMING_PATH = <归档存放路径>
ADD:增加归档。该参数可以配置本地归档和远程归档。
MODIFY:修改归档。该参数可以修改已有归档的配置参数。不建议修改归档类型。
DELETE: 删除归档。在归档模式下,不允许删除本地归档。
增加或修改归档的步骤如下:
(1)修改数据库为 MOUNT 状态;
(2)增加或修改归档;
(3)开启归档模式;
(4)修改数据库为 OPEN 状态。
删除归档的步骤如下:
(1)修改数据库为 MOUNT 状态;
(2)关闭归档模式;
(3)删除归档
修改数据库状态的语法如下:
ALTER DATABASE <MOUNT|ARCHIVELOG|NOARCHIVELOG|OPEN>;
例:
-修改数据库为 MOUNT 状态
ALTER DATABASE MOUNT;
-配置本地归档
ALTER DATABASE ADD ARCHIVELOG 'DEST = /dmdata/dameng/arch_dsc0, TYPE = local,
FILE_SIZE = 1024,SPACE_LIMIT = 2048,ARCH_FLUSH_BUF_SIZE=16,HANG_FLAG=1';
-配置远程归档
ALTER DATABASE ADD ARCHIVELOG 'DEST = DSC1, TYPE = REMOTE, FILE_SIZE = 1024,
SPACE_LIMIT = 2048, ARCH_FLUSH_BUF_SIZE=16, INCOMING_PATH =/dmdata/dameng/arch_dsc1';
-开启归档模式
ALTER DATABASE ARCHIVELOG;
-修改数据库为 OPEN 状态
ALTER DATABASE OPEN;
3.3 使用联机执行SQL语句备份还原
联机方式支持数据库、用户表空间、用户表和归档的备份以及用户表的还原。必须保证系统处于归档模式,否则联机备份不能进行
3.3.1 数据备份
3.3.1.1 数据库备份
3.3.1.1.1 语法
BACKUP DATABASE [[[FULL] [DDL_CLONE]]| INCREMENT [CUMULATIVE][WITH BACKUPDIR '<
基备份搜索目录>'{,'<基备份搜索目录>'}]|[BASE ON BACKUPSET '<基备份目录>']][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 日志级别>] 备份与还原
46
[TASK THREAD <线程数>][PARALLEL [<并行数>] [READ SIZE <拆分块大小>]];
<read_limit>::= READ SPEED <读速度上限> [WRITE SPEED <写速度上限>]
<write_limit>::= WRITE SPEED <写速度上限>
FULL:备份类型,表示完全备份,默认为完全备份
DDL_CLONE:数据库克隆。表示近拷贝所有的元数据不拷贝数据
INCREMENT:备份类型,表示增量备份
CUMULATIVE:指明为累积增量备份类型,不指定则缺省为差异备份类型
WITH BACKUPDIR:用于增量悲愤中,指定基备份的搜索目录
BASE ON BACKUPSET:用于增量备份中,指定基备份集路径
TO:指定生成备份名称,若未指定,默认备份格式为:DB_库名_备份类型_备份时间
BACKUPSET:指定当前备份集生成路径
DEVICE TYPE:指定存储备份集的介质类型,支持DISK和TAPE,默认DISK
PARMS:只对介质类型为TAPE时有效
BACKUPINFO:备份的描述信息
MAXPIECESIZE:最大备份片文件大小上限,单位:M,32位操作系统最大2G,64位操作系统最大128G
LIMIT:指定备份时最大的读写文件速度,单位:M/S,默认为0,表示无速度限制
IDENTIFIED BY:指定备份时的加密密码。密码可以用双引号括起来,这样可以避免一些特殊字符通不过语法检测
WITH ENCRYPTION:指定加密类型,0表示不加密,1表示简单加密,2表示完全加密
ENCRYPTION WITH:指定加密算法,不指定时默认使用AES256_CFB加密算法
COMPRESSED:是否对备份数据进行压缩处理。LEVEL表示压缩等级,取值:0~9,0表示不压缩,压缩等级越高,速度越慢,压缩比越高
WITHOUT LOG:联机数据库备份是否备份日志。如果使用此参数,使用DMRMAN还原时,必须指定WITH ARCHIVEDIR参数
TRACE FILE:指定生成的TRACE文件
TRACE LEVEL:是否启用TRACE,1表示不启用,2表示启用
TASK THREAD:备份过程中数据处理过程线程的个数。默认是4
PARALLEL:指定并行备份的并行数和拆分块大小,取值:0~128
图例:
3.3.1.1.2 备份样例
例1:指定备份集路径为”/home/dmdba/dm_bak/dm_bak_20220629”
SQL> backup database backupset '/home/dmdba/dm_bak/dm_bak_20220629';
操作已执行
已用时间: 00:00:46.421. 执行号:0.
[dmdba@dmdsc01 dm_bak_20220629]$ ls -ltr
总用量 274572
-rw-r--r-- 1 dmdba dinstall 280702976 6月 29 15:12 dm_bak_20220629.bak
-rw-r--r-- 1 dmdba dinstall 338432 6月 29 15:12 dm_bak_20220629_1.bak
-rw-r--r-- 1 dmdba dinstall 115200 6月 29 15:12 dm_bak_20220629.meta
例2:创建备份集,备份名设置为”FULL_BAK”
SQL> backup database to FULL_BAK backupset '/home/dmdba/dm_bak/dm_bak_20220629_02';
操作已执行
已用时间: 00:00:06.972. 执行号:0.
例3:添加备份描述
SQL> backup database backupset '/home/dmdba/dm_bak/dm_bak_20220629_03' backupinfo 'FULL_BACKUP';
操作已执行
已用时间: 00:00:19.466. 执行号:1.
例4:限制备份片大小
SQL> backup database backupset '/home/dmdba/dm_bak/dm_bak_20220629_04' MAXPIECESIZE 100;
操作已执行
已用时间: 00:00:25.079. 执行号:2.
[dmdba@dmdsc01 dm_bak_20220629_04]$ ls -ltr
总用量 343964
-rw-r--r-- 1 dmdba dinstall 101849600 6月 29 15:35 dm_bak_20220629_04.bak
-rw-r--r-- 1 dmdba dinstall 92313088 6月 29 15:35 dm_bak_20220629_04_1.bak
-rw-r--r-- 1 dmdba dinstall 100668928 6月 29 15:35 dm_bak_20220629_04_2.bak
-rw-r--r-- 1 dmdba dinstall 57187840 6月 29 15:35 dm_bak_20220629_04_3.bak
-rw-r--r-- 1 dmdba dinstall 60928 6月 29 15:35 dm_bak_20220629_04_4.bak
-rw-r--r-- 1 dmdba dinstall 127488 6月 29 15:35 dm_bak_20220629_04.meta
例5:备份压缩
SQL> backup database backupset '/home/dmdba/dm_bak/dm_bak_20220629_05' compressed level 5;
操作已执行
已用时间: 00:00:09.008. 执行号:0.
[dmdba@dmdsc01 dm_bak_20220629_05]$ ls
dm_bak_20220629_05_1.bak dm_bak_20220629_05.bak dm_bak_20220629_05.meta
[dmdba@dmdsc01 dm_bak_20220629_05]$ ls -ltr
总用量 3188
-rw-r--r-- 1 dmdba dinstall 3113984 6月 29 15:40 dm_bak_20220629_05.bak
-rw-r--r-- 1 dmdba dinstall 25088 6月 29 15:40 dm_bak_20220629_05_1.bak
-rw-r--r-- 1 dmdba dinstall 115200 6月 29 15:40 dm_bak_20220629_05.meta
例6:并行备份,指定并行数为8
SQL> backup database backupset '/home/dmdba/dm_bak/dm_bak_20220629_06' PARALLEL 8;
操作已执行
已用时间: 00:00:17.910. 执行号:0.
[dmdba@dmdsc01 dm_bak_20220629_06]$ ls -ltr
总用量 636
drwxr-xr-x 2 dmdba dinstall 69 6月 29 15:46 dm_bak_20220629_06_3
drwxr-xr-x 2 dmdba dinstall 69 6月 29 15:46 dm_bak_20220629_06_4
drwxr-xr-x 2 dmdba dinstall 69 6月 29 15:46 dm_bak_20220629_06_5
drwxr-xr-x 2 dmdba dinstall 69 6月 29 15:46 dm_bak_20220629_06_6
drwxr-xr-x 2 dmdba dinstall 69 6月 29 15:46 dm_bak_20220629_06_2
drwxr-xr-x 2 dmdba dinstall 69 6月 29 15:46 dm_bak_20220629_06_0
drwxr-xr-x 2 dmdba dinstall 69 6月 29 15:46 dm_bak_20220629_06_1
-rw-r--r-- 1 dmdba dinstall 47104 6月 29 15:46 dm_bak_20220629_06.bak
-rw-r--r-- 1 dmdba dinstall 602112 6月 29 15:46 dm_bak_20220629_06.meta
例7:完全备份,增量备份
SQL> backup database backupset '/home/dmdba/dm_bak/db_full_bak';
操作已执行
已用时间: 00:00:06.241. 执行号:2.
SQL>
SQL> alter system switch logfile;
操作已执行
已用时间: 36.717(毫秒). 执行号:0.
SQL>
SQL> alter system switch logfile;
操作已执行
已用时间: 18.422(毫秒). 执行号:0.
SQL>
SQL> backup database increment with backupdir '/home/dmdba/dm_bak' backupset '/home/dmdba/dm_bak/db_increment_bak';
操作已执行
已用时间: 00:00:04.802. 执行号:3.
[dmdba@dmdsc01 dm_bak]$ ls -ltr
总用量 0
drwxr-xr-x 2 dmdba dinstall 75 6月 29 15:53 db_full_bak
drwxr-xr-x 2 dmdba dinstall 90 6月 29 15:57 db_increment_bak
3.3.1.2 表空间备份
3.3.1.2.1 语法
BACKUP TABLESPACE <表空间名> [FULL | INCREMENT [CUMULATIVE][WITH BACKUPDIR '<基
备份搜索目录>'{,'<基备份搜索目录>'}]| [BASE ON BACKUPSET '<基备份集目录>']][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 日志级别>]
[TASK THREAD <线程数>][PARALLEL [<并行数>][READ SIZE <拆分块大小>]];
<read_limit>::= READ SPEED <读速度上限> [WRITE SPEED <写速度上限>]
<write_limit>::= WRITE SPEED <写速度上限>
3.3.1.2.2 备份样例
例1:备份表空llf
SQL> backup tablespace llf full backupset '/home/dmdba/dm_bak/ts_full_bak_01';
操作已执行
已用时间: 00:00:03.627. 执行号:2.
SQL>
SQL> backup tablespace llf increment with backupdir '/home/dmdba/dm_bak' backupset '/home/dmdba/dm_bak/ts_increment_bak_02';
操作已执行
已用时间: 00:00:03.724. 执行号:0.
[dmdba@dmdsc01 dm_bak]$ ls -ltr
总用量 0
drwxr-xr-x 2 dmdba dinstall 57 6月 29 16:27 ts_full_bak_01
drwxr-xr-x 2 dmdba dinstall 67 6月 29 16:40 ts_increment_bak_02
3.3.1.3 表备份
- 仅支持对用户的非分区的行存储表和堆表进行备份,不支持分区表、临时表、物化视图表、物化视图附属表、日志表和特定模式
- 表的列类型为对象类型的表不支持表备份
- 表备份不备份表上的注释以及default表达式中的函数定义
- 表备份时,其所属表空间必须处于联机状态
- 表备份不支持备份到TAPE介质上
3.3.1.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 <写速度上限>
3.3.1.3.2 备份样例
-创建测试表
SQL> create table TAB_TEST(ID INT);
操作已执行
已用时间: 232.401(毫秒). 执行号:1.
SQL> insert into TAB_TEST VALUES(1);
影响行数 1
已用时间: 2.942(毫秒). 执行号:2.
SQL> COMMIT;
操作已执行
已用时间: 1.983(毫秒). 执行号:3.
SQL>
SQL> backup table TAB_TEST backupset '/home/dmdba/dm_bak/tab_bak_01';
操作已执行
已用时间: 00:00:03.532. 执行号:4.
[dmdba@dmdsc01 dm_bak]$ cd tab_bak_01/
[dmdba@dmdsc01 tab_bak_01]$ ls -ltr
总用量 144
-rw-r--r-- 1 dmdba dinstall 70144 6月 29 17:19 tab_bak_01.bak
-rw-r--r-- 1 dmdba dinstall 71168 6月 29 17:19 tab_bak_01.meta
[dmdba@dmdsc01 tab_bak_01]$
3.3.1.4 归档备份
归档备份的前提:
- 归档文件的db_magic、permanent_magic值和库的db_magic、permanent_magic值必须一样
- 服务器必须配置归档
- 归档日志必须连续,如果出现不连续的情况,前面的连续部分会忽略,仅备份最新的连续部分。如果未收集到指定范围内的归档,则不会备份。联机备份的时候经常会切换归档文件,最后一个归档总是空的,所以最后一个归档不会被备份
3.3.1.4.1 语法
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 <写速度上限>
图例:
备份集子句:
3.3.1.4.2 备份样例
-查询归档日志,确定LSN范围
SQL> select arch_lsn, clsn, path from v$arch_file;
行号 ARCH_LSN CLSN PATH
---------- -------------------- -------------------- ------------------------------------------------------------------------
1 341121 548512 +DMDATA/DSC0/arch/ARCHIVE_LOCAL_0x4CF3F22B_EP0_2022-06-16_10-21-57.log
2 548744 551732 +DMDATA/DSC0/arch/ARCHIVE_LOCAL_0x4CF3F22B_EP0_2022-06-16_13-02-30.log
3 551966 559075 +DMDATA/DSC0/arch/ARCHIVE_LOCAL_0x4CF3F22B_EP0_2022-06-16_13-17-54.log
4 559080 582654 +DMDATA/DSC0/arch/ARCHIVE_LOCAL_0x4CF3F22B_EP0_2022-06-16_17-16-43.log
5 585184 589601 +DMDATA/DSC0/arch/ARCHIVE_LOCAL_0x4CF3F22B_EP0_2022-06-17_13-29-56.log
6 589602 619935 +DMDATA/DSC0/arch/ARCHIVE_LOCAL_0x4CF3F22B_EP0_2022-06-17_15-44-53.log
7 619936 668796 +DMDATA/DSC0/arch/ARCHIVE_LOCAL_0x4CF3F22B_EP0_2022-06-18_15-44-50.log
8 668865 701169 +DMDATA/DSC0/arch/ARCHIVE_LOCAL_0x4CF3F22B_EP0_2022-06-21_15-43-36.log
9 701237 727315 +DMDATA/DSC0/arch/ARCHIVE_LOCAL_0x4CF3F22B_EP0_2022-06-22_15-43-27.log
10 727364 728680 +DMDATA/DSC0/arch/ARCHIVE_LOCAL_0x4CF3F22B_EP0_2022-06-29_15-18-03.log
11 728726 730159 +DMDATA/DSC0/arch/ARCHIVE_LOCAL_0x4CF3F22B_EP0_2022-06-29_15-26-08.log
12 730207 731425 +DMDATA/DSC0/arch/ARCHIVE_LOCAL_0x4CF3F22B_EP0_2022-06-29_15-39-05.log
13 731495 732901 +DMDATA/DSC0/arch/ARCHIVE_LOCAL_0x4CF3F22B_EP0_2022-06-29_15-43-01.log
14 732902 732903 +DMDATA/DSC0/arch/ARCHIVE_LOCAL_0x4CF3F22B_EP0_2022-06-29_15-53-46.log
15 732904 732919 +DMDATA/DSC0/arch/ARCHIVE_LOCAL_0x4CF3F22B_EP0_2022-06-29_15-53-52.log
16 732965 734817 +DMDATA/DSC0/arch/ARCHIVE_LOCAL_0x4CF3F22B_EP0_2022-06-29_15-55-59.log
17 734866 737262 +DMDATA/DSC0/arch/ARCHIVE_LOCAL_0x4CF3F22B_EP0_2022-06-29_16-30-20.log
18 342784 548743 +DMDATA/DSC1/arch/ARCHIVE_LOCAL_0x4CF3F22B_EP1_2022-06-16_10-21-59.log
19 550131 551965 +DMDATA/DSC1/arch/ARCHIVE_LOCAL_0x4CF3F22B_EP1_2022-06-16_13-02-32.log
20 553353 559051 +DMDATA/DSC1/arch/ARCHIVE_LOCAL_0x4CF3F22B_EP1_2022-06-16_13-17-56.log
21 559052 559079 +DMDATA/DSC1/arch/ARCHIVE_REMOTE1_0x4CF3F22B_EP1_2022-06-16_17-16-41.log
22 560801 582651 +DMDATA/DSC1/arch/ARCHIVE_LOCAL_0x4CF3F22B_EP1_2022-06-16_17-16-46.log
23 582653 582653 +DMDATA/DSC1/arch/ARCHIVE_REMOTE2_0x4CF3F22B_EP1_2022-06-17_09-34-53.log
24 657079 724528 +DMDATA/DSC1/arch/ARCHIVE_LOCAL_0x4CF3F22B_EP1_2022-06-21_09-17-23.log
25 724529 724551 +DMDATA/DSC1/arch/ARCHIVE_REMOTE1_0x4CF3F22B_EP1_2022-06-27_18-03-07.log
26 724805 732901 +DMDATA/DSC1/arch/ARCHIVE_LOCAL_0x4CF3F22B_EP1_2022-06-29_15-08-51.log
27 732902 732903 +DMDATA/DSC1/arch/ARCHIVE_LOCAL_0x4CF3F22B_EP1_2022-06-29_15-53-46.log
28 732904 737261 +DMDATA/DSC1/arch/ARCHIVE_LOCAL_0x4CF3F22B_EP1_2022-06-29_15-53-52.log
29 561932 585139 +DMDATA/DSC2/arch/ARCHIVE_LOCAL_0x4CF3F22B_EP2_2022-06-16_17-18-02.log
30 585140 585183 +DMDATA/DSC2/arch/ARCHIVE_REMOTE2_0x4CF3F22B_EP2_2022-06-17_13-29-55.log
31 658190 724528 +DMDATA/DSC2/arch/ARCHIVE_LOCAL_0x4CF3F22B_EP2_2022-06-21_09-17-36.log
32 724529 724551 +DMDATA/DSC2/arch/ARCHIVE_REMOTE2_0x4CF3F22B_EP2_2022-06-27_18-03-23.log
33 725988 732901 +DMDATA/DSC2/arch/ARCHIVE_LOCAL_0x4CF3F22B_EP2_2022-06-29_15-09-19.log
34 732902 732903 +DMDATA/DSC2/arch/ARCHIVE_LOCAL_0x4CF3F22B_EP2_2022-06-29_15-53-47.log
35 732904 737261 +DMDATA/DSC2/arch/ARCHIVE_LOCAL_0x4CF3F22B_EP2_2022-06-29_15-53-53.log
35 rows got
已用时间: 98.763(毫秒). 执行号:7.
例1:备份全部归档日志
SQL> backup archive log all backupset '/home/dmdba/dm_bak/arch_bak_01';
操作已执行
已用时间: 00:00:08.919. 执行号:8.
[dmdba@dmdsc01 arch_bak_01]$ ls -ltr
总用量 199576
-rw-r--r-- 1 dmdba dinstall 204145152 6月 29 17:31 arch_bak_01.bak
-rw-r--r-- 1 dmdba dinstall 213504 6月 29 17:31 arch_bak_01.meta
例2:备份指定LSN序列的归档日志
SQL> backup archivelog LSN between 725988 and 737261 backupset '/home/dmdba/dm_bak/arc_bak_lsn_732904-737261';
操作已执行
已用时间: 00:00:03.733. 执行号:9.
[dmdba@dmdsc01 arc_bak_lsn_732904-737261]$ ls -ltr
总用量 18112
-rw-r--r-- 1 dmdba dinstall 18408448 6月 29 17:34 arc_bak_lsn_732904-737261.bak
-rw-r--r-- 1 dmdba dinstall 131584 6月 29 17:34 arc_bak_lsn_732904-737261.meta
3.3.2 管理备份
3.3.2.1 概述
管理备份一个重要的目的是删除不再需要的备份。DM没有提供自动删除过期备份功能,删除备份需要手动执行。
备份管理相关过程与函数:
备份管理相关动态视图总结如下:
3.3.2.2 备份目录管理
3.3.2.2.1 SF_BAKSET_BACKUP_DIR_ADD函数
作用:添加备份目录
定义:
INT SF_BAKSET_BACKUP_DIR_ADD(
device_type varchar,
backup_dir varchar(256)
)
参数说明:
device_type:待添加的备份目录对应存储介质类型,DISK 或者 TAPE。目前,无论
指定介质类型为 DISK 或者 TAPE,都会同时搜索两种类型的备份集。
backup_dir:待添加的备份目录。
返回值:
1:目录添加成功;其它情况下报错。
例1:
SQL> select sf_bakset_backup_dir_add('DISK','/home/dmdba/dm_bak');
行号 SF_BAKSET_BACKUP_DIR_ADD('DISK','/home/dmdba/dm_bak')
---------- -----------------------------------------------------
1 1
已用时间: 52.245(毫秒). 执行号:15.
SQL>
3.3.2.2.2 SF_BAKSET_BACKUP_DIR_REMOVE函数
作用:删除备份目录。若待删除目录为库默认备份路径,不进行删除,认为删除失败。
定义:
INT SF_BAKSET_BACKUP_DIR_REMOVE (
device_type varchar,
backup_dir varchar(256)
)
参数说明:
device_type:待删除的备份目录对应存储介质类型,DISK 或者 TAPE。
backup_dir:待删除的备份目录。
返回值:
1:目录删除成功、目录不存在或者目录为空
0:目录为库默认备份路径;其他情况报错
例1:移除备份目录
SQL> select sf_bakset_backup_dir_remove('DISK','/home/dmdba/dm_bak');
行号 SF_BAKSET_BACKUP_DIR_REMOVE('DISK','/home/dmdba/dm_bak')
---------- --------------------------------------------------------
1 1
已用时间: 3.781(毫秒). 执行号:19.SQL>
3.3.2.2.3 SF_BAKSET_BACKUP_DIR_REMOV_ALL函数
作用:清理全部备份目录,默认备份目录除外。
定义:
INT SF_BAKSET_BACKUP_DIR_REMOVE_ALL ()
返回值:
1:目录全部清理成功;其它情况下报错。
例:
SQL> select SF_BAKSET_BACKUP_DIR_REMOVE_ALL();
行号 SF_BAKSET_BACKUP_DIR_REMOVE_ALL()
---------- ---------------------------------
1 1
已用时间: 1.002(毫秒). 执行号:21.SQL>
3.3.2.3 备份集检验与删除
3.3.2.3.1 SF_BAKSET_CHECK函数
作用:对备份集进行校验
定义:
INT SF_BAKSET_CHECK(
device_type varchar,
bakset_pathvarchar(256)
)
参数说明:
device_type:设备类型,DISK 或 TAPE。
bakset_path:待校验的备份集目录。
返回值:
1:备份集目录存在且合法;否则报错。
例:
SQL> select SF_BAKSET_CHECK('DISK','/home/dmdba/dm_bak/db_full_bak');
行号 SF_BAKSET_CHECK('DISK','/home/dmdba/dm_bak/db_full_bak')
---------- --------------------------------------------------------
1 1
已用时间: 767.886(毫秒). 执行号:22.
3.3.2.3.2 SF_BAKSET_REMOVE函数
作用:删除指定设备类型和指定备份集目录的备份集。若同一个备份集下还存在其它备份文件或备份集,则只删除备份文件,不会删除整个备份集
定义:
INT SF_BAKSET_REMOVE (
device_type varchar,
backsetpath varchar(256),
option integer
)
参数说明:
device_type:设备类型,DISK 或 TAPE。
backsetpath:待删除的备份集目录。
Option:删除备份集选项,0 单独删除,1 级联删除。可选参数,默认为 0。并行备份
集中子备份集不允许单独删除。单独删除时,若目标备份集被其他备份集引用为基备份,则
报错;级联删除时,递归将相关的增量备份也删除。
返回值:
1:备份集目录删除成功,其它情况下报错。
例1:
SQL> backup database backupset '/home/dmdba/dm_bak/db_bak_for_remove';
操作已执行
已用时间: 00:00:28.654. 执行号:24.
SQL> backup database increment backupset '/home/dmdba/dm_bak/db_bak_for_remove_incr';
操作已执行
已用时间: 00:00:12.838. 执行号:0.
SQL>
SQL> select SF_BAKSET_REMOVE('DISK','/home/dmdba/dm_bak/db_bak_for_remove');
select SF_BAKSET_REMOVE('DISK','/home/dmdba/dm_bak/db_bak_for_remove');
[-8202]:[/home/dmdba/dm_bak/db_bak_for_remove_incr]的基备份,不能删除.
已用时间: 00:00:01.110. 执行号:0.
SQL>
SQL> select SF_BAKSET_REMOVE('DISK','/home/dmdba/dm_bak/db_bak_for_remove',1);
行号 SF_BAKSET_REMOVE('DISK','/home/dmdba/dm_bak/db_bak_for_remove',1)
---------- -----------------------------------------------------------------
1 1
已用时间: 205.427(毫秒). 执行号:2.
[dmdba@dmdsc01 db_bak_for_remove]$ ls -ltr
总用量 483280
-rw-r--r-- 1 dmdba dinstall 494681088 6月 30 10:46 db_bak_for_remove.bak
-rw-r--r-- 1 dmdba dinstall 75264 6月 30 10:46 db_bak_for_remove_1.bak
-rw-r--r-- 1 dmdba dinstall 115200 6月 30 10:46 db_bak_for_remove.meta
[dmdba@dmdsc01 db_bak_for_remove]$
[dmdba@dmdsc01 db_bak_for_remove]$ cd ..
[dmdba@dmdsc01 dm_bak]$ cd db_bak_for_remove_incr/
[dmdba@dmdsc01 db_bak_for_remove_incr]$ ls -ltr
总用量 36132
-rw-r--r-- 1 dmdba dinstall 36776448 6月 30 10:49 db_bak_for_remove_incr.bak
-rw-r--r-- 1 dmdba dinstall 99328 6月 30 10:49 db_bak_for_remove_incr_1.bak
-rw-r--r-- 1 dmdba dinstall 115200 6月 30 10:49 db_bak_for_remove_incr.meta
[dmdba@dmdsc01 db_bak_for_remove_incr]$ ls
[dmdba@dmdsc01 db_bak_for_remove_incr]$ cd ..
[dmdba@dmdsc01 dm_bak]$ ls -ltr
总用量 0
drwxr-xr-x 2 dmdba dinstall 75 6月 29 15:53 db_full_bak
drwxr-xr-x 2 dmdba dinstall 90 6月 29 15:57 db_increment_bak
drwxr-xr-x 2 dmdba dinstall 57 6月 29 16:27 ts_full_bak_01
drwxr-xr-x 2 dmdba dinstall 67 6月 29 16:40 ts_increment_bak_02
drwxr-xr-x 2 dmdba dinstall 49 6月 29 17:19 tab_bak_01
drwxr-xr-x 2 dmdba dinstall 51 6月 29 17:31 arch_bak_01
drwxr-xr-x 2 dmdba dinstall 79 6月 29 17:34 arc_bak_lsn_732904-737261
3.3.2.3.3 SF_BAKSET_REMOVE_BATCH函数
作用:批量删除满足指定条件的所有备份集。使用该方法前,需要先使用SP_BAKSET_BACKUP_DIR_ADD添加将要删除的备份集目录,否则只删除默认备份路径下的备份集。
定义:
INT SF_BAKSET_REMOVE_BATCH (
device_type varchar,
end_time datetime,
Range int,
obj_name varchar(257)
)
参数说明:
device_type:设备类型,DISK 或 TAPE。若指定为 NULL,则忽略存储设备的区分。
end_time:删除备份集生成的结束时间,仅删除 end_time 之前的备份集,必须指
定。
range:指定删除备份的级别。1 代表库级,2 代表表空间级,3 代表表级,4 代表归
档备份。若指定为 NULL,则忽略备份集备份级别的区分。
obj_name:待删除备份集中备份对象的名称,仅表空间级和表级有效。若为表级备份
删除,则需指定完整的表名(模式.表名),否则,将认为删除会话当前模式下的表备份。
若指定为 NULL,则忽略备份集中备份对象名称区分。
返回值:
1:备份集目录删除成功,其它情况下报错。
例1:
-备份数据库
SQL> backup database backupset '/home/dmdba/dm_bak1/db_bak_for_remove';
操作已执行
已用时间: 00:00:13.753. 执行号:0.
-备份表空间
SQL> backup tablespace llf backupset '/home/dmdba/dm_bak1/ts_bak_for_remove';
操作已执行
已用时间: 00:00:03.777. 执行号:1.
-添加指定删除目录
SQL> select SF_BAKSET_BACKUP_DIR_ADD('DISK','/home/dmdba/dm_bak1/');
行号 SF_BAKSET_BACKUP_DIR_ADD('DISK','/home/dmdba/dm_bak1/')
---------- -------------------------------------------------------
1 1
已用时间: 1.252(毫秒). 执行号:2.
-指定删除表空间备份集
SQL> select SF_BAKSET_REMOVE_BATCH('DISK',now(),2,NULL);
行号 SF_BAKSET_REMOVE_BATCH('DISK',NOW(),2,NULL)
---------- -------------------------------------------
1 1
已用时间: 109.069(毫秒). 执行号:3.
[dmdba@dmdsc01 dm_bak1]$ ls -ltr
总用量 0
drwxr-xr-x 2 dmdba dinstall 93 6月 30 10:59 db_bak_for_remove
drwxr-xr-x 2 dmdba dinstall 63 6月 30 11:06 ts_bak_for_remove
[dmdba@dmdsc01 dm_bak1]$ ls -ltr
总用量 0
drwxr-xr-x 2 dmdba dinstall 93 6月 30 10:59 db_bak_for_remove
例2:
-备份表空间
SQL> backup tablespace llf backupset '/home/dmdba/dm_bak1/ts_llf_bak_for_remove';
操作已执行
已用时间: 00:00:03.735. 执行号:4.
-添加指定删除目录
SQL> select SF_BAKSET_BACKUP_DIR_ADD('DISK','/home/dmdba/dm_bak1/');
行号 SF_BAKSET_BACKUP_DIR_ADD('DISK','/home/dmdba/dm_bak1/')
---------- -------------------------------------------------------
1 1
已用时间: 1.252(毫秒). 执行号:5.
-删除指定目录下所有备份集
SQL> select SF_BAKSET_REMOVE_BATCH('DISK',now(),null,null);
行号 SF_BAKSET_REMOVE_BATCH('DISK',NOW(),NULL,NULL)
---------- ----------------------------------------------
1 1
已用时间: 190.429(毫秒). 执行号:6.
SQL>
[dmdba@dmdsc01 dm_bak1]$ ls -ltr
总用量 0
drwxr-xr-x 2 dmdba dinstall 93 6月 30 10:59 db_bak_for_remove
drwxr-xr-x 2 dmdba dinstall 71 6月 30 11:13 ts_llf_bak_for_remove
[dmdba@dmdsc01 dm_bak1]$ ls -ltr
总用量 0
[dmdba@dmdsc01 dm_bak1]$
3.3.2.3.4 SP_DB_BAKSET_REMOVE_BATCH过程
作用:批量删除指定时间之前的数据库备份集。使用该方法前,需要先使用SF_BAKSET_BACKUP_DIR_ADD添加将要删除的备份集目录,否则只删除默认备份路径下的备份集。
定义:
SP_DB_BAKSET_REMOVE_BATCH (
device_type varchar,
end_time datetime
)
参数说明:
device_type:设备类型,DISK 或 TAPE。若指定为 NULL,则忽略存储设备的区分。
end_time:删除备份集生成的结束时间,仅删除 end_time 之前的备份集,必须指定。
例1:
SQL>
SQL> select sf_bakset_backup_dir_add('DISK','/home/dmdba/dm_bak');
行号 SF_BAKSET_BACKUP_DIR_ADD('DISK','/home/dmdba/dm_bak')
---------- -----------------------------------------------------
1 1
已用时间: 5.564(毫秒). 执行号:4.
SQL> call sp_db_bakset_remove_batch('DISK',now());
DMSQL 过程已成功完成
已用时间: 266.361(毫秒). 执行号:6.
-执行前备份目录
[dmdba@dmdsc01 dm_bak]$ ls -ltr
总用量 0
drwxr-xr-x 2 dmdba dinstall 75 6月 29 15:53 db_full_bak
drwxr-xr-x 2 dmdba dinstall 90 6月 29 15:57 db_increment_bak
drwxr-xr-x 2 dmdba dinstall 57 6月 29 16:27 ts_full_bak_01
drwxr-xr-x 2 dmdba dinstall 67 6月 29 16:40 ts_increment_bak_02
drwxr-xr-x 2 dmdba dinstall 49 6月 29 17:19 tab_bak_01
drwxr-xr-x 2 dmdba dinstall 51 6月 29 17:31 arch_bak_01
drwxr-xr-x 2 dmdba dinstall 79 6月 29 17:34 arc_bak_lsn_732904-737261
-执行后备份目录
[dmdba@dmdsc01 dm_bak]$ ls -ltr
总用量 0
drwxr-xr-x 2 dmdba dinstall 57 6月 29 16:27 ts_full_bak_01
drwxr-xr-x 2 dmdba dinstall 67 6月 29 16:40 ts_increment_bak_02
drwxr-xr-x 2 dmdba dinstall 49 6月 29 17:19 tab_bak_01
drwxr-xr-x 2 dmdba dinstall 51 6月 29 17:31 arch_bak_01
drwxr-xr-x 2 dmdba dinstall 79 6月 29 17:34 arc_bak_lsn_732904-737261
3.3.2.3.5 SP_TS_BAKSET_REMOVE_BATCH过程
作用:批量删除指定表空间对象及指定时间之前的表空间备份集。使用该方法前,需要先使用
SF_BAKSET_BACKUP_DIR_ADD 添加将要删除的备份集目录,否则只删除默认备份路径下的备份集
定义:
SP_TS_BAKSET_REMOVE_BATCH (
device_type
varchar,
end_time
datetime,
ts_name
varchar(128)
)
参数说明:
device_type:设备类型,DISK 或 TAPE。若指定为 NULL,则忽略存储设备的区分。
end_time:删除备份集生成的结束时间,仅删除 end_time 之前的备份集,必须指定。
ts_name:表空间名,若未指定,则认为删除所有满足条件的表空间备份集。
例1:
-添加指定删除目录
SQL> select sf_bakset_backup_dir_add('DISK','/home/dmdba/dm_bak');
行号 SF_BAKSET_BACKUP_DIR_ADD('DISK','/home/dmdba/dm_bak')
---------- -----------------------------------------------------
1 1
已用时间: 0.943(毫秒). 执行号:9.
-调用过程
SQL> call sp_ts_bakset_remove_batch('DISK',now(),'LLF');
DMSQL 过程已成功完成
已用时间: 132.536(毫秒). 执行号:10.
-删除前
[dmdba@dmdsc01 dm_bak]$ ls -ltr
总用量 0
drwxr-xr-x 2 dmdba dinstall 57 6月 29 16:27 ts_full_bak_01
drwxr-xr-x 2 dmdba dinstall 67 6月 29 16:40 ts_increment_bak_02
drwxr-xr-x 2 dmdba dinstall 49 6月 29 17:19 tab_bak_01
-删除后
[dmdba@dmdsc01 dm_bak]$ ls -ltr
总用量 0
drwxr-xr-x 2 dmdba dinstall 49 6月 29 17:19 tab_bak_01
3.3.2.3.6 SP_TAB_BAKSET_REMOVE_BATCH过程
作用:批量删除指定表对象及指定时间之前的表备份集。使用该方法前,需要先使用 SF_BAKSET_BACKUP_DIR_ADD 添加将要删除的备份集目录,否则只删除默认备份路径下的备份集。
定义:
SP_TAB_BAKSET_REMOVE_BATCH (
device_type varchar,
end_time datetime,
sch_name varchar(128),
tab_name varchar(128)
)
参数说明:
device_type:设备类型,DISK 或 TAPE。若指定为 NULL,则忽略存储设备的区分。
end_time:删除备份集生成的结束时间,仅删除 end_time 之前的备份集,必须指
定。
sch_name:表所属的模式名。
tab_name:表名,只要模式名和表名有一个指定,就认为需要匹配目标;若均指定为
NULL,则认为删除满足条件的所有表备份
例1: 删除指定的表备份
SQL> CREATE TABLE TAB_FOR_BATCH_DEL(C1 INT);
操作已执行
已用时间: 85.408(毫秒). 执行号:800.
SQL> backup table TAB_FOR_BATCH_DEL backupset '/home/dmdba/dm_bak/tab_bak_TAB_FOR_BATCH_DEL';
操作已执行
已用时间: 00:00:03.490. 执行号:801.
SQL>
SQL> select sf_bakset_backup_dir_add('DISK','/home/dmdba/dm_bak');
行号 SF_BAKSET_BACKUP_DIR_ADD('DISK','/home/dmdba/dm_bak')
---------- -----------------------------------------------------
1 1
已用时间: 27.759(毫秒). 执行号:802.
SQL>
SQL> call sp_tab_bakset_remove_batch('DISK',now(),'SYSDBA','TAB_FOR_BATCH_DEL');
DMSQL 过程已成功完成
已用时间: 136.467(毫秒). 执行号:803.
-删除前
[dmdba@dmdsc01 dm_bak]$ ls -ltr
总用量 0
drwxr-xr-x 2 dmdba dinstall 49 6月 29 17:19 tab_bak_01
drwxr-xr-x 2 dmdba dinstall 75 6月 30 14:46 tab_bak_TAB_FOR_REST_02
drwxr-xr-x 2 dmdba dinstall 79 7月 1 17:10 tab_bak_TAB_FOR_BATCH_DEL
-删除后
[dmdba@dmdsc01 dm_bak]$ ls -ltr
总用量 0
drwxr-xr-x 2 dmdba dinstall 49 6月 29 17:19 tab_bak_01
drwxr-xr-x 2 dmdba dinstall 75 6月 30 14:46 tab_bak_TAB_FOR_REST_02
3.3.2.3.7 SP_ARCH_BAKSET_REMOVE_BATCH过程
作用:批量删除指定时间之前的归档备份集。使用该方法前,需要先使用SF_BAKSET_BACKUP_DIR_ADD 添加将要删除的备份集目录,否则只删除默认备份路径下的备份集。
定义:
SP_ARCH_BAKSET_REMOVE_BATCH (
device_type varchar,
end_time datetime
)
参数说明:
device_type:设备类型,DISK 或 TAPE。若指定为 NULL,则忽略存储设备的区分。
end_time:删除备份集生成的结束时间,仅删除 end_time 之前的备份集,必须指定。
例1: 删除1小时之前的归档备份集
SQL> select sf_bakset_backup_dir_add('DISK','/home/dmdba/dm_bak');
行号 SF_BAKSET_BACKUP_DIR_ADD('DISK','/home/dmdba/dm_bak')
---------- -----------------------------------------------------
1 1
已用时间: 0.336(毫秒). 执行号:7.
SQL> call sp_arch_bakset_remove_batch('DISK',sysdate-1/24);
DMSQL 过程已成功完成
已用时间: 217.348(毫秒). 执行号:8.
-删除之前
[dmdba@dmdsc01 dm_bak]$ ls -ltr
总用量 0
drwxr-xr-x 2 dmdba dinstall 57 6月 29 16:27 ts_full_bak_01
drwxr-xr-x 2 dmdba dinstall 67 6月 29 16:40 ts_increment_bak_02
drwxr-xr-x 2 dmdba dinstall 49 6月 29 17:19 tab_bak_01
drwxr-xr-x 2 dmdba dinstall 51 6月 29 17:31 arch_bak_01
drwxr-xr-x 2 dmdba dinstall 79 6月 29 17:34 arc_bak_lsn_732904-737261
-删除之后
[dmdba@dmdsc01 dm_bak]$ ls -ltr
总用量 0
drwxr-xr-x 2 dmdba dinstall 57 6月 29 16:27 ts_full_bak_01
drwxr-xr-x 2 dmdba dinstall 67 6月 29 16:40 ts_increment_bak_02
drwxr-xr-x 2 dmdba dinstall 49 6月 29 17:19 tab_bak_01
3.3.2.3.8 SF_ARCHIVELOG_DELETE_BEFORE_TIME
作用:删除指定时间之前的归档日志,包括本地归档和远程归档。待删除的文件北徐处于未被使用状态。
定义:
INT
SF_ARCHIVELOG_DELETE_BEFORE_TIME (
time datetime
)
参数说明:
time:指定删除的最大关闭时间,若大于当前使用归档日志文件的创建时间,则从当前使用归档文件之前的归档日志文件开始删除
返回值:
删除归档日志文件数,-1 表示出错
例1:删除三天之前的归档日志
SELECT SF_ARCHIVELOG_DELETE_BEFORE_TIME(SYSDATE-3);
3.3.2.3.9 SF_ARCHIVELOG_DELETE_BEFORE_LSN过程
作用:删除小于指定LSN值的归档日志文件,包括本地归档和远程归档。待删除的文件必须处于未被使用状态
定义:
INT
SF_ARCHIVELOG_DELETE_BEFORE_LSN (
lsn bigint
)
参数说明:
lsn:指定删除的最大 LSN 值文件,若指定 lsn 值大于当前正在使用归档日志的起始 LSN(arch_lsn),则从当前使用归档文件之前的文件开始删除
返回值:
删除归档日志文件数,-1 表示出错
例1:
删除 LSN 值小于 95560 的归档日志文件
SELECT SF_ARCHIVELOG_DELETE_BEFORE_LSN(95560);
3.3.3 数据还原
DM仅支持表的联机还原,数据库、表空间和归档日志的还原必须通过脱机工具DMRMAN执行。
3.3.3.1 表还原语法
RESTORE TABLE [<表名>] [STRUCT] [KEEP TRXID]
FROM BACKUPSET'<备份集路径>' [DEVICE TYPE <介质类型> [PARMS '<介质参数>']]
[IDENTIFIED BY <密码>|”<密码>” [ENCRYPT WITH <加密算法>]]
[TRACE FILE '<TRACE 文件名>'] [TRACE LEVEL <TRACE 日志级别>];
表名:指定需要还原的表名称,指定表名还原时数据库中必须存在该表,否则报错。
STRUCT:执行表结构还原,若未指定,则认为是表中数据还原,表数据还原要求还原目标表结构与备份集中完全一致。
3.3.3.2 还原样例
-创建测试表并插入数据
SQL> create table TAB_FOR_REST_02(C1 INT);
操作已执行
已用时间: 56.600(毫秒). 执行号:28.
SQL>
SQL> insert into TAB_FOR_REST_02 values(1);
影响行数 1
已用时间: 3.926(毫秒). 执行号:29.
SQL> insert into TAB_FOR_REST_02 values(2);
影响行数 1
已用时间: 0.884(毫秒). 执行号:30.
SQL> commit;
操作已执行
已用时间: 0.933(毫秒). 执行号:31.
SQL>
SQL> select * from TAB_FOR_REST_02;
行号 C1
---------- -----------
1 1
2 2
已用时间: 1.296(毫秒). 执行号:32.
SQL>
-创建索引
SQL> create index IDX_TAB_FOR_REST_02 ON TAB_FOR_REST_02(C1);
操作已执行
已用时间: 257.544(毫秒). 执行号:33.
-备份表
SQL> backup table TAB_FOR_REST_02 backupset '/home/dmdba/dm_bak/tab_bak_TAB_FOR_REST_02';
操作已执行
已用时间: 00:00:03.369. 执行号:34.
-校验备份,此步骤可选
SQL> select sf_bakset_check('DISK','/home/dmdba/dm_bak/tab_bak_TAB_FOR_REST_02');
行号 SF_BAKSET_CHECK('DISK','/home/dmdba/dm_bak/tab_bak_TAB_FOR_REST_02')
---------- --------------------------------------------------------------------
1 1
已用时间: 98.842(毫秒). 执行号:37.
-删除原表
SQL> drop table TAB_FOR_REST_02;
操作已执行
已用时间: 184.729(毫秒). 执行号:38.
-执行表结构还原
SQL> restore table struct from backupset '/home/dmdba/dm_bak/tab_bak_TAB_FOR_REST_02';
操作已执行
已用时间: 129.306(毫秒). 执行号:39.
-执行表数据还原并创建索引和约束
SQL> restore table from backupset '/home/dmdba/dm_bak/tab_bak_TAB_FOR_REST_02';
操作已执行
已用时间: 390.639(毫秒). 执行号:40.
-查询数据
SQL> select * from TAB_FOR_REST_02;
行号 C1
---------- -----------
1 1
2 2
已用时间: 390.639(毫秒). 执行号:41.
-查询索引
SQL> select INDEX_NAME,INDEX_TYPE,STATUS from dba_indexes where TABLE_NAME='TAB_FOR_REST_02';
行号 INDEX_NAME INDEX_TYPE STATUS
---------- ------------------- ---------- ------
1 IDX_TAB_FOR_REST_02 NORMAL VALID
2 INDEX33555499 CLUSTER VALID
已用时间: 265.883(毫秒). 执行号:42.
社区地址:https://eco.dameng.com