您现在的位置是:首页 > 正文

达梦8全量备份和增量备份备份策略

2024-04-01 02:46:32阅读 2

前提

必须开启归档

使用SYSDBA登录数据库manager工具,输入以下SQL语句,并执行

#修改到mount状态(不用像oracle那样shutdown关库)
alter database mount;

#开启归档
alter database archivelog;

#设置归档参数
alter database add archivelog 'type=local,dest=/dm8/arch,file_size=1024,space_limit=4096';

#修改到open状态
alter database open;

#查看归档模式
select name,status$,arch_mode from v$database;

#查看归档文件
select * from sys.v$arch_file;

#查看归档配置
select * from v$dm_arch_ini;

创建作业环境

#作业环境初始化 
SP_INIT_JOB_SYS(1);  #创建 SYSJOB 模式、系统表和系统视图

图形化界面创建定时备份

创建定时备份

1.右击管理工具-[代理]-[作业]-[新建作业]
image.png
2.出现如下图所示界面,在作业名称和作业描述中填写备份名称和描述:
image.png
3.在作业步骤中选择具体的备份方式,如下图所示:
image.png
4.在作业调度中选择备份的时间策略,如下图所示:
image.png
5.在作业步骤中选择具体的备份方式,如下图所示:
image.png
6.在作业调度中选择备份的时间策略,如下图所示:
image.png
7.在作业步骤中选择具体的备份方式,如下图所示:
image.png
8.在作业调度中选择备份的时间策略,如下图所示:
image.png

定时备份日志查看

右击管理工具-[代理]-[作业]-[job名称],点击[查看历史作业信息]
image.png

定时备份脚本

windows 定时备份脚本

1.每周六晚上 23:30 定时全库备份

