暂无图片
救命!!!4TB的大表新增字段加了一晚上没完成
我来答
分享
刘广
2021-11-12
救命!!!4TB的大表新增字段加了一晚上没完成
暂无图片 25M

表数据量有2亿,表大小加上BLOB的大字段大小加起来有近4TB。

Oracle 11.2.0.1单机

Windows Server 2008 R2

截止现在,已经8个小时了还没完成。

SQL如下:

alter table t_photo add zpsj date default  sysdate not null;

执行期间,整个表都锁了,查都查不了,11g新特性不是可以不影响吗?


哪位专家知道有没有优化的办法呢,由于业务要恢复,已经终止了。

我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
你好我是李白

根据Oracle官方文档,直到Oracle 12.1.0.1的New Feature Guide才有下面描述:

The default values of columns are maintained in the data dictionary for columns
specified as NULL.
Adding new columns with DEFAULT values no longer requires the default value to be
stored in all existing records. This not only enables a schema modification in
sub-seconds and independent of the existing data volume, it also does not consume
any space.

详细参考下面链接2.5.5.5小节

https://docs.oracle.com/database/121/NEWFT/chapter12101.htm#FEATURENO09742

而11.2的Administrator Guide描述如下:

If a new column is added to a table, the column is initially NULL unless you specify the
DEFAULT clause. When you specify a default value, the database immediately updates
each row with the default value. Note that this can take some time, and that during the
update, there is an exclusive DML lock on the table. For some types of tables (for
example, tables without LOB columns), if you specify both a NOT NULL constraint and
a default value, the database can optimize the column add operation and greatly
reduce the amount of time that the table is locked for DML.  


所以,这个新特性在11g中其实并不存在,根据11.2的Administrator Guide描述,只有某些表(不包含LOB列),如果你同时指定新增列有NOT NULL约束与DEFAULT VALUE,会大大减少表锁定DML时间。


所以,还是要参考官方文档,以及在做之前进行测试环境1:1测试为上策啊。

暂无图片 评论
暂无图片 有用 2
打赏 0
暂无图片
Uncopyrightable

show code?

暂无图片 评论
暂无图片 有用 0
打赏 0
不太冷

一般可以新建表,数据存过去再重命名回来,比较稳妥

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
oracle数据库压缩表空间
回答 1
几个方向供你参考:1、可以检查表和索引的碎片,通过收缩来降低表空间使用率。2、可以对历史数据(按时间分区),查询远远多过修改的那种,进行历史分区的压缩,可以降低表空间使用率。3、通过数据归档,将不需要
oracle12c与11.2.0.4通过数据链路访问触发bug 27331476
回答 2
升级了,而且打了四月份的补丁。是不是得从头开始打补丁。
什么是Oracle的复合类型的变量?
回答 2
已采纳
既然谈到变量,那我们限定场景是PLSQL吧。应该是associativearray,nestedtable和varray三种类型吧,这三种也叫collectiontype,Oracle专家eSteve
同一个服务器上oracle 11g整库还原用impdp快还是rman快?
回答 5
已采纳
不清楚数据库里都有什么对象时,使用rman一股脑全部还原回去就很好,也很快。数据泵的话还需要看看数据库都有什么对象,有没有BLOB、CLOB等大对象,表空间有哪些,用户有哪些,虽然说简单,但问题不少,
expdp导出全库才600多M,导入连30G都放不下?
回答 2
我不确定你说的30GB是磁盘空间,还是给的数据库表空间的大小导出的时候是否指定了可以使用数据压缩和指定编码方式,如果这样的话导出的话数据是会比导出的大了;另外你看看对应的用户表所在的表空间是否给够了导
oracle数据库整库迁移到另外一台linux上面,一般用什么工具?
回答 5
已采纳
OGG可以不停机迁移,先用RMAN或者数据泵导一下数据,然后OGG再追后面的数据
Oracle update表的某个参数,为什么有时几分钟就好。有时候直接卡死,几小时都不结束,从哪里入手分析?
回答 2
卡死的时候看看有没有被阻塞,等待事件是什么。
Oracle库访问很慢,是什么原因?
回答 6
已采纳
提供个简单的思路吧:1、全库慢还是部分应用慢?2、数据库层面慢还是系统层面慢?若是全库慢,可通过分析服务器资源使用情况和数据库层面有无锁、堵塞、异常等待事件等来分析。若是部分应用慢,其他应用正常,可通
请问下这个错误是不是oracle 需要给驱动包授权网络连接权限呢?
回答 2
根据你截图中的报错判断应该是权限问题:应该是在截图中server没有赋予那个jar包connect和resolve权限。
Oracle dblink导入数据快吗?
回答 5
两点之间,直线最快,如果两台服务器的网络带宽好的话,比如同一个交换机下,万兆以上带宽,dblink用ctas导一个表那是杠杠的快。但如果距离比较远,网速也不快,还时不时的掉包,以稳定起见,这种情况还是