oracle 修改用户信息表,Oracle批量修改用户表table的表空间 | 学步园

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

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

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

【脚本】

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

/* Formatted on 2012-10-11 14:17:04 (QP5 v5.115.810.9015) */

DECLARE

i_count INT := 0;

execsql VARCHAR2 (1000);

CURSOR c_mysql

IS

SELECT 'alter table '

|| table_name

|| ' move tablespace EAS_D_HFY120929_STANDARD'

mysql

FROM user_all_tables

WHERE tablespace_name = 'EAS_D_HFY_STANDARD';

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);

EXCEPTION

WHEN OTHERS

THEN

DBMS_OUTPUT.put_line (

'异常:' || 'sqlcode:' || SQLCODE || ' sqlerrm : ' || SQLERRM

);

END;

二、修改索引index的表空间

【问题】

修改表table的表空间后,在操作相关表时,遇到ORA-01502问题:

ORA-01502: index 'HFY120401.PK_MULTIAPPROVE' or partition of such index is in unusable state

【分析】

1、经过系统分析,查询索引状态,可发现索引“PK_MULTIAPPROVE”的状态是“UNUSABLE”;

2、进一步分析,发现系统中的索引index_type有3类:NORMAL、FUNCTION-BASED NORMAL、LOB,除index_type为LOB类型的索引状态为VALID外,NORMAL、FUNCTION-BASED NORMAL类型的索引状态均被设置为不可用状态了UNUSABLE。

3、分析索引的语句如下:

select index_name,index_type,tablespace_name,table_type,status from user_indexes;

【脚本】

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

/* Formatted on 2012-10-11 14:31:42 (QP5 v5.115.810.9015) */

DECLARE

i_count INT := 0;

CURSOR c_mysql

IS

SELECT 'alter index '

|| index_name

|| ' rebuild tablespace EAS_D_HFY120929_STANDARD'

mysql

FROM user_indexes

WHERE tablespace_name = 'EAS_D_HFY_STANDARD' 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;

其实重建普通索引成功后,也试着努力更新LOB索引的,只是在详细阅读《如何重建LOB类型的索引和LOB段》后只好无奈地放弃!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值