DM7定时创建备份文件
前提条件
修改dm.ini和dmarch.ini,保证能够在联机情况下进行数据库备份操作;
- 配置归档日志
打开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;
-
新建作业
右键点击“代理”,创建代理环境;
右键点击“作业”“新建作业”,在弹出的页面中输入作业名、作业描述等信息,如下图所示:
-
设置作业-全量备份
点击“选择项”“作业步骤”新建,在弹出的页面中输入 步骤名称、步骤类型(备份数据库)、备份路径,备份方式,点击“确定”按钮,如下图所示:
-
设置调度
点击“选择项”“作业调度”新建,在弹出的页面中输入 名称、调度类型(反复执行)、发生频率的类型(根据实际需求,可以选择周或天)、每周频率执行一次(设置执行时间01:00:00,时间根据实际情况设置),点击“确定”按钮,如下图所示:
再次点击“确定”按钮后,自动定时全库备份的作业就设置成功了;
-
如何修改作业
如果需要修改,可以右键点击 代理作业定时全库备份修改,在弹出的页面中修改; -
如何作业查看执行情况
可以右键点击 代理作业定时全库备份查看作业历史信息,在弹出的页面中查看; -
设置作业-增量备份
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