sql新增字段注意事项
新增字段的类型、长度(精度)是否合适 解决方法:
跟应用明确加字段和改字段的风险,确认新增字段类型正确、长度(精度)合适。 以及跟应用明确老数据是否要订正?如何订正?新增列是否非空?是否有默认值等等。
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
sql新增字段注意事项的更多相关文章
- SQL SERVER 新增表、新增字段、修改字段 判断表是否存在
		
// 新增之前判断表是否存在 IF NOT EXISTS (SELECT NAME FROM SYSOBJECTS WHERE ID = OBJECT_ID('tb_MessageHistory')) ...
 - Oracle 之 表新增字段后修改字段顺序
		
工作中遇到:在为一个表新增字段后,新增字段在最后,想调整新增字段的位置. 1.原始方法: --新建临时表以存储正确的顺序 create table A_2 as select (column1,col ...
 - 二、sql新增后返回主键|sql 使用 FOR XML PATH实现字符串拼接|sql如果存在就修改不存在就新增
		
一.sql新增后返回主键 1,返回自增的主键: INSERT INTO 表名 (字段名1,字段名2,字段名3,…) VALUES (值1,值2,值3,…) SELECT @@IDENTITY 2,返回 ...
 - dede新增字段调用方法
		
各位在使用{dede:channel }标签的时候,难免会遇到因为现在字段不能满足业务需求,需要新增的情况(具体怎么新增字段自行百度). 但是新增的字段通过DEDE的标签是不能直接使用的,现在博主介绍 ...
 - 【转】SQL修改字段长度
		
语法: alter table <表名> alter column <字段名> 新类型名(长度) 示例:假如有名T1,字段名F1,原来F1为varchar(3),现在要改为va ...
 - Magento 新增字段的值读写丢失原因
		
某实体新增字段handreturn_status,欲操作之: $order_info = Mage::getModel('sales/order')->load($order_id); //se ...
 - Oracle/SQL 修改字段类型和长度
		
标准SQL修改字段类型和长度语句: ALTER TABLE tableName modify column columnName 类型;例如Mysql的修改字段类型语句:alter table tes ...
 - Mybatis按SQL查询字段的顺序返回查询结果
		
在SpringMVC+Mybatis的开发过程中,可以通过指定resultType="hashmap"来获得查询结果,但其输出是没有顺序的.如果要按照SQL查询字段的顺序返回查询结 ...
 - ASP.NET MVC5--为数据库新增字段(涉及数据库迁移技术)
		
Setting up Code First Migrations for Model Changes--为模型更改做数据库迁移. 1.打开资源管理器,在App_Data文件夹下,找到movies.md ...
 
随机推荐
- Oracle 12c 多租户配置和修改 CDB 和 PDB 参数
			
1. 配置CDB 实例参数,影响CDB与所有 PDB为CDB配置例程参数相对于对于非CDB的数据库是变化不太.ALTER SYSTEM命令用于设置初始化参数,与使用ALTER DATABASE命令修改 ...
 - Ajax知识点整理
			
一.javascript原生Ajax 1.简介 Ajax是Asynchronous JavaScript+XML(异步JavaScript和XML)的缩写. 该名称诞生于XML还是数据传输首选格式的时 ...
 - WPF中Xaml编译正常而Designer Time时出错的解决办法
			
开发wpf时我们经常遇到一个xaml文件在设计时显示解析错误(比如在:VS或者Blend)而编译正常运行正常. 原因是:xaml的在Debug版本下必须为anyCPU. 解决办法: 1.打开工程文件x ...
 - Asp.net工作流workflow实战(一)
			
最近开发一个项目用到了工作流引擎,之前研究过微软的workflow所有就用它了,距离上次用有一段时间了,好多东西有点模糊了,就在此处一遍写代码一遍回忆. 首先,在我的项目中新建了.netframwor ...
 - Linux统计文件夹占用空间大小--du命令基本用法
			
命令行环境下要知道linux系统里一个文件夹以及其包含的文件实际所占用的空间大小,linux自带的命令 du可以很好地满足需求. 其他的用法我就不一一写出来了,就列本人觉得会用得最多的,直接上: $ ...
 - 洛谷-机器翻译-NOIP2010提高组复赛
			
题目背景 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章. 题目描述 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换.对于每个英文单词,软件会先 ...
 - OS X 10.9 Mavericks下显示和隐藏文件(区别10.8.*)
			
我们常常在Windows系统下通过界面设置显示和隐藏文件,在Mac OS X通常采用defaults write命令来解决这个问题. 之前的OS X 10.8.*系统可以使用如下两条命令来开始或者关闭 ...
 - 进击的菜鸟问题1(设置checkbox全选)
			
问题:设置页面标签属性时,常常使用jquery.attr("","");在设置checkbox属性时,会出现操作设置checkbox属性后,无法清除,导致第二次 ...
 - sklearn交叉验证法(Cross Validation)
			
import numpy as np from sklearn import datasets from sklearn.cross_validation import train_test_spli ...
 - Spring入门第四课
			
注入参数详解:null值和级联属性 可以使用专用的<null/>元素标签为Bean的字符串或其他对象类型的属性注入null值. 和Struts,Hiberante等框架一样,Spring支 ...