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

这个问题是我一直都在关注的问题。

11G关于这个问题已经有了改善,到了12C更是多了一些新特性

关于11G的新特性讨论,参考我这篇博客http://blog.csdn.net/dbcrocodile/article/details/21170407

12C关于这方面是在11G新特性上进行添加的。

11G中添加一列并设置默认值,不会对表中实际数据做更改,而是通过对数据字典中做标记

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

但是,看如下语句

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

Table altered.  

Elapsed: 00:00:00.34  

在11G中,新加一列必须是NOT NULL属性,否则将无法实现该特性。依然会造成超大DDL事务,hang死关于该表的一切操作(包括select)。

如果不明白该特性,很容易以为有了特性,而贸然添加,造成非常严重的事故。

而12C中,对这一特性再次做出了加强,我们这里可以不用设置not null,极大减少了可能的误操作

看如下实验过程

创建表t,其中100多万行数据。

SQL> select count(*) from t;

  COUNT(*)
----------
   1454256

对表直接增加一列(不设置not null)

SQL> alter table t add MrDai1 number default 10000;

Table altered.

Elapsed: 00:00:00.03

速度飞快。当然,和11G中一样

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

时间: 2024-10-28 08:34:01

Oracle中表添加带有默认值列的讨论(包括12C新特性)的相关文章

修正或添加字段默认值约束的名称

旧项目中的数据库约束名称不规范,写了个脚本重新修改. 1. 名称重新修改为已有的默认值约束的名称为'DF_' + 表名 + 字段名: 2. 没有设置默认值约束的列设置默认值,字符串为空,数值为0: 3. 时间字段除了addtime不加默认值: --修正或添加字段默认值约束的名称为DF_表名_字段 /* SELECT tabName= LOWER(O.name), --表名 colName=LOWER(C.name), --字段名 coltype= LOWER(T.name), --类型 dfVa

Oracle 12C 新特性之扩展数据类型(extended data type)

Oracle 12C 新特性-扩展数据类型,在12c中,与早期版本相比,诸如VARCHAR2, NAVARCHAR2以及 RAW这些数据类型的大小会从4K以及2K字节扩展至32K字节.只要可能,扩展字符的大小会降低对LOB数据类型的使用.为了启用扩展字符大小,你必须将MAX_STRING_SIZE的初始数据库参数设置为EXTENDED. 实验流程:1.查看参数max_string_size默认值SQL> show parameter max_string_sizeNAME     TYPE VA

Oracle DB 12c新特性:raw device 裸设备不再受支持

Oracle DB 12c新特性:raw device 不再受支持. 参考自: Announcement of De-Support of using RAW devices in Oracle Database Version 12.1 (Doc ID 578455.1) 细节: De-Support of Raw 本文的目录是通知在oracle database 12.1版本中对raw device不再支持. 这意味着,若是使用oracle database 12.1版本,将不能把数据文件,

Oracle WebLogic Server 12c 新特性

美国时间2011年 12月9日,Oracle公司正式发布WebLogic 12c版本,c是cloud的缩写.截止当前(2013年8月)最新版本为Oracle WebLogic Server 12c (12.1.2).12c 最大的功能改进是完全支持Java EE 6标准,此版本主要基于 JDK 6,但支持JDK 7.开发人员可以下载163MB的ZIP版本 Oracle WebLogic Server 12c 提供了对客户和合作伙伴的重大增强来降低其总体拥有成本并向现有应用架构提供更多价值,于此同

Oracle 12C 新特性之 db默认字符集AL32UTF8、PDB支持不同字符集

一. db默认字符集AL32UTF8Specify the database character set when you create the database. Starting from Oracle Database 12c Release 2, if you use Oracle Universal Installer (OUI) or Oracle Database Configuration Assistant (DBCA) to create a database, then t

Oracle 12c新特性对于业务上的一些影响总结

1.不可见字段 在Oracle 11g R1中,Oracle以不可见索引和虚拟字段的形式引入了一些不错的增强特性.继承前者并发扬光大,Oracle 12c R1中引入了不可见字段思想.在之前的版本中,为了隐藏重要的数据字段以避免在通用查询中显示,我们往往会创建一个视图来隐藏所需信息或应用某些安全条件. 在12c R1中,你可以在表中创建不可见字段.当一个字段定义为不可见时,这一字段就不会出现在通用查询中,除非在SQL语句或条件中有显式的提及这一字段,或是在表定义中有DESCRIBED.要添加或是

Oracle 12c 新特性之 数据库内归档(In-Database Archiving)

Oracle Database 12c中引入了 In-Database Archiving的新特性, 该特性允许用户通过对表上的数据行标记为inactive不活跃的,以归档数据. 这些inactive的数据行可以通过压缩进一部优化,且对应用来说默认不可见.该特性可以对现有代码做最少改动的情况下,实现了这种"标记删除"的功能和需求. 12c之前:有些应用有"标记删除"的概念,即不是删除数据,而是数据依然保留在表中,只是对应用不可见而已.这种需求通常通过如下方法实现:1

Oracle 12c新特性(For DBA)

一: Multitenant Architecture (12.1.0.1)      多租户架构是Oracle 12c(12.1)的新增重磅特性,内建的多分租(Multi-tenancy),一个容器数据库(container database)中可以存放多个Pluggable Databases,每个Pluggable Database均独立于其他Pluggable Database. 对于外部应用程序和开发者来说,Pluggable Databases看上去就是一个普通的12.1版本之前的单

Oracle Database 12c 新特性总结(一)

本系列文章是Oracle ACE总监Syed Jaffer Hussain对Oracle数据库12c的一些新特性总结,包括数据库管理.RMAN.高可用性以及性能调优等内容. 1. 在线重命名和重新定位活跃数据文件 不同于以往的版本,在Oracle数据库12c R1版本中对数据文件的迁移或重命名不再需要太多繁琐的步骤,即把表空间置为只读模式,接下来是对数据文件进行离线操作.在12c R1中,可以使用ALTER DATABASE MOVE DATAFILE这样的SQL语句对数据文件进行在线重命名和移