ITPub博客

首页 > 数据库 > Oracle > ORACLE表批量迁移表空间

ORACLE表批量迁移表空间

原创 Oracle 作者:abraham_dba_2013 时间:2014-12-04 16:44:38 2 删除 编辑

第一步:将表迁移到目标表空间

 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执行窗口中执行,就可以实现表数据及索引迁移。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29439655/viewspace-1356643/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-01-13

  • 博文量
    90
  • 访问量
    429566