`

Oracle中表添加带有默认值列的讨论(包括11G新特性)

阅读更多
这个问题为什么要讨论呢,是有历史根源的,我们从Oracle 10G开始说起。在11G以前,一个大表,如果要添加一个新列,且新列有默认值,如果使用alter table xx add xx_1 number default 1000; 这类语句设置,那将非常杯具!
cuug每周五晚8点都有免费网络课程,希望大家赶紧报名参加吧!
它的动作其实就是,添加一个列,然后对这一列进行更新,如果这个表非常大,那么将会产生一个非常大的事务。

而且因为它是ddl操作,它甚至会导致关于该表的select语句都被堵塞!后果非常可怕。

我们在10G中,遇到这种需求怎么办呢?

简单来说,就是先添加一列(不设置默认值)

之后通过使用PL/SQL 对这一列进行批量提交更新(比如1000行 一提交)

好处是,不会锁太多的行,而且每个事务都不大,出现故障之类的,不会产生死事务

或者可以使用在线重定义的方式。

到了11G中,我们对于表添加一列 带有默认值,有了新特性

我们来测试一下,创建表t,100多万数据。

SQL> select count(*) from t;

  COUNT(*)
----------
  1207317

对表加了一列,并设置not null 加默认值

SQL> alter table t add MrDai number default 10000 not null;

Table altered.

Elapsed: 00:00:00.34

速度飞快

这里其实只是在数据字典中做了一个标记,并不会对块中行的实际数据进行修改,所以速度飞快

我们查询的时候,会对新列做一个类似nvl()之类的操作,如果是null,则返回默认的数值。

在设置完成以后,如果是新插入的行,在默认值列,会将数据真正的插入到行

总结一下,这个特性类似于 给表设了一个断点, 断点之前的,如果该列是null,则对其转换为 默认值,而断点之后的,该列会插入真正的值

对该特性有dump过程,可以参考阅读。

如果想让新列,之前的都为null,而之后的数据则有默认值,也可以,分两步

alter table t add MrDai number ;

alter table t modify MrDai number default 10000;
分享到:
评论

相关推荐

    Oracle11g新特性

    Oracle11g新特性 描述Oracle11g对于Oracle10g所有的增强特性,让DBA能够更好的学习Oracle11g。

    Oracle 11g新特性索引不可见

    oracle11g 索引新特性 索引不可见

    oracle11g官方中文文档完整版

    11g:新特性概述.pdf Oracle 真正应用集群 11g .pdf Oracle高级压缩.pdf Oracle性能优化包 11g .pdf Oracle真正应用测试.pdf Oracle诊断包 11g.pdf Tips to write good SQL.pdf TOTAL RECALL.pdf Windows ...

    Oracle 11g全新特性完全解析XML成为热点

    Oracle移动数据的速度已经超过了专门的文件系统,这一方面得益于Oracle对数据库引擎的优化,同时也与Oracle 11g中应用的大量压缩技术有关。另外,在触发器等方面,Oracle 11g的运行速度也将更快,特别是针对DML的...

    Oracle11g五大新特性

    Auto Memory Management是Oracle10g提出来的一个新特性,在最新的Oracle11g数据库中又得到了进一步的发展;有关收集统计信息方面功能也得到了增强。当然Oracle11g的新特性不止这些,不完整之处希望大家积极发言或...

    ORACLE11G新特性

    数据库应用优化,帮助大家了解ORACLE 11G

    Oracle11g中文文档.zip

    Oracle 数据库 11g:新特性概述.pdf Oracle 真正应用集群 11g .pdf Oracle性能优化包 11g .pdf Oracle真正应用测试.pdf Oracle诊断包 11g.pdf Oracle高级压缩.pdf Tips to write good SQL.pdf TOTAL RECALL....

    Oracle数据库管理艺术:11g新特性

    资源名称:Oracle数据库管理艺术:11g新特性资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    ORACLE11g新特性及实施

    ORACLE11g新特性及实施

    oracle 11g 新特性

    oracle 11g 新特性

    Oracle10g-11g新特性

    Oracle 数据库 10g-11g: 面向 DBA 和开发人员的重要新特性

    Oracle 数据库管理艺术:11g新特性 世界级Oracle专家权威力作

    本书是经典名著《Oracle 10g数据库管理艺术》一书的姊妹篇,通过示例全面而又详细地讲述了Oracle 11g的新特性,讲述了更改管理、数据库自动化、性能管理、故障诊断、存储管理、安全管理、性能管理、应用开发、数据...

    oracle11g新特性--通过分区进行优化

    oracle11g新特性--通过分区进行优化

    ORACLE11g研究新特性

    该资源讲述了Oracle 11g的新特性,是我参加硅谷明天的培训讲座时候拷贝的,非常内部也非常可贵的资料!!!

    oracle 11g新特性

    oracle 11g新特性。

    oracle11g官方文档中文版

    Oracle 11g 官方中文文档 包括: Oracle 11g:ORACLE ACTIVE DATA GUARD.pdf Oracle Database 11g 高可用性.pdf Oracle 数据库 11g :真正应用测试与可管理性概述.pdf Oracle 数据库 11g 中的分区.pdf Oracle 数据库...

    Oracle 11g 官方中文文档集萃5

    Oracle 数据库 11g:新特性概述.pdf Oracle 真正应用集群 11g .pdf Oracle高级压缩.pdf Oracle性能优化包 11g .pdf Oracle真正应用测试.pdf Oracle诊断包 11g.pdf Tips to write good SQL.pdf TOTAL RECALL.pdf ...

    Oracle 11g 官方中文文档集萃【完整版】

    Oracle 数据库 11g:新特性概述.pdf Oracle 真正应用集群 11g .pdf Oracle高级压缩.pdf Oracle性能优化包 11g .pdf Oracle真正应用测试.pdf Oracle诊断包 11g.pdf Tips to write good SQL.pdf TOTAL RECALL....

Global site tag (gtag.js) - Google Analytics