Oracle 表空间迁移
发布时间:2020-12-12 14:46:26 所属栏目:百科 来源:网络整理
导读:随着数据库的数据量越来越大,需要把数据量比较大的表单独放在独立的表空间。 1.创建新的临时表空间 create temporary tablespace rdp_temp tempfile '/data/tablespace/rdp_temp.dbf' size 500 m autoextend on next 500 m maxsize unlimited extent manage
随着数据库的数据量越来越大,需要把数据量比较大的表单独放在独立的表空间。 1.创建新的临时表空间 create temporary tablespace rdp_temp tempfile '/data/tablespace/rdp_temp.dbf' size 500m autoextend on next 500m maxsize unlimited extent management local;
2.创建新的表空间 create tablespace rdp_data logging datafile '/data/tablespace/rdp_data.dbf' size 500m autoextend on next 500m maxsize unlimited extent management local SEGMENT SPACE MANAGEMENT AUTO;
3.查询表原来的表空间 select index_name,tablespace_name from user_indexes where table_name='RDP_TB';
alter table RDP_TB move tablespace RDP_DATA;
这样就不需要再导入数据了。 如果是分区表,这样操作就会报错,分区表会对应多个paritions,甚至是子分区,需要把这些分区也迁移过去。 /*修改默认表空间*/
alter table RDP_TB_NEW modify default attributes tablespace RDP_DATA;
自动生成分区导入语句: SELECT 'alter table ' || table_name || ' move PARTITION ' || partition_name || ' tablespace rdp_data;' FROM USER_TAB_PARTITIONS WHERE SUBPARTITION_COUNT = 0 AND table_name='RDP_TB_NEW';
执行生成的sql语句。 5.修改表索引的表空间 生成索引的sql语句 SELECT 'ALTER INDEX ' || INDEX_NAME || ' REBUILD TABLESPACE RDP_DATA;' FROM user_indexes WHERE TABLE_NAME = 'RDP_TB_NEW' AND TABLESPACE_NAME = 'USERS';
http://www.52php.cn/article/p-mcfpfgaw-bey.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |