DM7定时创建及删除备份文件

DM7定时创建备份文件
前提条件
修改dm.ini和dmarch.ini,保证能够在联机情况下进行数据库备份操作;

  1. 配置归档日志
    打开DM管理工具,在查询窗口执行如下语句:
SQL> ALTER DATABASE MOUNT;
SQL> ALTER DATABASE ADD ARCHIVELOG 'DEST = c:\awork\dmdbms\data\arch, TYPE = local, FILE_SIZE = 1024, SPACE_LIMIT = 10240';
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;
  1. 新建作业
    右键点击“代理”,创建代理环境;
    右键点击“作业”“新建作业”,在弹出的页面中输入作业名、作业描述等信息,如下图所示:
    在这里插入图片描述

  2. 设置作业-全量备份
    点击“选择项”“作业步骤”新建,在弹出的页面中输入 步骤名称、步骤类型(备份数据库)、备份路径,备份方式,点击“确定”按钮,如下图所示:
    在这里插入图片描述

  3. 设置调度
    点击“选择项”“作业调度”新建,在弹出的页面中输入 名称、调度类型(反复执行)、发生频率的类型(根据实际需求,可以选择周或天)、每周频率执行一次(设置执行时间01:00:00,时间根据实际情况设置),点击“确定”按钮,如下图所示:
    在这里插入图片描述再次点击“确定”按钮后,自动定时全库备份的作业就设置成功了;

  4. 如何修改作业
    如果需要修改,可以右键点击 代理作业定时全库备份修改,在弹出的页面中修改;

  5. 如何作业查看执行情况
    可以右键点击 代理作业定时全库备份查看作业历史信息,在弹出的页面中查看;

  6. 设置作业-增量备份
    在这里插入图片描述
    DM7定时删除过期备份文件
    前提条件
    修改dm.ini和dmarch.ini,保证能够在联机情况下进行数据库备份操作;
    1、创建函数SF_DEL_DB_BAK_EXPIRED
    打开DM管理工具,在查询窗口执行如下语句:

create or replace function SF_DEL_DB_BAK_EXPIRED(
DBNAME varchar(128), 
BAKDIR varchar(256),
PARALLEL_DIR varchar(256),
EXPIRED_DAY int ) 
return INT as

DECLARE
V_CNT INT;
V_I   INT;
V_PATH VARCHAR(256);
V_TIME INT;
V_FLAG INT;
V_NUM INT;

TYPE T_REC IS 
RECORD (
ID INT,
NAME VARCHAR(128),
TIME VARCHAR(128),
PATH VARCHAR(256));
TYPE T_REC_ARR IS TABLE OF T_REC;

BAK_INFO T_REC_ARR:=T_REC_ARR();  

begin
V_NUM=0;
/*初始化备份链表*/
SF_BAK_LST_INIT();
SF_BAK_LST_SET_N_PATH(1);
SF_BAK_LST_SET_PATH(0, BAKDIR);
SF_BAK_LST_SET_PARALLEL_DIR(PARALLEL_DIR);
SF_BAK_LST_COLLECT(DBNAME, '', 1); 
V_CNT = SF_GET_BAK_LST_NUM(DBNAME);
/*判断某库是否存在备份*/
IF V_CNT > 0 THEN
PRINT V_CNT;
ELSE RETURN -1;
END IF;
/*指向第一个备份*/
SF_BAK_LST_GET_FIRST();
/*指向某一个备份,获取其中某些信息存入数组BAK_INFO*/
FOR V_I IN 1..V_CNT
LOOP
V_PATH=SF_BAK_GET_CUR_PATH();
IF V_PATH IS NOT NULL THEN
    BAK_INFO.EXTEND;
BAK_INFO(V_I).ID    =V_I;
BAK_INFO(V_I).NAME  = SF_BAK_GET_NAME(V_PATH);
BAK_INFO(V_I).TIME  = SF_BAK_GET_TIME(V_PATH);
BAK_INFO(V_I).PATH  = V_PATH; 
END IF;
/*移向下一个备份*/
SF_BAK_LST_GET_NEXT();
END LOOP;
/*用游标隐式打开从ARRAY BAK_INFO取这些值*/
FOR R IN (SELECT * FROM  table(BAK_INFO))
LOOP   
IF DAYS_BETWEEN(CURDATE(),R.TIME) >= EXPIRED_DAY THEN--注意between中参数顺序保证得正数
V_FLAG = SF_DEL_BAK(DBNAME,'',R.NAME,1);
END IF;
 
IF V_FLAG=0 THEN
V_NUM=V_NUM+1;
END IF;   
END LOOP;
/*有一个失败,全部失败*/
IF V_NUM >= 1 THEN
RETURN 0;
ELSE RETURN 1;
END IF;
/*销毁备份链表*/
SF_BAK_LST_DEINIT();
end;

2、新建作业
右键点击“代理”,创建代理环境;
右键点击“作业”“新建作业”,在弹出的页面中输入作业名、作业描述等信息,如下图所示:
在这里插入图片描述
3、设置作业
点击“选择项”“作业步骤”新建,在弹出的页面中输入 步骤名称、步骤类型(SQL脚本)、脚本语句(Call SF_DEL_DB_BAK_EXPIRED(‘DAMENG’,‘c:\awork\dmdbms\data\DAMENG\bak’,’’,15); 'DAMENG’指的是数据库名,'c:\awork\dmdbms\data\DAMENG\bak’代表备份文件路径,15代表删除15天之前的备份文件),点击“确定”按钮,如下图所示:
在这里插入图片描述
4、设置调度
点击“选择项”“作业调度”新建,在弹出的页面中输入 名称、调度类型(反复执行)、发生频率的类型(根据实际需求,可以选择周或天)、每周频率执行一次(设置执行时间01:00:00,时间根据实际情况设置),点击“确定”按钮,如下图所示:
在这里插入图片描述
再次点击“确定”按钮后,自动定时删除过期备份 的作业就设置成功了;

DM7根据备份文件还原数据库
1、还原全库备份文件状态-全库备份文件

c:\Awork\dmdbms\bin>dmrestore ini_path=c:\Awork\dmdbms\data\DAMENG\dm.ini file=c:\Awork\dmdbms\data\DAMENG\bak\DB_DAMENG_FULL_2017_12_01_15_55_06.bak

2、还原增量备份文件-全库备份+增量备份文件

c:\Awork\dmdbms\bin>dmrestore ini_path=c:\Awork\dmdbms\data\DAMENG\dm.ini file=c:\Awork\dmdbms\data\DAMENG\bak\DB_DAMENG_INCREMENT_2017_12_01_16_00_06.bak

3、还原最新状态-全库备份+增量备份+归档日志文件

c:\Awork\dmdbms\bin>dmrestore ini_path=c:\Awork\dmdbms\data\DAMENG\dm.ini file=c:\Awork\dmdbms\data\DAMENG\bak\DB_DAMENG_INCREMENT_2017_12_01_16_00_06.bak ARCHIVE_DIR=c:\Awork\dmdbms\data\arch
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值