把每天当成最后一天来释放自己

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  2 随笔 :: 4 文章 :: 1 评论 :: 0 Trackbacks

1.为什么出现这样的需求?

无论什么情况,现在我们一个用户的数据存在于多个表空间里,现在想把数据统一放在一个表空间里

2.如何统一数据表同一个表空间,并保证以后同一个用户的数据保存在一个表空间?

    2.1索引迁移

        命令:ALTER INDEX BMI_ACCOUNTS REBUILD TABLESPACE DEMO;

        生成用户中对所有索引迁移的命令:

        SELECT 'ALTER INDEX '||INDEX_NAME||' REBUILD TABLESPACE DEMO;' FROM USER_INDEXES WHERE TABLESPACE_NAME='EXAMPLE';

    2.2表迁移

命令:ALTER TABLE ACCOUNTS MOVE TABLESPACE DEMO

生成用户中对所有表迁移的命令:

SELECT 'ALTER TABLE '||TABLE_NAME||' MOVE TABLESPACE DEMO;' FROM USER_TABLES WHERE TABLESPACE_NAME='EXAMPLE';

连同LOB字段一起迁移命令:

ALTER TABLE test MOVE TABLESPACE test LOB (DATAPOLLIOR) STORE AS (TABLESPACE test);

3.索引移动后可能出现索引无效的情况,这时需要重新建立索引

-- 请以 DBA 权限登录,并执行 
-- 将所有 UNUSABLE 状态的 index 修复, rebuild 一下即可 
declare 
  -- 指向所有 UNUSABLE 状态的 index 的游标 
  cursor c is  
    select index_name, owner  
    from dba_indexes  
    where status='UNUSABLE'; 
   
  owner dba_indexes.owner%type; 
  index_name dba_indexes.index_name%type; 
begin 
  open c; 
  loop  
       fetch c into index_name, owner;  
       exit when c%notfound; 
        
       execute immediate 'alter index ' || owner || '.' || index_name || ' rebuild'; 
  end loop; 
  close c; 
end; 

posted on 2012-05-09 23:17 风的方向 阅读(1251) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: