ITPub博客

首页 > 数据库 > Oracle > Oracle批量修改用户表table的表空间

Oracle批量修改用户表table的表空间

原创 Oracle 作者:zhouxianwang 时间:2015-08-10 10:27:31 0 删除 编辑
由于开发人员把ess 项目下的大部分对象放到user 表空间中,用imp/exp 导入正式库后,ess用户的对象还是在users 表空间中.为了把ESS 的对象放到ess 默认的表空间ess中,我按如下几

步操作:

  1 找出要修改表空间的对象:

 

    select * from dba_tables  where owner='ESS' and tablespace_name = 'USERS';

   

   select * from dba_INDEXES where table_owner='ESS' and tablespace_name = 'USERS';

2 . 生成批量修改的sql 语句

 select 'alter table ess.' || table_name || ' move tablespace ess;'
from dba_tables where wner='ESS' and tablespace_name = 'USERS';

select 'alter index ess.'||index_name||' rebuild online nologging tablespace ess;'
 from DBA_indexes
WHERE table_owner='ESS' and tablespace_name = 'USERS'

把生成sql 语句导到 到ess_table.txt和ess_index.txt 文件中

3.因为我们这里字段有clob类型,clob默认会创建索引,所以移动的时候要先移动clob字段所产生的索引。

   
   SELECT 'alter table ' ||t.table_name ||  
       ' move tablespace ess lob (' || t.column_name ||  
       ') store as(tablespace ess);' v_sql  
  FROM user_lobs t  




4  检查users 表空间,看看ess 用户的对象是不是少了

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

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

注册时间:2012-06-04

  • 博文量
    144
  • 访问量
    493872