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);
    EXECUTE IMMEDIATE 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);
    EXECUTE IMMEDIATE r_mysql.mysql;
    i_count := i_count + 1;
  END LOOP;
  DBMS_OUTPUT.put_line('i_count: ' || i_count);
END;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值