前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >批处理实现最简化数据自动备份

批处理实现最简化数据自动备份

作者头像
企鹅号小编
发布2018-02-05 10:48:58
8510
发布2018-02-05 10:48:58
举报
文章被收录于专栏:大数据大数据

最近一直在考虑oracle数据自动备份到本地的问题,也找机会当面向大牛请教过,得到了一堆关于DG、GG、RAC、DBLINK、ARCHLOG等方面的建议,还有个哥们直接建议我用redis实现。

但因为受服务器配置和网络带宽的限制,以上方法实现起来较繁琐,且有一定的学习成本(毕竟新技术发展太快,早就跟不上潮流了),而且nosql实现起来可能还需要进行二次开发来实现数据库的读写。

磨蹭了大半个月,终于决定还是选择自己最熟悉的批处理来实现异步备份到本地

思路如上图示:

数据库改造,将大表按天建立表分区

服务端定时exp前三天(天数自定)的表分区

将表分区压缩后放到ftp目录下(压缩比10%,相比其他同步方式可以节省90%的网络资源)

本地定时(自测服务端任务延时30分钟即可,需根据实际情况定)通过ftp方式下载指定压缩包到本地,解压后使用imp导入表分区

技术点:

表名及分区名为三天前日期,批处理不直接支持对date进行加减天数的操作,使用sqlplus运行固定脚本spool到文本1,然后typefind 输出唯一行到文本2,利用for/f 读取文本2获取日期参数到变量,exp时文件名直接调用日期变量即可;

批处理中for/f 读取多列文本时,只能定义首列变量名(单字符)如%i,默认第二列赋值到变量%j,依次递增;

exp导出时因为11G的延迟段特性,当同一大表某一表分区中无数据时会出现exp00003错误,无法对分区表直接使用ALTER TABLE XXX ALLOCATE EXTENT和ALTER TABLE XXX PARTITION XX ALLOCATE EXTENT的方式分配段信息,需要直接使用insert into为每个表分区插入一条数据,变相实现分配段的功能。

以上,在测试环境测试通过。

本文来自企鹅号 - 老柴的学习笔记媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文来自企鹅号 - 老柴的学习笔记媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档