Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


DBMS_BACKUP系统包

📄字数 9.9K
👁️阅读量 加载中...

一、概述

DBMS_BACKUP系统包是数据库系统提供的备份计划管理工具包,用于定义、管理、执行数据库备份计划,支持系统级和逻辑级的多种备份方式,其中每个备份计划可包含多个备份任务(备份项)。

在该系统包中提供了以下接口:

包体函数名简要描述
CREATE_PALN创建备份计划
ENABLE_PALN启用或者关闭备份计划
DROP_PLAN删除备份计划
RUN执行备份计划
ADD_BACKUP_ITEM在指定备份计划中,创建全备份的系统备份项
ADD_BACKUP_INC_ITEM在指定备份计划中,创建增量系统备份项
DROP_ITEM删除指定备份计划中的系统备份项
ADD_EXPORT_ITEM在指定备份计划中,创建逻辑备份项
ADD_FILE_ITEM在指定备份计划中,创建备份文件操作项
ALTER_PLAN_DEL_ITEM删除指定备份计划中的逻辑备份项
ALTER_MODIFY_CURR_ITEM设置备份计划的当前项编号
ALTER_MODIFY_RUN_TIME设置备份计划中指定项的下次运行时间

典型应用场景,如:

  • 定时全库备份,如每天凌晨2点执行系统全备份
  • 增量备份调度,如每周日做全备,其他天做增量
  • 逻辑备份导出,每月导出关键表结构与数据
  • 灵活启停,如节假日临时关闭备份计划,节后自动恢复

二、CREATE_PALN

2.1 功能描述

该接口用于创建一个数据库备份计划,定期执行备份任务

2.2 方法声明

sql
PROCEDURE CREATE_PLAN(
    PLANNAME    VARCHAR,
    PLANTYPE    VARCHAR,
    PATH        VARCHAR,
    STARTTIME   DATETIME,
    PERIOD      INTERVAL DAY TO MINUTE
    );

2.3 参数说明

参数名类型取值范围是否可选描述
PLANNAMEVARCHAR备份计划名称
PLANTYPEVARCHARBAK/EXP备份类型,BACK为系统备份,EXP为逻辑备份
PATHVARCHAR备份文件输出路径
STARTTIMEDATETIME备份计划开始时间
PERIODINTERVAL DAY TO MINUTE>=10备份计划执行周期(分钟),最小10分钟

