达梦数据库基础管理—联机执行SQL语句备份还原

本文介绍了达梦数据库的联机备份与还原方法,涵盖了数据库、表空间、表及归档的日志备份策略,详细解释了相关SQL语句及管理过程,并提供了多个实践案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

达梦数据库基础管理—联机执行SQL语句备份还原



三、联机执行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 归档配置相关参数

配置项	配置含义
[ARCH_NAME]	REDO日志归档名
ARCH_TYPE	REDO日志归档类型,LOCAL:本地归档,REMOTE:远程归档
ARCH_DEST	REDO日志归档目标,LOCAL:归档文件存放路径,REMOTE:对应远程节点实例名
ARCH_FILE_SIZE	单个REDO日志归档文件大小,取值64M~2048M,默认1024M
ARCH_SPACE_LKIMIT	REDO日志归档空间限制,当达到限制值时,系统自动删除最老的归档文件。0表示无空间限制,取值:1024M~2147483647M,默认为0
ARCH_FLUSH_BUF_SIZE	归档合并刷盘缓存大小,单位MB,取值:0~128,默认为0表示不使用归档合并刷盘
ARCH_HANG_FLAG	本地归档写入失败是系统是否挂起。取值:0/1。0不挂起,1挂起。默认是1.第一路本地归档系统内固定设为1,设0实际也不起作用
ARCH_INCOMING_PATH	仅REMOTE归档有效,对应远程归档存放在本节点的实际路径

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~90表示不压缩,压缩等级越高,速度越慢,压缩比越高
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.meta2:创建备份集,备份名设置为”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.meta5:备份压缩
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.meta6:并行备份,指定并行数为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 629 15:46 dm_bak_20220629_06_3
drwxr-xr-x 2 dmdba dinstall     69 629 15:46 dm_bak_20220629_06_4
drwxr-xr-x 2 dmdba dinstall     69 629 15:46 dm_bak_20220629_06_5
drwxr-xr-x 2 dmdba dinstall     69 629 15:46 dm_bak_20220629_06_6
drwxr-xr-x 2 dmdba dinstall     69 629 15:46 dm_bak_20220629_06_2
drwxr-xr-x 2 dmdba dinstall     69 629 15:46 dm_bak_20220629_06_0
drwxr-xr-x 2 dmdba dinstall     69 629 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.meta7:完全备份,增量备份
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 629 15:53 db_full_bak
drwxr-xr-x 2 dmdba dinstall 90 629 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 629 16:27 ts_full_bak_01
drwxr-xr-x 2 dmdba dinstall 67 629 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 归档备份

  归档备份的前提:

  1. 归档文件的db_magic、permanent_magic值和库的db_magic、permanent_magic值必须一样
  2. 服务器必须配置归档
  3. 归档日志必须连续,如果出现不连续的情况,前面的连续部分会忽略,仅备份最新的连续部分。如果未收集到指定范围内的归档,则不会备份。联机备份的时候经常会切换归档文件,最后一个归档总是空的,所以最后一个归档不会被备份
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.meta2:备份指定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没有提供自动删除过期备份功能,删除备份需要手动执行。

  备份管理相关过程与函数:
过程与函数名	含义
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	批量删除满足指定条件的所有备份集
SP_DB_BAKSET_REMOVE_BATCH	批量删除指定时间之前的数据库备份集
SP_TS_BAKSET_REMOVE_BATCH	批量删除指定表空间对象及指定时间之前表空间备份集
SP_TAB_BAKSET_REMOVE_BATCH	批量删除指定表对象及指定时间之前的备份集
SP_ARCH_BAKSET_REMOVE_BATCH	批量删除指定条件的归档备份集
SF_ARCHIVELOG_DELETE_BEFORE_TIME	删除指定时间之前的归档日志,包括本地和远程
SF_ARCHIVELOG_DELETE_LSN	删除小于指定LSN值的归档日志,包括本地和远程

  备份管理相关动态视图总结如下:
动态视图	含义
VBACKUPSET_DBINFO	显示备份集的数据库相关信息
VBACKUPSET_ARCH	显示备份集的归档信息
VBACKUPSET_SEARCH_DIRS	显示备份集搜索目录
VBACKUPSET_SUBS	显示并行备份中生成的子备份集信息
VBACKUP_HISTORY	显示最近100条备份监控信息
V$BACKUP_FILES	显示当前备份任务待备份数据文件列表

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:目录添加成功;其它情况下报错。 

