添加列oracle默认值,Oracle 11g增加列,并带默认值的新特性
在Oracle 11g以前,如果要在一个大表中增加一列,并设置默认值,那将是一个非常悲剧的事情.有些时候不得不选择在线重定义功能来实现
Oracle 11g增加列,并带默认值的新特性
[日期:2014-04-05]
来源:Linux社区
作者:Linux
[字体:]
在Oracle 11g以前,如果要在一个大表中增加一列,并设置默认值,那将是一个非常悲剧的事情.有些时候不得不选择在线重定义功能来实现该需求.而在11g中增加新列并设置默认值,只是简单的修改数据字典来实现该功能,大大提供效率
10g加列(默认值)
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
SQL> create table t_xifenfei
2 as select object_id,object_name from dba_objects;
Table created.
SQL> select count(*) from t_xifenfei;
COUNT(*)
----------
49827
SQL> desc t_xifenfei
Name Null? Type
----------------------------------------- -------- ----------------------------
OBJECT_ID NUMBER
OBJECT_NAME VARCHAR2(128)
SQL> set timing on
SQL> alter table t_xifenfei add c_xff varchar2(100) default 'www.xifenfei.com' not null;
Table altered.
Elapsed: 00:00:06.13
--使用了6秒钟
SQL> select rowid,
2 dbms_rowid.rowid_relative_fno(rowid)rel_fno,
3 dbms_rowid.rowid_block_number(rowid)blockno,
4 dbms_rowid.rowid_row_number(rowid) rowno
5 from t_xifenfei where object_name='OBJ$';
ROWID REL_FNO BLOCKNO ROWNO
------------------ ---------- ---------- ----------
AAAMwJAAEAAAAB8AAr 4 124 43
SQL> alter system dump datafile 4 block 124;
System altered.
Elapsed: 00:00:00.08
11g增加列(默认值)
SQL> select * from v$version;
BANNER
-----------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
PL/SQL Release 11.2.0.3.0 - Production
CORE 11.2.0.3.0 Production
TNS for Linux: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production
SQL> create table t_xifenfei
2 as select object_id,object_name from dba_objects;
Table created.
SQL> select count(*) from t_xifenfei;
COUNT(*)
----------
74605
SQL> select rowid,
2 dbms_rowid.rowid_relative_fno(rowid)rel_fno,
3 dbms_rowid.rowid_block_number(rowid)blockno,
4 dbms_rowid.rowid_row_number(rowid) rowno
5 from t_xifenfei where object_name='OBJ$';
ROWID REL_FNO BLOCKNO ROWNO
------------------ ---------- ---------- ----------
AAASpRAAEAAAACrAAu 4 171 46
SQL> alter system dump datafile 4 block 171;
System altered.
SQL> set timing on
SQL> alter table t_xifenfei add c_xff varchar2(100) default 'www.xifenfei.com' not null;
Table altered.
Elapsed: 00:00:00.19
--只是使用了0.19秒
SQL> select rowid,
2 dbms_rowid.rowid_relative_fno(rowid)rel_fno,
3 dbms_rowid.rowid_block_number(rowid)blockno,
4 dbms_rowid.rowid_row_number(rowid) rowno
5 from t_xifenfei where object_name='OBJ$';
ROWID REL_FNO BLOCKNO ROWNO
------------------ ---------- ---------- ----------
AAASpRAAEAAAACrAAu 4 171 46
Elapsed: 00:00:00.04
SQL> alter system dump datafile 4 block 171;
System altered.
通过10g和11g的增加相同列和默认值的对比可以发现,11g的速度要比10g快很多很多,下面我们通过上面dump出来相关的数据块来分析原因
dump分析
11g增加列之前dump
tab 0, row 0, @0x1f74
tl: 12 fb: --H-FL-- lb: 0x0 cc: 2
col 0: [ 2] c1 15
col 1: [ 5] 49 43 4f 4c 24
tab 0, row 1, @0x1f66
tl: 14 fb: --H-FL-- lb: 0x0 cc: 2
col 0: [ 2] c1 2f
col 1: [ 7] 49 5f 55 53 45 52 31
tab 0, row 2, @0x1f5b
tl: 11 fb: --H-FL-- lb: 0x0 cc: 2
col 0: [ 2] c1 1d
col 1: [ 4] 43 4f 4e 24
11g增加列之后dump
tab 0, row 0, @0x1f74
tl: 12 fb: --H-FL-- lb: 0x0 cc: 2
col 0: [ 2] c1 15
col 1: [ 5] 49 43 4f 4c 24
tab 0, row 1, @0x1f66
tl: 14 fb: --H-FL-- lb: 0x0 cc: 2
col 0: [ 2] c1 2f
col 1: [ 7] 49 5f 55 53 45 52 31
tab 0, row 2, @0x1f5b
tl: 11 fb: --H-FL-- lb: 0x0 cc: 2
col 0: [ 2] c1 1d
col 1: [ 4] 43 4f 4e 24
tab 0, row 3, @0x1f4f
tl: 12 fb: --H-FL-- lb: 0x0 cc: 2
col 0: [ 2] c1 10
col 1: [ 5] 55 4e 44 4f 24
10g增加列之后dump
因为10g在没有增加列之前的dump和11g未增加列之前类似,所以未dump出来
tab 0, row 0, @0x1f63
tl: 29 fb: --H-FL-- lb: 0x2 cc: 3
col 0: [ 2] c1 15
col 1: [ 5] 49 43 4f 4c 24
col 2: [16] 77 77 77 2e 78 69 66 65 6e 66 65 69 2e 63 6f 6d
tab 0, row 1, @0x1f44
tl: 31 fb: --H-FL-- lb: 0x2 cc: 3
col 0: [ 2] c1 2d
col 1: [ 7] 49 5f 55 53 45 52 31
col 2: [16] 77 77 77 2e 78 69 66 65 6e 66 65 69 2e 63 6f 6d
tab 0, row 2, @0x1f28
tl: 28 fb: --H-FL-- lb: 0x2 cc: 3
col 0: [ 2] c1 1d
col 1: [ 4] 43 4f 4e 24
col 2: [16] 77 77 77 2e 78 69 66 65 6e 66 65 69 2e 63 6f 6d
tab 0, row 3, @0x1f0b
tl: 29 fb: --H-FL-- lb: 0x2 cc: 3
col 0: [ 2] c1 10
col 1: [ 5] 55 4e 44 4f 24
col 2: [16] 77 77 77 2e 78 69 66 65 6e 66 65 69 2e 63 6f 6d
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
添加列oracle默认值,Oracle 11g增加列,并带默认值的新特性相关推荐
- Oracle中对现有表增加列
altertable Tablename add(column1 varchar2(20),column2 number(7,2)...) --Oracle中修改列名不可以,但是可以删除列,增加列 a ...
- oracle jdk1.7 内存,JDK 16 正式发布,一次性发布 17 个新特性…不服不行!
上一篇:Java 15 正式发布, 14 个新特性 JDK 16 正式发布 牛逼啊,JDK 15 刚发布半年(2020/09/15),JDK 16 又如期而至(2021/03/16),老铁们,跟上. ...
- python pandas 增加一列_pandas删除行删除列增加行增加列的实现
创建df: >>> df = pd.DataFrame(np.arange(16).reshape(4, 4), columns=list('ABCD'), index=list(' ...
- c语言带默认参数吗,嵌入式C语言可以带“默认参数”的函数吗
(文章来源:嵌入式时代) 使用C++开发过程序时,定义函数可以指定默认参数,例如 void fun(int x, int y=3); 在调用 fun() 时第二个参数可以不传递,此时 fun() 函数 ...
- c语言支持默认参数吗,嵌入式C语言可以带“默认参数”的函数吗
描述 (文章来源:嵌入式时代) 使用C++开发过程序时,定义函数可以指定默认参数,例如 void fun(int x, int y=3); 在调用 fun() 时第二个参数可以不传递,此时 fun() ...
- oracle 添加默认值列,Oracle 11g增加列,并带默认值的新特性
永久链接:http://www.ixdba.com/html/y2007/m08/159-oracle11g-add-column.html 老和尚在他的blog中描述了了这个问题,我这里做一个详细的 ...
- c oracle存储过程返回值,C#调用存储过程详解(带返回值、参数输入输出等)
本文实例讲述了C#调用存储过程的方法.分享给大家供大家参考,具体如下: CREATE PROCEDURE [dbo].[GetNameById] @studentid varchar(8), @stu ...
- Oracle 11g新特性之缓存与连接池
Oracle 11g新特性之缓存与连接池 上一篇 /下一篇 2008-03-26 16:03:19 / 个人分类:Oracle 数据库 11g面向 DBA 和开发人员的重要新特性 查看( 414 ) ...
- sql server 数据库表中增加列,增加字段,插入列,插入字段,修改列,修改字段,
格式 --增加列 alter table 表名 add 字段名 类型 null default 默认值--给列增加注释 execute sp_addextendedproperty 'MS_Descr ...
最新文章
- 关于《强化狼群等级制度的灰狼优化算法》的问题邮件回复
- MySQL:讨人喜欢的 MySQL replace into 用法(insert into 的增强版)
- 去除桌面图标蓝底的方法步骤
- java通过ftp上传文件到服务器_java-通过FTP将文件传输到服务器,但结果以零...
- sql 2005 try catch
- 安装配置树莓派的最佳工具——NOOBS
- MFC小笔记:滑动条与编辑框
- 【项目实施随笔】销售和采购信息的打印
- 部分添加epel源失败的可以试试直接把mirror站网址写到baseurl里
- 【职场生活】跳槽离职要注意的那些坑?
- iphone4 通讯录数据库文件!
- java 实现用户登陆代码_Java Web用户登录实例代码
- 基于SSM流浪宠物管理系统
- python进阶到高阶大全(强烈推荐)
- mac下安装win7虚拟机
- 最适合Java程序员的Java学习全套资料分享
- Apache虚拟主机配置详细教程
- 多云时代下数据管理技术_建立一个混合的多云数据湖并使用Apache Spark执行数据处理...
- 【转载】API:简单实现多人聊天室
- 什么是IO流?什么是IO流?
热门文章
- [leetcode] Power of Two 判断一个数是否是2的平方
- 动态代理 and Listener监听器
- ssis合并连接链接键_在SSIS包中使用合并联接转换
- 游标sql server_了解游标并将其替换为SQL Server中的JOIN
- subversion使用_使用Subversion在SQL数据库中对象更改的修订历史记录
- 服务网关Ocelot 入门Demo系列(01-Ocelot极简单Demo及负载均衡的配置)
- python爬虫系列:做一个简单的动态代理池
- BCZM : 1.8
- PHP-CGI进程占用过多CPU
- 362. Design Hit Counter