小编给大家分享一下数据库中大表删除字段慢的原因有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!由于生产环境,用的是DG架构,因此在数据库同事的协助下,利用DG备库snapshot的功能,在生产环境,真实操作了一次,虽然和主库操作,唯一不同的是,没有请求的压力,相当于停了应用,但还是能说明些问题。
整个删除操作,执行时间,大约是30分钟,通过10046的trace,看见等待事件,主要是下面这种,这篇文章提到了这个错误,https://blog.csdn.net/u011116642/article/details/51540314
有人还做了测试,1. 将列置为unusedALTER TABLE test1 SET UNUSED COLUMN Tablespace_name;2. 删除unused列ALTER TABLE test1 DROP UNUSED COLUMN CHECKPOINT 5;在未执行完毕前,用shutdown abort强制关闭数据库(如果用shutdown immediate就看不到效果,它会等到执行完毕才会关闭数据库)3. 重新启动数据库,查看test1表,报错, 4. 继续删除未删完的列ALTER TABLE test1 DROP COLUMNS continue5. 执行完毕后再次查询test1表,就OK了2.可以尝试逻辑删除,然后再物理删除,即线上置为unused,等维护窗口,再删除这个字段,如下面这篇文章,https://blog.csdn.net/caimaohua/免费主机域名article/details/42640403. 使用在线重定义,删除字段,如下文章所介绍,http://m.blog.itpub.net/17203031/vi免费主机域名ewspace-772500/https://blog.csdn.net/qq_33879355/article/details/785781754. 如果有停机时间,可以采用CTAS重建表,间接删除字段。
针对这个问题,我们采用的,算是第五种方法,即不动这字段,作为备份字段,未来新需求要增加字段,就直接改这字段,当然这是有些前提的,1. 应用中对该字段的引用,需要删除,例如insert操作,需要删除这个字段名称,否则就会出问题。2. 新增字段的类型,要和这个字段类型兼容,比如这字段是VARCHAR2,新增字段需要DATE,自然不能直接改。看完了这篇文章,相信你对“数据库中大表删除字段慢的原因有哪些”有了一定的了解,如果想了解更多相关知识,欢迎关注云技术行业资讯频道,感谢各位的阅读!
相关推荐: Oracle 12c如何查看CDB&PDBs信息
这篇文章给大家分享的是有关Oracle 12c如何查看CDB&PDBs信息的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。V$,GV$,CDB_,CONTAINER_DATA的属性决定了对哪些PDB可见;每个容器数据对象都有C…