一次数据变更的审核过程(r8笔记第95天)

今天正在做一个数据变更操作,突然一个开发的同学找到我,看起来比较着急的样子,说想让我做一个数据变更。 当然在这种时候,我正在做的数据变更操作已经被打断了,已经有一些不愿意了,而且还要紧急变更,在没有得到脚本,没有环境,没有脚本说明,对于这种三无要 求我一向都是比较排斥的。所以我静下来,让他提供这些信息,这些是数据变更的必备条件,哪怕再紧急,这些信息也需要有基本的流程规范。 所以这位同学就这样无功而返,当然换谁都一样。很快他就确认了环境,是一个使用率不高的在线业务库,当我得到他提供的语句的时候,我已经有些崩溃了,因为 打开文件的时候,发现脚本注释都是乱码,所以我还是选择打回。然后等开发的这位同学再次发过来文件的时候,我终于耐着性子开始审核脚本。 可以从脚本的内容和注释看出,这是通过一个工具导出的脚本,当然了这种脚本还是有很多的问题。 首先就是导出的脚本中的用户是TEST 脚本中是类似"TEST"."TABLE1"的形式,而我要导入的环境的用户为TEST_OPER,这就给我带来了一些困扰。 其次是导出的脚本中的表空间在目标库中不存在,如果开发的同学不确定,其实这个地方就可以直接省略,而作为DBA会做权衡,当然用户的默认表空间就是相关的表空间。 再次就是导出的环境中的段属性,索引段属性等,其实在目标环境中大部分都不需要。 比如下面的段存储属性: SEGMENT CREATION IMMEDIATE PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) 其实这些信息都是实际的应用来说没有特别的用户,从上面的内容可以里面有11g的特性segment creation的设置,如果是在10g肯定会报错。而且后面的属性信息也都不需要,完全可以根据当前的数据设置来取得默认值。 然后看着后面的几行语句,我不禁皱起了眉头,因为这位同学自己添加了几行脚本,DML末尾没有commit。 当然这个时候我也不能怪这位开发同学的不专业,我需要告诉他的我的建议,于是我从头按照我的建议改了一遍文件,告诉他哪些是要注意的,而不是简单的拿到文件就交给DBA执行。 问题解决了之后,大家都相安无事,他也从中学到了东西。但是下午的时候,他又找到我说,他们访问的时候有个报错是table or view does not exist,然后想问问我早上的变更是否成功,为了尽快平息这种疑问,我就直接登录系统给他看了一下,所以这位同学带着结果又回去了。但是让我快爆发的 是,他过了会又找到我说,这个表的变更应该是在另外一个线上库中,这个时候我还是希望得到一个肯定的答复,当初为什么确认是之前的数据库地址?看着这位同 学也是模棱两可,我觉得还是需要尽快把这件事情弄清楚,因为尽管确定是这个库,我需要一个清楚的解释,这次他提供的环境是一个非常重要的核心库,一旦出现 问题,那就是牵一发而动全身。显然这位同学不知道这个风险。于是我就找到了这个开发的负责同学,向他确认这个需求,业务上大体是什么样的情况,大体了解了 下,原来他们有一个业务会涉及两个库,这个业务有一些功能点,有些需要连接数据库1,有些需要连接数据库2,而经过他们的确认,这个功能点是只在数据库2 中会被应用调用,所以数据库1的变更是不需要的了。反复确认,开发的同学重新走流程,终于这个问题才算完整解决。 看起来确实是一个挺让人纠结的问题处理过程,当然我也理解那位开发同学的苦衷,但是不知者无畏,在不了解整个环境的前提下,贸然改动,留给系统的是数不尽 的后患,作为DBA是需要严格审核数据的变更和诉求,对于数据变化敏感的操作,需要保留备份,保留操作日志,考虑影响范围等等,也希望在工作中大家都更加 专业,尽可能减少一些返工,过度交流的情况。

本文分享自微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-05-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏PHP在线

Mysql存储引擎中InnoDB与Myisam的区别

1. 事务处理innodb 支持事务功能,myisam 不支持。 Myisam 的执行速度更快,性能更好。 2. select ,update ,insert...

33450
来自专栏PHP在线

php实现SESSION跨域

稍微大一点的网站,通常都会有不只一个服务器,每个服务器运行着不同的功能模块或者不同的子系统,他们使用不同的二级域名,比如www.a.com、 i.a.com、b...

64540
来自专栏数据和云

数据恢复-SQL被注入攻击程序的应对策略(ORA-16703)

前几天某客户紧急求助我们,其Oracle数据库由于重启之后无法正常启动。最后通过数据库全备进行了一天一夜的恢复,最后仍然无法正常打开数据库。 alter dat...

39560
来自专栏大数据和云计算技术

Cosmos DB的5种事物一致性

TP和AP最重要的区别就是事物。事务是指对系统进行的一组操作,为了保证系统的完整性,事务需要具有ACID特性,具体指原子性(Atomic)一致性(Consist...

50250
来自专栏数据和云

新年寄语 | 2018 以及 Oracle 18c 一个时代的开启

2018 年,对于数据库领域也将是重要的一年,Oracle 全新的 18c 版本将很快发布,而我认为,这将标志着一个时代的终结,同样是一个新时代的开启。 20...

545100
来自专栏数据和云

Oracle Data Redaction数据加密

Oracle Database 12c中加入了Data Redaction作为一个新的安全特性。(实际在11g的官方Database Advanced Secu...

43350
来自专栏PHP在线

如何安全存储秘密?

一、我是新手我怕谁 新手程序猿通常会直接存储明文密码在数据库中,好一点的会使用MD5来加密密码后存储md5(password),再好一点的会sh...

34370
来自专栏数据和云

遇见未来 | PostgreSQL:一匹即将发力的黑马

在2017年的DB-Engine的年度数据库榜单上,PostgreSQL以其超过其他341个受监控数据库管理系统的受欢迎程度居于榜首,被评为年度DBMS。其总体...

79870
来自专栏数据和云

innodb实例损坏情况下恢复数据及相关工具的开发

作者介绍:谢浩,现任职于云和恩墨(北京)信息技术有限公司,具有多年oracle数据库企业级运维经验,擅长结合业务、硬件系统制定各种项目方案,具有丰富mysql相...

38080
来自专栏PHP在线

mongodb与mysql相比的优缺点

与关系型数据库相比,MongoDB的优点: ①弱一致性(最终一致),更能保证用户的访问速度: 举例来说,在 传统的关系型数据库中,一个COUNT类型的操作会锁...

1.1K50

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励