call SP_CREATE_JOB('back_full',1,0,'',0,0,'',0,'back_full');
call SP_JOB_CONFIG_START('back_full');
call SP_ADD_JOB_STEP('back_full', 'back_full', 6, '01000000D:\dmdbms8\data\DAMENG81\bak\FULL', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('back_full', 'back_full', 1, 2, 1, 64, 0, '23:30:00', NULL, '2020-03-27 16:35:56', NULL, '');
call SP_JOB_CONFIG_COMMIT('back_full');

2.每周一、周二、周三、周四、周五、周日晚上 23:30 定时增量备份

call SP_CREATE_JOB('backup_inc',1,0,'',0,0,'',0,'backup_inc');
call SP_JOB_CONFIG_START('backup_inc');
call SP_ADD_JOB_STEP('backup_inc', 'backup_inc', 6, '11000000D:\dmdbms8\data\DAMENG81\bak\FULL|D:\dmdbms8\data\DAMENG81\bak\FULL', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('backup_inc', 'backup_inc', 1, 2, 1, 63, 0, '23:30:00', NULL, '2020-03-27 22:03:58', NULL, '');
call SP_JOB_CONFIG_COMMIT('backup_inc');

3.每天 00:00 删除 7 天以前的数据

call SP_CREATE_JOB('JOB_DEL_BAK_TIMELY',1,0,'',0,0,'',0,'JOB_DEL_BAK_TIMELY');
call SP_JOB_CONFIG_START('JOB_DEL_BAK_TIMELY');
call SP_ADD_JOB_STEP('JOB_DEL_BAK_TIMELY', 'JOB_DEL_BAK_TIMELY', 0, 'call SF_BAKSET_BACKUP_DIR_ADD(''DISK'', ''D:\dmdbms8\data\DAMENG81\bak\FULL'');
CALL SP_DB_BAKSET_REMOVE_BATCH(''DISK'', NOW()-7);', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('JOB_DEL_BAK_TIMELY', 'JOB_DEL_BAK_TIMELY', 1, 1, 1, 0, 0, '00:00:00', NULL, '2020-03-27 22:06:13', NULL, '');
call SP_JOB_CONFIG_COMMIT('JOB_DEL_BAK_TIMELY');

linux 定时备份脚本

全量备份

1.每周六凌晨1:05 定时全库备份

--创建代理环境
SP_INIT_JOB_SYS(1); 
--创建备份目录
mkdir -p /dmbak/fuwa
--创建全量备份
call SP_CREATE_JOB('bak_full',1,0,'',0,0,'',0,'周六全量备份,并删除30天之前的备份。');
call SP_JOB_CONFIG_START('bak_full');
call SP_JOB_SET_EP_SEQNO('bak_full', 0);
call SP_ADD_JOB_STEP('bak_full', 'bak_full', 6, '01000000/dmbak/DAMENG', 3, 1, 0, 0, NULL, 0);
call SP_ADD_JOB_STEP('bak_full', 'bak_del', 0, 'CALL SF_BAKSET_BACKUP_DIR_ADD(''DISK'',''/dmbak/DAMENG'');
CALL SP_DB_BAKSET_REMOVE_BATCH(''DISK'',NOW()-30);', 1, 1, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('bak_full', 'bak_full', 1, 2, 1, 64, 0, '01:05:00', NULL, '2020-01-01 00:00:00', NULL, '');
call SP_JOB_CONFIG_COMMIT('bak_full');
--查询全量备份作业
SELECT NAME,
       describe
  FROM sysjob.sysjobs;
SELECT top 1 NAME,
       command
  FROM "SYSJOB"."SYSJOBSTEPS";

命令解释

#创建作业,1启用
call SP_CREATE_JOB('bak_full',1,0,'',0,0,'',0,'周六全量备份,并删除30天之前的备份。');
#配置作业启动
call SP_JOB_CONFIG_START('bak_full');
#配置作业执行节点,默认控制节点执行
call SP_JOB_SET_EP_SEQNO('bak_full', 0);
#增加作业步骤 6:表示执行基于 V2.0 版本的备份还原  0:完全备份1:压缩 3:表示报告步骤执行成功,并执行下一步1:表示报告步骤执行失败,并结束作业
call SP_ADD_JOB_STEP('bak_full', 'bak_full', 6, '01000000/dmbak/DAMENG', 3, 1, 0, 0, NULL, 0);
#增加作业步骤0:表示执行一段 SQL 语句或者是语句块
call SP_ADD_JOB_STEP('bak_full', 'bak_del', 0, 'CALL SF_BAKSET_BACKUP_DIR_ADD(''DISK'',''/dmbak/DAMENG'');
#批量删除备份集
CALL SP_DB_BAKSET_REMOVE_BATCH(''DISK'',NOW()-30);', 1, 1, 0, 0, NULL, 0);
#增加作业调度 1:启用;2:按周的频率来执行;当 TYPE=2 时,表示的是每几个星期执行,取值范围没有限制表示不同调度类型下的发生频率;
call SP_ADD_JOB_SCHEDULE('bak_full', 'bak_full', 1, 2, 1, 64, 0, '01:05:00', NULL, '2020-01-01 00:00:00', NULL, '');
例如,选中周六,7 位二进制就是 1000000,转化成十进制就是 63,所以 FREQ_SUB_INTERVAL 就取值 63。
#结束作业配置
call SP_JOB_CONFIG_COMMIT('bak_full');

增量备份

2.每周一、周二、周三、周四、周五、周日晚上1:05定时增量备份

call SP_CREATE_JOB('bak_inc',1,0,'',0,0,'',0,'周日到周五做增量备份,如果失败,清除8天前备份,做全量备份');
call SP_JOB_CONFIG_START('bak_inc');
call SP_JOB_SET_EP_SEQNO('bak_inc', 0);
call SP_ADD_JOB_STEP('bak_inc', 'bak_inc', 6, '11000000/dmbak/DAMENG|/dmbak/DAMENG', 1, 3, 2, 6, NULL, 0);
call SP_ADD_JOB_STEP('bak_inc', 'bak_del', 0, 'SF_BAKSET_BACKUP_DIR_ADD(''DISK'',''/dmbak/DAMENG'');
CALL SP_DB_BAKSET_REMOVE_BATCH(''DISK'',NOW()-8);', 3, 1, 0, 0, NULL, 0);
call SP_ADD_JOB_STEP('bak_inc', 'switch_bak_full', 6, '01000000/dmbak/DAMENG', 1, 1, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('bak_inc', 'bak_inc', 1, 2, 1, 63, 0, '01:05:00', NULL, '2020-01-01 00:00:00', NULL, '');
call SP_JOB_CONFIG_COMMIT('bak_inc');

--查看作业
SELECT NAME,
       describe
  FROM sysjob.sysjobs;
SELECT top 1 NAME,
       command
  FROM "SYSJOB"."SYSJOBSTEPS";

命令解释

--创建增量备份作业
call SP_CREATE_JOB('bak_inc',1,0,'',0,0,'',0,'周日到周五做增量备份,如果失败,清除8天前备份,做全量备份');
--配置作业启动
call SP_JOB_CONFIG_START('bak_inc');
--配置作业执行节点,默认控制节点执行
call SP_JOB_SET_EP_SEQNO('bak_inc', 0);
--增加作业步骤 6:表示执行基于 V2.0 版本的备份还原  1:完全备份1:压缩 基备份路径与备份路径 3:表示报告步骤执行成功,并执行下一步1:表示报告步骤执行失败,并结束作业
call SP_ADD_JOB_STEP('bak_inc', 'bak_inc', 6, '11000000/dmbak/DAMENG|/dmbak/DAMENG', 1, 3, 2, 6, NULL, 0);
call SP_ADD_JOB_STEP('bak_inc', 'bak_del', 0, 'SF_BAKSET_BACKUP_DIR_ADD(''DISK'',''/dmbak/DAMENG'');
--批量删除备份集
CALL SP_DB_BAKSET_REMOVE_BATCH(''DISK'',NOW()-8);', 3, 1, 0, 0, NULL, 0);
--增加作业调度 6:表示执行基于 V2.0 版本的备份还原 
call SP_ADD_JOB_STEP('bak_inc', 'switch_bak_full', 6, '01000000/dmbak/DAMENG', 1, 1, 0, 0, NULL, 0);
-1:按天的频率来执行 当 TYPE=1 时,表示每几天执行,取值范围为 1~100
call SP_ADD_JOB_SCHEDULE('bak_inc', 'bak_inc', 1, 2, 1, 63, 0, '01:05:00', NULL, '2020-01-01 00:00:00', NULL, '');
例如,选中周一至周五和周日,7 位二进制就是 0111111,转化成十进制就是 63,所以 FREQ_SUB_INTERVAL 就取值 63。
--结束作业配置
call SP_JOB_CONFIG_COMMIT('bak_inc');

归档备份

3.每天03:05点整进行

call SP_CREATE_JOB('bak_arch',1,0,'',0,0,'',0,'每天备份归档,删除30天之前的备份');
call SP_JOB_CONFIG_START('bak_arch');
call SP_JOB_SET_EP_SEQNO('bak_arch', 0);
call SP_ADD_JOB_STEP('bak_arch', 'bak_arch', 6, '30000000/dmbak/DAMENG', 3, 0, 0, 0, NULL, 0);
call SP_ADD_JOB_STEP('bak_arch', 'bak_del', 0, 'CALL SF_BAKSET_BACKUP_DIR_ADD(''DISK'',''/dmbak/DAMENG'');
CALL SP_ARCH_BAKSET_REMOVE_BATCH(''DISK'',NOW()-30);', 0, 0, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('bak_arch', 'back_arch', 1, 1, 1, 0, 0, '03:05:00', NULL, '2023-05-24 18:16:05', NULL, '');
call SP_JOB_CONFIG_COMMIT('bak_arch');

创建收集统计信息的作业

周六凌晨2点收集统计信息

call SP_CREATE_JOB('statistics',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('statistics');
call SP_JOB_SET_EP_SEQNO('statistics', 0);
call SP_ADD_JOB_STEP('statistics', 'statistics1', 0, 'begin
    for rs in (select ''sf_set_SESSION_para_value(''''HAGR_HASH_SIZE'''',
                      (select cast( case when max(table_rowcount(owner,table_name))<=(select max_value from v$dm_ini where para_Name=''''HAGR_HASH_SIZE'''') and max(table_rowcount(owner,table_name))>=( select min_value from v$dm_ini where para_Name=''''HAGR_HASH_SIZE'''') then max(table_rowcount(owner,table_name)) 
                                         when max(table_rowcount(owner,table_name))<( select min_value from v$dm_ini where para_Name=''''HAGR_HASH_SIZE'''') then (select min_value from v$dm_ini where para_Name=''''HAGR_HASH_SIZE'''') 
                      			         else (select max_value from v$dm_ini where para_Name=''''HAGR_HASH_SIZE'''') 
                      			    end as bigint)
                      from dba_tables
                      where owner=''''''||NAME||''''''));'' sql1, 
                      ''DBMS_STATS.GATHER_SCHEMA_STATS(''''''||NAME||'''''',100,TRUE,''''FOR ALL COLUMNS SIZE AUTO'''');'' sql2
              from SYS.SYSOBJECTS 
              where TYPE$=''SCH'') 
    loop
        execute immediate rs.sql1;
        execute immediate rs.sql2;
    end loop;
end;', 0, 0, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('statistics', 'statistics1', 1, 2, 1, 64, 0, '02:00:00', NULL, '2021-06-09 22:54:37', NULL, '');
call SP_JOB_CONFIG_COMMIT('statistics');

手动收集统计信息

##方法1:
--查看统计信息
DBMS_STATS.TABLE_STATS_SHOW('SYSDBA','TEST')

--收集指定用户下所有表所有列的统计信息:
SET LINESIZE 999
SELECT 'CALL DBMS_STATS.GATHER_SCHEMA_STATS('''|| USERNAME || ''',100,TRUE,''FOR ALL COLUMNS SIZE AUTO'');' AS "收集表的统计信息"
FROM DBA_USERS
 WHERE USERNAME = 'SYSDBA';

--收集指定用户下所有索引的统计信息:
SET LINESIZE 999
SELECT 'CALL DBMS_STATS.GATHER_SCHEMA_STATS('''|| USERNAME || ''',1.0,TRUE,''FOR ALL INDEXED SIZE AUTO'');' AS "收集表的统计信息"
FROM DBA_USERS
 WHERE USERNAME = 'SYSDBA';

#方法2:
begin
for rs in (select 'sf_set_SESSION_para_value(''HAGR_HASH_SIZE'',
(select cast( case when max(table_rowcount(owner,table_name))<=(select max_value from v$dm_ini where para_Name=''HAGR_HASH_SIZE'') and max(table_rowcount(owner,table_name))>=( select min_value from v$dm_ini where para_Name=''HAGR_HASH_SIZE'') then max(table_rowcount(owner,table_name)) 
when max(table_rowcount(owner,table_name))<( select min_value from v$dm_ini where para_Name=''HAGR_HASH_SIZE'') then (select min_value from v$dm_ini where para_Name=''HAGR_HASH_SIZE'') 
else (select max_value from v$dm_ini where para_Name=''HAGR_HASH_SIZE'') 
end as bigint)
from dba_tables
where owner='''||NAME||'''));' sql1, 
'DBMS_STATS.GATHER_SCHEMA_STATS('''||NAME||''',100,TRUE,''FOR ALL COLUMNS SIZE AUTO'');' sql2
from SYS.SYSOBJECTS 
where TYPE$='SCH') 
loop
execute immediate rs.sql1;
execute immediate rs.sql2;
end loop;
end;

https://blog.csdn.net/zrh19870914/article/details/109744656

网站文章

  • 软件测试员200题(练习)

    所谓的“录制-回放”,就是先使用自动化工具由手工完成一遍需要测试的流程,同时由计算机记录下这个流程期间操作,并形成特定的( )。① 测试用例 ② 测试人员的分配 ③ 测试的度量标准 ④ 测试工具的选用...

    2024-04-01 02:46:24
  • 项目启动报java.lang.IllegalAccessError: tried to access method 热门推荐

    项目启动报java.lang.IllegalAccessError: tried to access method 热门推荐

    最近在对接京东代扣相关的业务,拿到京东的Demo,可以很快地把整套的流程跑下来,但当把Demo集成到项目中时,只要启动项目就不停地报错,错误信息如下:2017-10-13 19:34:18 ERROR _500_jsp _jspService - Handler processing failed; nested exception is java.lang.IllegalAccessError:

    2024-04-01 02:46:16
  • Tor

    Tor

    先打开这个网站 https://bridges.torproject.org/ Step #1:下载Tor浏览器 Step #2:获取bridges Step #3:在Tor浏览器上添加网桥 Step #4:调出项目结构管理区域 把网桥全部复制进去 在点击连接 注:连接第一次的时候比较慢 -End- 暗网搜索引擎 http://www.onion.l

    2024-04-01 02:45:37
  • CPU缓存那些事儿

    CPU缓存那些事儿

    CPU高速缓存集成于CPU的内部,其是CPU可以高效运行的成分之一,本文围绕下面三个话题来讲解CPU缓存的作用:为什么需要高速缓存?高速缓存的内部结构是怎样的?如何利用好cache,优化代码执行效率?...

    2024-04-01 02:45:29
  • IDEA-推荐几款好用的插件

    IDEA-推荐几款好用的插件

    .ignore git提交时过滤掉不需要提交的文件,很方便,有些本地文件是不需要提交到Git上的。 TranslationPlugin 对于不经常使用英语的同学来说,对类,变量,方法想取一个合适的名字...

    2024-04-01 02:45:22
  • 防病毒服务器部署位置,SymantecAntiVirus防病毒服务器安装配置使用指南.pdf

    Symantec AntiVirus 病毒服务器安装配置使用指南放入Symantec AntiVirus 安装光盘自启动 (或点击应用程序setup )后,选择 “安装管理员工具”。如...

    2024-04-01 02:44:39
  • javascript数组常用api 方法

    本文总结了javascript常用的数组的方法包括 forEach filter map join concat sort splice indexOf reverse find every push unshift pop shift等

    2024-04-01 02:44:31
  • IDEA 设置类注释,方法注释 /**

    IDEA 设置类注释,方法注释 /**

    一、类注释 打开: File → Settings → Editor → File and Code Templates 在class上方设置下放格式: /** * @Description: * @...

    2024-04-01 02:44:24
  • Markdown学习(七)

    Markdown学习(七)

    强调Markdown 使用星号()和底线(_)作为标记强调字词的符号,被 或 _ 包围的字词会被转成用 <em> 标签包围,用两个 * 或 _ 包起来的话,则会被转成 <strong>,例如:Source:*single asterisks*_single underscores_**double asterisks**__double underscores__Result:single as

    2024-04-01 02:43:44
  • 红黑树详解(上)(红黑树的基本概念、查找操作、插入操作)

    红黑树详解(上)(红黑树的基本概念、查找操作、插入操作)

    红黑树详解 前言 师傅渣哥在最后一节课上提到,如果能在简历上写“手写过红黑树”,给对方的感觉一定是不一样的。 正值寒假,笔者学习大量前人文章,又投入数个夜晚思考,逐个情况推导方案,编写代码,调试分析,...

    2024-04-01 02:43:37