楼主: 幻雪青枫

3亿条数据的一个表插入新字段,并赋予默认值,如何做

[复制链接]
论坛徽章:
0
11#
发表于 2012-2-23 22:07 | 只看该作者
数据库设置静默状态
alter system quiesce restricted;

使用道具 举报

回复
论坛徽章:
1
2012新春纪念徽章
日期:2012-01-04 11:58:44
12#
 楼主| 发表于 2012-2-23 23:07 | 只看该作者
maclean 发表于 2012-2-23 15:06
1. 可以停机  =》CTAS rename rebuild index
2. 不能停机 =>  在线重定义

我试了你CTAS方法,索引、约束都没有了...只能重新create?那对其它依赖此表的对象会有影响吗?

使用道具 举报

回复
论坛徽章:
317
季节之章:春
日期:2012-06-20 17:38:14季节之章:夏
日期:2012-06-12 10:49:25季节之章:秋
日期:2012-06-12 10:49:25季节之章:冬
日期:2012-06-12 10:49:25马上有钱
日期:2014-06-16 15:59:19蓝色妖姬
日期:2012-05-19 11:02:10蓝色妖姬
日期:2012-06-12 11:21:48蓝色妖姬
日期:2012-06-12 11:21:48玉兔
日期:2012-07-27 11:00:12玉兔
日期:2012-08-05 10:00:09
13#
发表于 2012-2-23 23:43 | 只看该作者
关注哦,2G内存,P4 CPU,估计怎么弄都要几个小时

使用道具 举报

回复
论坛徽章:
9
ITPUB十周年纪念徽章
日期:2011-11-01 16:26:292012新春纪念徽章
日期:2012-02-07 09:59:35优秀写手
日期:2013-12-18 09:29:10红旗
日期:2014-02-08 11:18:572014年新春福章
日期:2014-02-18 16:44:08马上有对象
日期:2014-02-18 16:44:08马上有钱
日期:2014-04-21 09:43:00处女座
日期:2016-04-07 13:14:2119周年集字徽章-庆
日期:2019-09-06 18:28:56
14#
发表于 2012-2-24 09:24 | 只看该作者
本帖最后由 阿文口 于 2012-2-24 11:16 编辑
幻雪青枫 发表于 2012-2-23 21:50
请问CTAS这部能给个例子吗?


conn / as sysdba
shutdown
startup  restrict
create as select
rename
create index ````
alter system disable restricted session;

使用道具 举报

回复
论坛徽章:
1
2012新春纪念徽章
日期:2012-01-04 11:58:44
15#
 楼主| 发表于 2012-2-26 00:44 | 只看该作者
听海★蓝心梦 发表于 2012-2-23 23:43
关注哦,2G内存,P4 CPU,估计怎么弄都要几个小时

呵呵,无所谓了,反正是历史库,没多少访问量,只要不死,时间长不是问题

使用道具 举报

回复
论坛徽章:
1
2012新春纪念徽章
日期:2012-01-04 11:58:44
16#
 楼主| 发表于 2012-2-26 00:45 | 只看该作者
阿文口 发表于 2012-2-24 09:24
conn / as sysdba
shutdown
startup  restrict

恩,我测试了下,就是索引、约束都需要重建是吧。那想请问依赖此表的其它对象有影响吗?比如存储过程等?

使用道具 举报

回复
论坛徽章:
1
奥运会纪念徽章:举重
日期:2012-06-20 21:55:30
17#
发表于 2012-2-26 10:15 | 只看该作者
这个需求很常见了, 主要是alter table 过程中会有表级别的排他锁。  在这个级别即使select 都不行。
为了缩短整个时间 没有什么办法。 如果为了缩短年 表级别的排他锁,还是比较容易的。
altert table test add a int, b int;   锁表,但很快
update test set a=xx ,b= xxx  where xxx; commit; 分批操作(正果过程中没有dml ,太适合这种做法了)  
alter table test modify a default xx;
alter table test modify b deault xx;  (这2步也很快)

这样整个过程就完成了。

使用道具 举报

回复
论坛徽章:
1
奥运会纪念徽章:举重
日期:2012-06-20 21:55:30
18#
发表于 2012-2-26 10:16 | 只看该作者
上面的做法, 索引和约束都不用重建

使用道具 举报

回复
论坛徽章:
0
19#
发表于 2012-2-26 12:59 | 只看该作者
1.create  table test_bak as select a.*,default_value as col1,default_val as col2 from test a;
2.rename/drop table test;
3.rename test_bak.

create table *** as select ***模式可以使用parallel和nologging选项提高效率;
rename表效率不受数据量限制.

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
46
ITPUB元老
日期:2011-08-06 00:48:09最佳人气徽章
日期:2012-03-13 17:39:18版主1段
日期:2013-03-07 02:21:02ITPUB季度 技术新星
日期:2011-11-18 16:54:31ITPUB伯乐
日期:2012-02-16 14:53:44ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:45会员2007贡献徽章
日期:2007-09-26 18:42:10玉石琵琶
日期:2012-02-21 15:04:38授权会员
日期:2007-01-26 09:19:03数据库板块每日发贴之星
日期:2011-08-04 01:01:01
20#
发表于 2012-2-26 13:48 | 只看该作者
楼上把你的执行过程贴一下,3亿数据更新一个字段,应该很快。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表