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 参数说明
参数名 | 类型 | 取值范围 | 是否可选 | 描述 |
---|---|---|---|---|
PLANNAME | VARCHAR | 无 | 否 | 备份计划名称 |
PLANTYPE | VARCHAR | BAK/EXP | 否 | 备份类型,BACK为系统备份,EXP为逻辑备份 |
PATH | VARCHAR | 无 | 否 | 备份文件输出路径 |
STARTTIME | DATETIME | 无 | 否 | 备份计划开始时间 |
PERIOD | INTERVAL DAY TO MINUTE | >=10 | 否 | 备份计划执行周期(分钟),最小10分钟 |
提示
PATH
为内部的逻辑路径,并非操作系统层的路径,其操作系统层的路径跟路径映射配置相关(详情见mount.ini系统配置)- 系统备份只允许在系统库中进行!
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 参数说明
参数名 | 类型 | 取值范围 | 是否可选 | 描述 |
---|---|---|---|---|
PLANNAME | VARCHAR | 无 | 否 | 备份计划名称 |
ENA | BOOLEAN | TRUE/FALSE | 否 | TRUE表示设置为活动态,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 参数说明
参数名 | 类型 | 取值范围 | 是否可选 | 描述 |
---|---|---|---|---|
PLANNAME | VARCHAR | 无 | 否 | 备份计划名称 |
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 参数说明
参数名 | 类型 | 取值范围 | 是否可选 | 描述 |
---|---|---|---|---|
PLANNAME | VARCHAR | 无 | 否 | 备份计划名称 |
FILENAME | VARCHAR | BAK/EXP | 否 | 备份数据文件名 |
TIME_OFFSET | INTERVAL 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 参数说明
参数名 | 类型 | 取值范围 | 是否可选 | 描述 |
---|---|---|---|---|
PLANNAME | VARCHAR | 无 | 否 | 备份计划名称 |
TIME_OFFSET | INTERVAL DAY TO MINUTE | 无 | 否 | 相对于备份计划开始时间的时间偏移(单位:分钟) |
PERIOD | INTERVAL 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 参数说明
参数名 | 类型 | 取值范围 | 是否可选 | 描述 |
---|---|---|---|---|
PLANNAME | VARCHAR | 无 | 否 | 备份计划名称 |
ITEM_N | INTEGER | 无 | 否 | 系统备份项的编号 |
提示
系统备份项编号由创建时自动生成。删除指定备份项时,应先查询系统表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 参数说明
参数名 | 类型 | 取值范围 | 是否可选 | 描述 |
---|---|---|---|---|
PLANNAME | VARCHAR | 无 | 否 | 备份计划名称 |
OBJ_NAME | VARCHAR | 无 | 否 | 库对象或表对象名称 |
OBJ_TYPE | VARCHAR | DATABASE/TABLE | 否 | 对象类型,库对象或表对象 |
FILENAME | VARCHAR | 无 | 否 | 备份数据文件名 |
TIME_OFFSET | INTERVAL DAY TO MINUTE | 无 | 否 | 相对于计划开始时间的时间偏移(单位:分钟),不能超过计划周期 |
提示
在创建逻辑备份(EXP)项时应注意:
- 指定的备份计划应为EXP类型,保持一致
- TIME_OFFSET不能大于备份计划执行周期
- 逻辑备份允许创建多个,但不应该同名
- 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 参数说明
参数名 | 类型 | 取值范围 | 是否可选 | 描述 |
---|---|---|---|---|
PLANNAME | VARCHAR | 无 | 否 | 备份计划名称 |
FILENAME | VARCHAR | 无 | 否 | 备份数据文件名 |
BAK_COUNT | INTEGER | 无 | 否 | 备份数据文件份数 |
OPTTYPE | VARCHAR | DELETE/MOVE | 否 | 备份文件处理方式,DELETE直接删除,MOVE表示移动文件 |
DSTPATH | VARCHAR | 无 | 是,默认为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 参数说明
参数名 | 类型 | 取值范围 | 是否可选 | 描述 |
---|---|---|---|---|
PLANNAME | VARCHAR | 无 | 否 | 备份计划名称 |
OBJTYPE | VARCHAR | DATABASE/TABLE | 否 | 对象类型,DATABASE为库对象,TABLE为表对象 |
OBJNAME | VARCHAR | 无 | 否 | 对象名称 |
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 参数说明
参数名 | 类型 | 取值范围 | 是否可选 | 描述 |
---|---|---|---|---|
PLANNAME | VARCHAR | 无 | 否 | 备份计划名称 |
CURR_ITEM | INTEGER | 无 | 否 | 当前备份项编号 |
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 参数说明
参数名 | 类型 | 取值范围 | 是否可选 | 描述 |
---|---|---|---|---|
PLANNAME | VARCHAR | 无 | 否 | 备份计划名称 |
CURR_ITEM | INTEGER | 无 | 否 | 指定备份项编号 |
NEXT_RUN_TIME | DATETIME | 无 | 否 | 下次运行时间 |
ISTART_T | DATETIME | 无 | 是,默认为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 场景应用
- 场景一:原定备份时间段与业务高峰重合,影响系统性能,此时可以调整备份项的下次运行时间至业务低峰期
- 场景二:计划对数据库进行维护,需暂停或延后备份任务,此时可以将备份项运行时间推迟至维护完成后