zoukankan      html  css  js  c++  java
  • ORACLE表批量迁移表空间

    第一步:将表迁移到目标表空间
     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执行窗口中执行,就可以实现表数据及索引迁移。

  • 相关阅读:
    cookie和session学习笔记
    Listener和Filter学习笔记
    [转载]mysql root密码忘了怎么办
    [转载]oracle连不上的各种现象
    Oauth入门学习
    XML学习笔录
    共享内存
    守护进程
    Linux系统调用与文件I/O(一)
    我的第一篇博客
  • 原文地址:https://www.cnblogs.com/Memories-off/p/10435249.html
Copyright © 2011-2022 走看看