打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
oracle下批量修改表所在的表空间

特别提醒:所有操作均在system下进行

一、修改索引index的表空间

1、查询当前用户所有LOB索引,并把表空间为“JCMS24”的索引,更新为:JCMS。(手动修改)

ALTER TABLE 表名称 MOVE
TABLESPACE 新表空间
LOB (表中类型为lob的字段名) STORE AS lobsegment
(TABLESPACE 新表空间  );

 

2、查询当前用户所有非LOB索引,并把表空间为“JCMS24”的索引,更新为:JCMS。

DECLARE
  i_count INT := 0;
  CURSOR c_mysql IS
    SELECT'alter index JCMS24.' || index_name ||
          ' rebuild tablespace JCMS' mysql
     FROM dba_INDEXES
    WHERE owner = 'JCMS24'
      and tablespace_name = 'JCMS24'
      and index_type <>'LOB';
BEGIN
  FOR r_mysql IN c_mysql LOOP
   DBMS_OUTPUT.put_line(r_mysql.mysql);
    EXECUTEIMMEDIATE r_mysql.mysql;
    i_count :=i_count + 1;
  END LOOP;
  DBMS_OUTPUT.put_line('i_count: ' ||i_count);
END;

 

二、修改用户表table的表空间

1、修改用户表table的表空间:alter table 表名 move tablespace 新表空间名;

2、查询所有用户表:select * from user_tables;

【脚本】

查询当前用户的所有的数据表,并把表空间为“JCMS24”的用户表,修改为:JCMS。

 

DECLARE
  i_count INT := 0;
  CURSOR c_mysql IS
    SELECT'alter index JCMS24.' || index_name ||
          ' rebuild tablespace JCMS' mysql
     FROM dba_INDEXES
    WHERE owner = 'JCMS24'
      and tablespace_name = 'JCMS24'
      and index_type = 'LOB';
BEGIN
  FOR r_mysql IN c_mysql LOOP
   DBMS_OUTPUT.put_line(r_mysql.mysql);
    EXECUTEIMMEDIATE r_mysql.mysql;
    i_count :=i_count + 1;
  END LOOP;
  DBMS_OUTPUT.put_line('i_count: ' ||i_count);
END;

 

  

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
oracle修改表和索引的表空间
完美解决Oracle改变表空间的问题
临时表空间总结
11g导入大量包含子分区的数据时表空间不足
[精彩] 急,请教oralce 删除记录后空间释放问题
记一次MySQL数据库恢复(附方案)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服