ORACLE表批量迁移表空间

Oracle表与索引迁移
本文详细介绍了一种在Oracle数据库中将表从一个表空间迁移到另一个表空间的方法,并提供了如何重新生成索引的步骤。首先,通过PL/SQL语句列出所有需要迁移的表,然后执行这些语句完成表的迁移。接着,生成并执行重新编译索引的语句,以确保索引的完整性和性能。

第一步:将表迁移到目标表空间
 1)使用如下语句,可以将需要移动的表空间语句在pl/sql中列出来,
select 'alter table ' ||table_name || ' move tablespace 目标表空间名称;' from user_all_tables where tablespace_name='源表空间名称'
例如:
登录数据库用户TEST。将TEST所有表从SYSTEM表空间迁移到USERS表空间。
select 'alter table ' ||table_name || ' move tablespace users;' from user_all_tables where tablespace_name='SYSTEM';
将PL/SQL中列出来的语句执行一次,就完成表的迁移。

2)将上面语句的结果拷贝到sql文件1.sql中
第二步:重新生成索引:
1)使用如下语句,生成重新编译索引语句:
SELECT 'alter index ' || index_name || ' rebuild tablespace users;'
  FROM user_indexes
 WHERE index_type = 'NORMAL'
   AND table_owner = 'SDHY_DEV'
   AND dropped = 'NO';
注意:
index_type包括两种类型'NORMAL'为普通表,'LOB'为blob或者clob字段生成的索引,在这里要排除掉
 DROPPED包括YES和NO两种类型,为YES时是废弃的索引
2)将上面语句的结果拷贝到sql文件2.sql中
第三步:批量执行操作:
将第一步与第二步列出的语句放在SQL执行窗口中执行,就可以实现表数据及索引迁移。

转载于:https://www.cnblogs.com/Memories-off/p/10435249.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值