例1SQL> 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:备份集目录删除成功,其它情况下报错。 

例1SQL> 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 629 15:53 db_full_bak
drwxr-xr-x 2 dmdba dinstall 90 629 15:57 db_increment_bak
drwxr-xr-x 2 dmdba dinstall 57 629 16:27 ts_full_bak_01
drwxr-xr-x 2 dmdba dinstall 67 629 16:40 ts_increment_bak_02
drwxr-xr-x 2 dmdba dinstall 49 629 17:19 tab_bak_01
drwxr-xr-x 2 dmdba dinstall 51 629 17:31 arch_bak_01
drwxr-xr-x 2 dmdba dinstall 79 629 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 630 10:59 db_bak_for_remove
drwxr-xr-x 2 dmdba dinstall 63 630 11:06 ts_bak_for_remove
[dmdba@dmdsc01 dm_bak1]$ ls -ltr
总用量 0
drwxr-xr-x 2 dmdba dinstall 93 630 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 630 10:59 db_bak_for_remove
drwxr-xr-x 2 dmdba dinstall 71 630 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 之前的备份集,必须指定。

例1SQL> 
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 629 15:53 db_full_bak
drwxr-xr-x 2 dmdba dinstall 90 629 15:57 db_increment_bak
drwxr-xr-x 2 dmdba dinstall 57 629 16:27 ts_full_bak_01
drwxr-xr-x 2 dmdba dinstall 67 629 16:40 ts_increment_bak_02
drwxr-xr-x 2 dmdba dinstall 49 629 17:19 tab_bak_01
drwxr-xr-x 2 dmdba dinstall 51 629 17:31 arch_bak_01
drwxr-xr-x 2 dmdba dinstall 79 629 17:34 arc_bak_lsn_732904-737261

-执行后备份目录
[dmdba@dmdsc01 dm_bak]$ ls -ltr
总用量 0
drwxr-xr-x 2 dmdba dinstall 57 629 16:27 ts_full_bak_01
drwxr-xr-x 2 dmdba dinstall 67 629 16:40 ts_increment_bak_02
drwxr-xr-x 2 dmdba dinstall 49 629 17:19 tab_bak_01
drwxr-xr-x 2 dmdba dinstall 51 629 17:31 arch_bak_01
drwxr-xr-x 2 dmdba dinstall 79 629 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 629 16:27 ts_full_bak_01
drwxr-xr-x 2 dmdba dinstall 67 629 16:40 ts_increment_bak_02
drwxr-xr-x 2 dmdba dinstall 49 629 17:19 tab_bak_01

-删除后
[dmdba@dmdsc01 dm_bak]$ ls -ltr
总用量 0
drwxr-xr-x 2 dmdba dinstall 49 629 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 629 17:19 tab_bak_01
drwxr-xr-x 2 dmdba dinstall 75 630 14:46 tab_bak_TAB_FOR_REST_02
drwxr-xr-x 2 dmdba dinstall 79 71 17:10 tab_bak_TAB_FOR_BATCH_DEL

-删除后
[dmdba@dmdsc01 dm_bak]$ ls -ltr
总用量 0
drwxr-xr-x 2 dmdba dinstall 49 629 17:19 tab_bak_01
drwxr-xr-x 2 dmdba dinstall 75 630 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 629 16:27 ts_full_bak_01
drwxr-xr-x 2 dmdba dinstall 67 629 16:40 ts_increment_bak_02
drwxr-xr-x 2 dmdba dinstall 49 629 17:19 tab_bak_01
drwxr-xr-x 2 dmdba dinstall 51 629 17:31 arch_bak_01
drwxr-xr-x 2 dmdba dinstall 79 629 17:34 arc_bak_lsn_732904-737261

-删除之后
[dmdba@dmdsc01 dm_bak]$ ls -ltr
总用量 0
drwxr-xr-x 2 dmdba dinstall 57 629 16:27 ts_full_bak_01
drwxr-xr-x 2 dmdba dinstall 67 629 16:40 ts_increment_bak_02
drwxr-xr-x 2 dmdba dinstall 49 629 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值