提示

  1. PATH为内部的逻辑路径,并非操作系统层的路径,其操作系统层的路径跟路径映射配置相关(详情见mount.ini系统配置
  2. 系统备份只允许在系统库中进行!

2.4 示例

sql
-- 创建一个备份计划back_exp,其备份类型为EXP,路径为'/BACKUP',开始时间为2025-06-30 10:10:10,执行周期为每1天。
SQL> BEGIN
         BEGIN TRANSACTION;
         DBMS_BACKUP.CREATE_PLAN('back_exp','EXP','/BACKUP','2025-06-30 10:10:10',INTERVAL '1 0:0' DAY TO MINUTE);
         COMMIT TRANSACTION;
     END;
     /

-- 查询系统表SYS_BACKUP_PLANS
SQL> select * from sys_backup_plans;

+-------+-----------+-------+--------------------------+---------------+--------+---------+-----------+
| DB_ID | PLAN_NAME | PTYPE |         START_T          |    PERIOD     | ENABLE |  PATH   | CURR_ITEM |
+-------+-----------+-------+--------------------------+---------------+--------+---------+-----------+
| 1     | back_exp  | EXP   | 2025-06-30 10:10:10.000  |       1 00:00 | F      | /BACKUP | 1         |
+-------+-----------+-------+--------------------------+---------------+--------+---------+-----------+

2.5 场景应用

  • 场景一:设置数据库定时的全量备份计划,无须手动执行
  • 场景二:特定表或库进行逻辑备份,单独备份关键数据

三、ENABLE_PALN

3.1 功能描述

该接口用于设置备份计划的活动标志,表示是否可用。在创建时默认为不可用

提示

系统备份只允许存在一个计划为活动态!逻辑备份允许多个

3.2 方法声明

sql
PROCEDURE ENABLE_PLAN(
    PLANNAME    VARCHAR,
    ENA         BOOLEAN
    );

3.3 参数说明

参数名类型取值范围是否可选描述
PLANNAMEVARCHAR备份计划名称
ENABOOLEANTRUE/FALSETRUE表示设置为活动态,FALSE为禁用态

3.4 示例

sql
-- 查询系统表SYS_BACKUP_PLANS,ENABLE字段为F
SQL> select * from sys_backup_plans;

+-------+-----------+-------+--------------------------+---------------+--------+---------+-----------+
| DB_ID | PLAN_NAME | PTYPE |         START_T          |    PERIOD     | ENABLE |  PATH   | CURR_ITEM |
+-------+-----------+-------+--------------------------+---------------+--------+---------+-----------+
| 1     | back_exp  | EXP   | 2025-06-30 10:10:10.000  |       1 00:00 | F      | /BACKUP | 1         |
+-------+-----------+-------+--------------------------+---------------+--------+---------+-----------+

-- 设置备份计划back_exp为活动态,允许其执行
SQL> DBMS_BACKUP.ENABLE_PLAN('back_exp',true);

-- 查询系统表SYS_BACKUP_PLANS,ENABLE字段变为T
SQL> select * from sys_backup_plans;

+-------+-----------+-------+--------------------------+---------------+--------+---------+-----------+
| DB_ID | PLAN_NAME | PTYPE |         START_T          |    PERIOD     | ENABLE |  PATH   | CURR_ITEM |
+-------+-----------+-------+--------------------------+---------------+--------+---------+-----------+
| 1     | back_exp  | EXP   | 2025-06-30 10:10:10.000  |       1 00:00 | T      | /BACKUP | 1         |
+-------+-----------+-------+--------------------------+---------------+--------+---------+-----------+

3.5 场景应用

  • 场景一:某些计划只在特定时期启用,可以避免不必要的资源消耗,提高备份策略的灵活性和可控性

四、DROP_PLAN

4.1 功能描述

该接口用于删除备份计划,该计划下所有子项也会一并删除。

提示

活动态备份计划不允许被删除!若想删除,必须先设置此计划为禁用态

4.2 方法声明

sql
PROCEDURE DROP_PLAN(
    PLANNAME    VARCHAR
    );

4.3 参数说明

参数名类型取值范围是否可选描述
PLANNAMEVARCHAR备份计划名称

4.4 示例

sql
--执行删除
SQL> EXEC DBMS_BACKUP.DROP_PLAN('back_exp');

Error: [E21077] 不能删除活动备份计划

-- 若想删除,必须先确保此计划为禁用态,否则将不允许删除
SQL> EXEC DBMS_BACKUP.ENABLE_PLAN('back_exp',false);

--执行删除
SQL> EXEC DBMS_BACKUP.DROP_PLAN('back_exp'); 

-- 查询系统表SYS_BACKUP_PLANS
SQL> select * from sys_backup_plans;

+-------+-----------+-------+---------+--------+--------+------+-----------+
| DB_ID | PLAN_NAME | PTYPE | START_T | PERIOD | ENABLE | PATH | CURR_ITEM |
+-------+-----------+-------+---------+--------+--------+------+-----------+
+-------+-----------+-------+---------+--------+--------+------+-----------+

4.5 场景应用

  • 场景一:旧的备份策略不再使用,删除旧计划及任务项,避免混淆
  • 场景二:误操作或用于测试的计划未清理,可能造成重复备份或资源浪费,删除不需要的备份计划

五、RUN

5.1 功能描述

该接口用于执行活动态计划中所有满足执行时间的子项

5.2 方法声明

sql
PROCEDURE RUN();

5.3 示例

sql
-- 执行备份计划
SQL> EXEC DBMS_BACKUP.RUN();

5.4 场景应用

  • 场景一:用于执行备份计划子项

六、ADD_BACKUP_ITEM

6.1 功能描述

该接口用于向指定的备份计划中,创建一个全备份类型的系统备份(BAK)项

6.2 方法声明

sql
PROCEDURE ADD_BACKUP_ITEM(
    PLANNAME        VARCHAR,
    FILENAME        VARCHAR,
    TIME_OFFSET     INTERVAL DAY TO MINUTE
    );

6.3 参数说明

参数名类型取值范围是否可选描述
PLANNAMEVARCHAR备份计划名称
FILENAMEVARCHARBAK/EXP备份数据文件名
TIME_OFFSETINTERVAL DAY TO MINUTE>=10相对于备份计划开始时间的时间偏移(分钟),其不能超过计划执行周期

提示

在创建系统备份(BAK)项时应注意:
1、指定的备份计划应为BAK类型,保持一致
2、TIME_OFFSET不能大于备份计划执行周期
3、全量系统备份不允许重复创建
4、FILENAME指定的文件在磁盘上应不存在

6.4 示例

sql
-- 创建一个BAK类型的备份计划back_bak,并向这个备份计划中加入系统备份项,时间偏移为'0 0:0'(和执行计划开始时间一样)
SQL> BEGIN
         BEGIN TRANSACTION;
         DBMS_BACKUP.CREATE_PLAN('back_bak','BAK','/BACKUP','2025-06-30 10:00:00',INTERVAL '1 0:0' DAY TO MINUTE);
         DBMS_BACKUP.ADD_BACKUP_ITEM('back_bak','back.BAK',INTERVAL '0 0:0' DAY TO MINUTE);
         COMMIT TRANSACTION;
     END;
     /

-- 查询系统表SYS_BACKUP_PLANS
SQL> select * from sys_backup_plans;

+-------+-----------+-------+--------------------------+---------------+--------+---------+-----------+
| DB_ID | PLAN_NAME | PTYPE |         START_T          |    PERIOD     | ENABLE |  PATH   | CURR_ITEM |
+-------+-----------+-------+--------------------------+---------------+--------+---------+-----------+
| 1     | back_bak  | BAK   | 2025-06-30 10:00:00.000  |       1 00:00 | F      | /BACKUP | 1         |
+-------+-----------+-------+--------------------------+---------------+--------+---------+-----------+

-- 查询系统表YS_BACKUP_ITEMS
SQL> SELECT * FROM SYS_BACKUP_ITEMS;

+-------+-----------+---------+----------+----------+---------+-----------+---------+---------------+----------------+---------------+--------------------------+---------+----------+
| DB_ID | PLAN_NAME | ITEM_NO | OBJ_NAME | OBJ_TYPE | OP_TYPE | FILE_NAME | FILE_OP | FILE_KEEP_CNT | FILE_MOVE_PATH |   TIME_OFF    |        NEXT_RUN_T        | IPERIOD |ISTART_T |
+-------+-----------+---------+----------+----------+---------+-----------+---------+---------------+----------------+---------------+--------------------------+---------+----------+
| 1     | back_bak  | 1       | SYSTEM   | SYSTEM   | BACKUP  | back.BAK  | <NULL>  | 0             | <NULL>         |       0 00:00 | 2025-06-30 10:00:00.000  | <NULL>  | <NULL> |
+-------+-----------+---------+----------+----------+---------+-----------+---------+---------------+----------------+---------------+--------------------------+---------+----------+

6.5 场景应用

  • 场景一:创建全备项,进行定期的全库备份,保证数据可靠性
  • 场景二:在测试或预生产环境验证备份完整性和恢复流程,可以创建全备项

七、ADD_BACKUP_INC_ITEM

7.1 功能描述

该接口用于向指定的备份计划中,创建一个增量类型的系统备份(BAK)项。该子项只备份自上次备份以来发生变更的数据,区别于全量备份

7.2 方法声明

sql
PROCEDURE ADD_BACKUP_INC_ITEM(
    PLANNAME            VARCHAR,
    TIME_OFFSET         INTERVAL DAY TO MINUTE,
    IPERIOD             INTERVAL DAY TO MINUTE DEFAULT NULL
    );

7.3 参数说明

参数名类型取值范围是否可选描述
PLANNAMEVARCHAR备份计划名称
TIME_OFFSETINTERVAL DAY TO MINUTE相对于备份计划开始时间的时间偏移(单位:分钟)
PERIODINTERVAL DAY TO MINUTE是,默认为NULL增量备份执行周期(单位:分钟)

提示

在创建系统备份(BAK)增量项时应注意:

1、创建增量系统备份前,应先创建全量系统备份
2、指定的备份计划应为BAK类型,保持一致
3、TIME_OFFSET不能大于备份计划执行周期,且要小于全量备份偏移(保证全备先进行)
4、增量系统备份不允许重复创建

7.4 示例

sql
-- 向备份计划back_bak中加入一个增量的系统备份(BAK)项
SQL> BEGIN
         BEGIN TRANSACTION;
         DBMS_BACKUP.ADD_BACKUP_INC_ITEM('back_bak',INTERVAL '0 0:1' DAY TO MINUTE,INTERVAL '1 0:0' DAY TO MINUTE);
         COMMIT TRANSACTION;
     END;
     /

-- 查询系统表YS_BACKUP_ITEMS
SQL> SELECT * FROM SYS_BACKUP_ITEMS;

+-------+-----------+---------+----------+----------+------------+-----------+---------+---------------+----------------+---------------+--------------------------+---------------+--------------------------+
| DB_ID | PLAN_NAME | ITEM_NO | OBJ_NAME | OBJ_TYPE |  OP_TYPE   | FILE_NAME | FILE_OP | FILE_KEEP_CNT | FILE_MOVE_PATH |   TIME_OFF    |        NEXT_RUN_T        |   IPERIOD |  ISTART_T|
+-------+-----------+---------+----------+----------+------------+-----------+---------+---------------+----------------+---------------+--------------------------+---------------+--------------------------+
| 1     | back_bak  | 1       | SYSTEM   | SYSTEM   | BACKUP     | back.BAK  | <NULL>  | 0             | <NULL>         |       0 00:00 | 2025-06-30 10:00:00.000  | <NULL>       | <NULL>|
| 1     | back_bak  | 2       | SYSTEM   | SYSTEM   | BACKUP_INC | back.BAK  | <NULL>  | 0             | <NULL>         |  0 00:01 | 2025-06-30 10:01:00.000  | 1 00:00 |2025-06-30 10:00:00.000|
+-------+-----------+---------+----------+----------+------------+-----------+---------+---------------+----------------+---------------+--------------------------+---------------+--------------------------+

7.5 场景应用

  • 场景一:数据库业务活跃,频繁变更数据,但不适合每天做全备,可以使用增量备份

八、DROP_ITEM

8.1 功能描述

该接口用于删除系统备份项

警告

若删除项为全备项,且存在增量备份,此时不允许删除!需先删除增量备份,再删除全备

8.2 方法声明

sql
PROCEDURE DROP_ITEM(
    PLANNAME    VARCHAR,
    ITEM_N      INTEGER
    );

8.3 参数说明

参数名类型取值范围是否可选描述
PLANNAMEVARCHAR备份计划名称
ITEM_NINTEGER系统备份项的编号

提示

系统备份项编号由创建时自动生成。删除指定备份项时,应先查询系统表SYS_BACKUP_ITEMS获取目的编号

8.4 示例

sql
-- 查询所有的系统备份项
SQL> SELECT * FROM SYS_BACKUP_ITEMS;

+-------+-----------+---------+----------+----------+------------+-----------+---------+---------------+----------------+---------------+--------------------------+---------------+--------------------------+
| DB_ID | PLAN_NAME | ITEM_NO | OBJ_NAME | OBJ_TYPE |  OP_TYPE   | FILE_NAME | FILE_OP | FILE_KEEP_CNT | FILE_MOVE_PATH |   TIME_OFF    |        NEXT_RUN_T        |    IPERIOD    |ISTART_T|
+-------+-----------+---------+----------+----------+------------+-----------+---------+---------------+----------------+---------------+--------------------------+---------------+--------------------------+
| 1     | back_bak  | 1       | SYSTEM   | SYSTEM   | BACKUP     | back.BAK  | <NULL>  | 0             | <NULL>         |       0 00:00 | 2025-06-30 10:00:00.000  | <NULL>       | <NULL>|
| 1     | back_bak  | 2       | SYSTEM   | SYSTEM   | BACKUP_INC | back.BAK  | <NULL>  | 0             | <NULL>         |  0 00:01 | 2025-06-30 10:01:00.000  |1 00:00| 2025-06-30 10:00:00.000|
+-------+-----------+---------+----------+----------+------------+-----------+---------+---------------+----------------+---------------+--------------------------+---------------+--------------------------+

-- 存在增量依赖时,不允许删除全备
SQL> EXEC DBMS_BACKUP.DROP_ITEM('back_bak','1');

Error: [E21089] 存在增量依赖,不能删除全备

-- 先删除增量依赖,然后删除全备
SQL> EXEC DBMS_BACKUP.DROP_ITEM('back_bak','2');
SQL> EXEC DBMS_BACKUP.DROP_ITEM('back_bak','1');

8.5 场景应用

  • 场景一:删除早期的历史备份项,特别是过期或冗余的增量系统备份项
  • 场景二:某次手动创建的备份项目标错误,立即删除该备份项,重新创建正确配置的备份项
  • 场景三:因业务变化需变更备份策略,删除旧的备份项

九、ADD_EXPORT_ITEM

9.1 功能描述

该接口用于向指定的备份计划中,创建一个逻辑备份(EXP)项,包含库级和表级备份

9.2 方法声明

sql
PROCEDURE ADD_EXPORT_ITEM(
    PLANNAME VARCHAR,
    OBJ_NAME VARCHAR,
    OBJ_TYPE VARCHAR,
    FILENAME VARCHAR,
    TIME_OFFSET INTERVAL DAY TO MINUTE
    );

9.3 参数说明

参数名类型取值范围是否可选描述
PLANNAMEVARCHAR备份计划名称
OBJ_NAMEVARCHAR库对象或表对象名称
OBJ_TYPEVARCHARDATABASE/TABLE对象类型,库对象或表对象
FILENAMEVARCHAR备份数据文件名
TIME_OFFSETINTERVAL DAY TO MINUTE相对于计划开始时间的时间偏移(单位:分钟),不能超过计划周期

提示

在创建逻辑备份(EXP)项时应注意:

  1. 指定的备份计划应为EXP类型,保持一致
  2. TIME_OFFSET不能大于备份计划执行周期
  3. 逻辑备份允许创建多个,但不应该同名
  4. FILENAME指定的文件在磁盘上应不存在

9.4 示例

sql
-- 创建一个EXP类型的备份计划back_exp
SQL> DBMS_BACKUP.CREATE_PLAN('back_exp','EXP','/BACKUP','2025-06-30 10:00:00',INTERVAL '1 0:0' DAY TO MINUTE);

-- 查询备份计划
SQL> SELECT * FROM SYS_BACKUP_PLANS where plan_name = 'back_exp';

+-------+-----------+-------+--------------------------+---------------+--------+---------+-----------+
| DB_ID | PLAN_NAME | PTYPE |         START_T          |    PERIOD     | ENABLE |  PATH   | CURR_ITEM |
+-------+-----------+-------+--------------------------+---------------+--------+---------+-----------+
| 1     | back_exp  | EXP   | 2025-06-30 10:00:00.000  |       1 00:00 | F      | /BACKUP | 1         |
+-------+-----------+-------+--------------------------+---------------+--------+---------+-----------+

-- 向这个备份计划中加入逻辑备份项(对数据库TEST_DB进行备份)
SQL> EXEC DBMS_BACKUP.ADD_EXPORT_ITEM('back_exp','TEST_DB','database','test_db.EXP',INTERVAL '0 0:0' DAY TO MINUTE);

-- 查询系统备份项
SQL> SELECT * FROM SYS_BACKUP_ITEMS where plan_name = 'back_exp';

+-------+-----------+---------+----------+----------+---------+-------------+---------+---------------+----------------+---------------+--------------------------+---------+----------+
| DB_ID | PLAN_NAME | ITEM_NO | OBJ_NAME | OBJ_TYPE | OP_TYPE |  FILE_NAME  | FILE_OP | FILE_KEEP_CNT | FILE_MOVE_PATH |   TIME_OFF    |        NEXT_RUN_T     | IPERIOD | ISTART_T |
+-------+-----------+---------+----------+----------+---------+-------------+---------+---------------+----------------+---------------+--------------------------+---------+----------+
| 1     | back_exp  | 1       | TEST_DB  | DATABASE | EXPORT  | test_db.EXP | <NULL>  | 0             | <NULL>         |       0 00:00 | 2025-06-30 10:00:00.000  | <NULL>  | <NULL>|
+-------+-----------+---------+----------+----------+---------+-------------+---------+---------------+----------------+---------------+--------------------------+---------+----------+

9.5 场景应用

  • 场景一:设置逻辑表级备份,即使某张表被误删或数据被误更新,只需恢复单表,不影响其他表
  • 场景二:逻辑备份用于快速导出关键数据

十、ADD_FILE_ITEM

10.1 功能描述

该接口用于修改系统表SYS_BACKUP_ITEMS中的备份文件信息,包括备份文件保留份数、备份文件处理方式以及保存路径

10.2 方法声明

sql
PROCEDURE ADD_FILE_ITEM(
    PLANNAME    VARCHAR,
    FILENAME    VARCHAR,
    BAK_COUNT   INTEGER,
    OPTTYPE     VARCHAR,
    DSTPATH     VARCHAR DEFAULT NULL)
    ;

10.3 参数说明

参数名类型取值范围是否可选描述
PLANNAMEVARCHAR备份计划名称
FILENAMEVARCHAR备份数据文件名
BAK_COUNTINTEGER备份数据文件份数
OPTTYPEVARCHARDELETE/MOVE备份文件处理方式,DELETE直接删除,MOVE表示移动文件
DSTPATHVARCHAR是,默认为NULL指定移动的目标路径

提示

当OPTTYPE为MOVE类型时,此时DSTPATH不应该为空,应指定移动的目标路径

10.4 示例

sql
-- 对于备份计划back_exp中的备份文件test_db.exp,将其备份文件保留份数修改为7,备份文件处理方式DELETE,保存路径不变
SQL> EXEC DBMS_BACKUP.ADD_FILE_ITEM('back_exp','test_db.exp',7,'DELETE',NULL);

-- 查询系统备份项
SQL> SELECT * FROM SYS_BACKUP_ITEMS where plan_name = 'back_exp';

+-------+-----------+---------+----------+----------+---------+-------------+---------+---------------+----------------+---------------+--------------------------+---------+----------+
| DB_ID | PLAN_NAME | ITEM_NO | OBJ_NAME | OBJ_TYPE | OP_TYPE |  FILE_NAME  | FILE_OP | FILE_KEEP_CNT | FILE_MOVE_PATH |   TIME_OFF    |        NEXT_RUN_T     | IPERIOD | ISTART_T |
+-------+-----------+---------+----------+----------+---------+-------------+---------+---------------+----------------+---------------+--------------------------+---------+----------+
| 1     | back_exp  | 1       | TEST_DB  | DATABASE | EXPORT  | test_db.EXP | DELETE  | 7             | <NULL>         |    0 00:00 | 2025-06-30 10:00:00.000  | <NULL>  | <NULL>   |
+-------+-----------+---------+----------+----------+---------+-------------+---------+---------------+----------------+---------------+--------------------------+---------+----------+

10.5 场景应用

  • 场景一:原备份路径磁盘空间不足或存储设备更换,需修改备份文件路径,指向新磁盘或新挂载点
  • 场景二:当备份持续累积,占用过多磁盘空间,此时可以减少备份文件保留数

十一、ALTER_PLAN_DEL_ITEM

11.1 功能描述

该接口用于删除逻辑备份项

11.2 方法声明

sql
PROCEDURE ALTER_PLAN_DEL_ITEM(
    PLANNAME            VARCHAR,
    OBJTYPE             VARCHAR,
    OBJNAME             VARCHAR
    );

11.3 参数说明

参数名类型取值范围是否可选描述
PLANNAMEVARCHAR备份计划名称
OBJTYPEVARCHARDATABASE/TABLE对象类型,DATABASE为库对象,TABLE为表对象
OBJNAMEVARCHAR对象名称

11.4 示例

sql
-- 删除备份计划back_exp中,对数据库对象test_db的逻辑备份项
SQL> EXEC DBMS_BACKUP.ALTER_PLAN_DEL_ITEM('back_exp','DATABASE','TEST_DB');

-- 查询所属计划为'back_exp'的所有子项
SQL> SELECT * FROM SYS_BACKUP_ITEMS where plan_name = 'back_exp';

+-------+-----------+---------+----------+----------+---------+-----------+---------+---------------+----------------+----------+------------+---------+----------+
| DB_ID | PLAN_NAME | ITEM_NO | OBJ_NAME | OBJ_TYPE | OP_TYPE | FILE_NAME | FILE_OP | FILE_KEEP_CNT | FILE_MOVE_PATH | TIME_OFF | NEXT_RUN_T | IPERIOD | ISTART_T |
+-------+-----------+---------+----------+----------+---------+-----------+---------+---------------+----------------+----------+------------+---------+----------+
+-------+-----------+---------+----------+----------+---------+-----------+---------+---------------+----------------+----------+------------+---------+----------+

11.5 场景应用

  • 场景一:逻辑备份项积累过多,定期删除过期、不再需要的逻辑备份项

十二、ALTER_MODIFY_CURR_ITEM

12.1 功能描述

该接口用于设置备份计划的当前项

12.2 方法声明

sql
PROCEDURE ALTER_MODIFY_CURR_ITEM(
    PLANNAME                VARCHAR,
    CURR_ITEM               INTEGER
    );

12.3 参数说明

参数名类型取值范围是否可选描述
PLANNAMEVARCHAR备份计划名称
CURR_ITEMINTEGER当前备份项编号

12.4 示例

sql
-- 向back_bak备份计划中加入系统备份项
SQL> BEGIN
         BEGIN TRANSACTION;
         DBMS_BACKUP.ADD_BACKUP_ITEM('back_bak','back.BAK',INTERVAL '0 0:0' DAY TO MINUTE);
         COMMIT TRANSACTION;
     END;
     /

-- 向备份计划back_bak中加入一个增量的系统备份项
SQL> BEGIN
         BEGIN TRANSACTION;
         DBMS_BACKUP.ADD_BACKUP_INC_ITEM('back_bak',INTERVAL '0 0:1' DAY TO MINUTE,INTERVAL '1 0:0' DAY TO MINUTE);
         COMMIT TRANSACTION;
     END;
     /

-- 查询所属备份计划back_bak的所有备份项
SQL> SELECT * FROM SYS_BACKUP_ITEMS where plan_name = 'back_bak';

+-------+-----------+---------+----------+----------+------------+-----------+---------+---------------+----------------+---------------+--------------------------+---------------+--------------------------+
| DB_ID | PLAN_NAME | ITEM_NO | OBJ_NAME | OBJ_TYPE |  OP_TYPE   | FILE_NAME | FILE_OP | FILE_KEEP_CNT | FILE_MOVE_PATH |   TIME_OFF    |        NEXT_RUN_T   | IPERIOD   |ISTART_T|
+-------+-----------+---------+----------+----------+------------+-----------+---------+---------------+----------------+---------------+--------------------------+---------------+--------------------------+
| 1     | back_bak  | 1       | SYSTEM   | SYSTEM   | BACKUP     | back.BAK  | <NULL>  | 0             | <NULL>         |       0 00:00 | 2025-06-30 10:00:00.000  | <NULL>  | <NULL>|
| 1     | back_bak  | 2       | SYSTEM   | SYSTEM   | BACKUP_INC | back.BAK  | <NULL>  | 0   | <NULL> |       0 00:01 | 2025-06-30 10:01:00.000  |1 00:00 | 2025-06-30 10:00:00.000|
+-------+-----------+---------+----------+----------+------------+-----------+---------+---------------+----------------+---------------+--------------------------+---------------+--------------------------+

-- 查询备份计划back_bak的当前项编号
SQL> SELECT curr_item FROM SYS_BACKUP_PLANS where plan_name = 'back_bak';

+-----------+
| CURR_ITEM |
+-----------+
| 1         |
+-----------+

-- 设置备份计划back_bak中编号为2的备份项为当前项
SQL> EXEC DBMS_BACKUP.ALTER_MODIFY_CURR_ITEM('back_bak','2');

-- 再次查询备份计划back_bak的当前项编号
SQL> SELECT curr_item FROM SYS_BACKUP_PLANS where plan_name = 'back_bak';

+-----------+
| CURR_ITEM |
+-----------+
| 2         |
+-----------+

12.5 场景应用

  • 场景一:原计划的全备份任务运行时间过长,影响性能,此时可以临时切换当前项为增量备份任务,减轻系统压力
  • 场景二:备份计划中包换多个备份任务,根据业务优先级,调整当前项执行顺序
  • 场景三:运维人员进行备份任务测试或维护,切换当前项为测试用备份项,完成后切换回正式项

十三、ALTER_MODIFY_RUN_TIME

13.1 功能描述

该接口用于修改指定备份项的下次运行时间

13.2 方法声明

sql
PROCEDURE ALTER_MODIFY_RUN_TIME(
    PLANNAME            VARCHAR,
    CURR_ITEM           INTEGER,
    NEXT_RUN_TIME       DATETIME,
    ISTART_T            DATETIME DEFAULT NULL
    );

13.3 参数说明

参数名类型取值范围是否可选描述
PLANNAMEVARCHAR备份计划名称
CURR_ITEMINTEGER指定备份项编号
NEXT_RUN_TIMEDATETIME下次运行时间
ISTART_TDATETIME是,默认为NULL增量启动时间

13.4 示例

sql
-- 查询备份计划back_bak中编号为1的备份项下次运行时间
SQL> SELECT next_run_t FROM SYS_BACKUP_ITEMS where plan_name = 'back_bak' and item_no = 1;

+--------------------------+
|        NEXT_RUN_T        |
+--------------------------+
| 2025-06-30 00:00:00.000  |
+--------------------------+

-- 修改备份计划back_bak中编号为1的备份项下次运行时间为2025-07-01 00:00:00
SQL> EXEC DBMS_BACKUP.ALTER_MODIFY_RUN_TIME('back_bak','1','2025-07-01 00:00:00',null);

-- 查询备份计划back_bak中编号为1的备份项下次运行时间
SQL> SELECT next_run_t FROM SYS_BACKUP_ITEMS where plan_name = 'back_bak' and item_no = 1;

+--------------------------+
|        NEXT_RUN_T        |
+--------------------------+
| 2025-07-01 00:00:00.000  |
+--------------------------+

13.5 场景应用

  • 场景一:原定备份时间段与业务高峰重合,影响系统性能,此时可以调整备份项的下次运行时间至业务低峰期
  • 场景二:计划对数据库进行维护,需暂停或延后备份任务,此时可以将备份项运行时间推迟至维护完成后

十四、相关系统表与视图