新增字段的类型、长度(精度)是否合适 解决方法:

跟应用明确加字段和改字段的风险,确认新增字段类型正确、长度(精度)合适。 以及跟应用明确老数据是否要订正?如何订正?新增列是否非空?是否有默认值等等。

l 新增字段的非空属性、默认值以及老数据问题。

新增字段如果是 NOT NULL 的,则一定要有默认值,否则老应用的 insert 代码可能报错。 表如果存在老数据,带上默认值的时候会导致 oracle 去订正老的数据行的新增列。 如果老数据非常多,表的并发访问高,很有可能导致大面积的阻塞等待以及产生大事务,甚至有可能 导致 undo 耗尽。倘若回滚,还会因为回滚产生的并发会话导致 load 飙升。

解决方法:先不带 not null 不带默认值加上列,再更改列默认值,再批量订正老数据,然后 再加上 not null 属性。 如果是大表,并且并发访问很高的表,则新增列不允许为 NOT NULL,以简化后面变更步 骤,降低风险!

l 新增字段导致依赖对象失效、sql 游标失效问题。

表的 DML 并发很高的时候,如果表上面还有依赖对象,新增字段会导致依赖对象失效。默 认其他 DML 会话会尝试去自动编译这个依赖对象, 此时很可能会出现大面积的 library cache pin。应用会话的连接时间会加长,进而导致出现后续应用报不能取得连接池错误。应用服 务器 load 由此飙升。 表新增字段也会导致跟该表有关的 SQL 的游标失效,如果 SQL 的并发很高(查询 SQL 或 者 DML SQL) 失效后 SQL 会重新解析,  此时也可能会出现大量的 library cache pin & library cache lock。

解决方法:选择在业务低峰期发布,同时在数据库级别开启 trigger 禁用客户端程序自动编 译功能,字段加完后再禁用该 trigger。

l 表的依赖对象是否要相应调整。

表上面的依赖对象如果有存储过程或触发器等,逻辑是否需要相应调整。

l 是否涉及到同步。

同步中的表需要两地都要变更。涉及到 erosa 的要更新一下数据字典。Erosa 需要重启一下。

l 是否要通知其他关联的部门。

如 DW, ASC 或 CRM 等等。 有些表很多部门都用,需要沟通约定时间一起变更。如果有同步方案,同步方案的变更也要考虑。

来源:https://wenku.baidu.com/view/df7719f259eef8c75ebfb307.html

最新文章

  1. ASP.NET Core 中文文档 第三章 原理(16).NET开放Web接口(OWIN)
  2. [Docker] docker 基础学习笔记3(共6篇)
  3. C++构造函数、析构函数与抛出异常
  4. python学习之copy模块
  5. cf509C Sums of Digits
  6. sublime3 使用技巧
  7. NFC通信的模式选择
  8. 动态的 css——less
  9. C#下丢掉.asmx文件的WebService的实现
  10. C#小知识点记录(QQ交流群的一个小问题)Linq提取数据
  11. 微信小程序 支付功能(前端)的实现
  12. 移动APP测试方法总结
  13. treesoft,couchDB,
  14. c刷题
  15. javaScript中with函数用法实例分析
  16. P1963 [NOI2009]变换序列
  17. Codeforces 989E A Trance of Nightfall 矩阵快速幂+DP
  18. 27.MySQL备份与恢复
  19. CategoryPanelGroup动态生成节点
  20. iOS:NSBundle的具体介绍

热门文章

  1. Oracle 12c 多租户 手工创建 pdb 与 手工删除 pdb
  2. CF1092 D & E —— 思路+单调栈,树的直径
  3. 找工作-——网络IO
  4. java基础知识(6)---抽象类与接口
  5. Python-IO模式介绍
  6. java不定参数列表---乔老师没讲,但是传智有讲
  7. Java探索之旅(4)——方法和Random&Math类
  8. Linux内核解析
  9. Springboot ResponseEntity IE无法正常下载文件
  10. p1640&bzoj1854 连续攻击游戏(游戏)