在某些情况下业务建的表某些列没有用到,需要进行删除,但是如果是数据量很大的大表,直接 alter table table_name drop column column_name;这种方法删除,那么将出现TM表锁,业务有可能hang住,所以不能这样子操作:Oracle 8i 引入了从表中删除列的能力.在此之前,有必要删除整个表并重建它.可以将列标记为未使用(逻辑删除)或完全删除(物理删除),下面介绍逻辑删除和物理删除. 一.逻辑删除 在大表上,物理删除列的过程非常耗时且耗费资源.决定从逻辑上删除…
Oracle大表改为分区表及表空间切换方案 一.            背景 由于之前数据库表和索引放在一个表空间导致表空间数据文件增长太快,文件数量即将达到Oracle表空间的限制,需要对表(没有分区,有些表数据量多达几十亿,文件大小TB级)进行表空间迁移,并对某些表改造为分区表. 二.            可选方案分析 1.    使用IMP/EXP 导入(import)导出(export)工具年头已久,将数据导出为二进制文件,将会在11g r2之后废弃,只用于遗留数据的导入导出 此工具可…
当oracle单表数据量上亿时,对表进行alter table aa add column_1 varchar2(2) defalut 'Y';时,效率及安全性是必须考虑的因素. 本帖以2亿的数据表aa举例: alter table aa add column_1 varchar2(2) defalut 'Y'; Table altered Executed in 3600 seconds 直接用了一个小时,而且在这过程中是加上了表级锁,也就是连查询都是会被等待的,这是相当危险的操作. 为什么会…
一个朋友问我在线对大表进行ddl操作,如何做能尽量避免主从延迟以及不影响在线dml操作呢?我想到一个开源的pt-online-schema-change工具,测试了吧,效果还可以. pt-online-schema-change原理 1.如果存在外键,根据alter-foreign-keys-method参数的值,检测外键相关的表,做相应设置的处理. 2.创建一个新的表,表结构为修改后的数据表,用于从源数据表向新表中导入数据. 3.创建触发器,用于记录从拷贝数据开始之后,对源数据表继续进行数据修…
drop表 执行drop table xx 语句     drop后的表被放在回收站(user_recyclebin)里,而不是直接删除掉.这样,回收站里的表信息就可以被恢复,或彻底清除.     通过查询回收站user_recyclebin获取被删除的表信息,然后使用语句                    flashback table <user_recyclebin.object_name or user_recyclebin.original_name> to before dro…
#添加字段 格式: alter table table_name add column_name datatype; 例子: alter table userinfo ); desc userinfo #更改字段数据类型 格式: alter table table_name modify colum_name datatype; 例子: ); 说明:修改remarks字段的默认长度. 例子: ,); #删除字段 格式: alter table userinfo drop column colum…
mysql删除大表更快的drop table办法 参考资料:https://blog.csdn.net/anzhen0429/article/details/76284320 利用硬链接和truncate降低drop table对线上环境的影响 在DROP TABLE的时候,所有进程不管是DDL还是DML都被HANG起:直到DROP结束才继续执行:这是因为INNODB会维护一个全局独占锁(在table cache上面), 直到DROP TABLE完成才释放.在我们常用的ext3,ext4,ntf…
在oracle中由于表结构设计不合理或者需要清楚老数据的时候,经常需要对大表数据进行清理. 一般有一下几种方法: 1. 删除大部分数据,留下小部分数据.我们可以把需要保留的数据转移到别的表,然后再把大表drop掉,然后改名就行了: a) create table tablename_min as select * from tablename_max a where 需要保留的数据. b) drop table tablename_max ; c) rename tablename_min as…
1. 查看所有表空间大小 SQL> select tablespace_name,sum(bytes)/1024/1024 from dba_data_files group by tablespace_name; 2. 已经使用的表空间大小 SQL> select tablespace_name,sum(bytes)/1024/1024 from dba_free_space group by tablespace_name; 3. 所以使用空间可以这样计算 select a.tablesp…
导出: exp dbname/dbpwd@orclname file=c:\xxx.dmp tables=(tablename) 导入:imp ross_delivery/123456@orcl file=d:\section.dmp full=y;…