当前位置: 代码迷 >> SQL >> 关于oracle clob 门类字段重建索引SQL及修复用户表空间索引空间的存储过程
  详细解决方案

关于oracle clob 门类字段重建索引SQL及修复用户表空间索引空间的存储过程

热度:215   发布时间:2016-05-05 12:15:19.0
关于oracle clob 类型字段重建索引SQL及修复用户表空间索引空间的存储过程
clob SQL:

ALTER TABLE SYSREPORT MOVE  TABLESPACE jft_index
LOB (CONTENT) STORE AS
(TABLESPACE jft_index);

CONTENT是clob字段
存储过程
  /*******************************  *  *修改集付通数据库默认表空间,临时表空间,索引表空间存储过程  *  *调用 : change_jft_tablespace(数据表空间名称,索引表空间名称) examp:exec change_jft_tablespace ('jft_data','jft_index');  *auther:[email protected]  *date : 2013-04-10 17:29:12  *******************************/  create or replace procedure change_jft_tablespace(data_table_space_name  in varchar,                                                    index_table_space_name in varchar) is  i_count INT := 0;  --data_table_space_name varchar2(20):='';  --index_table_space_name varchar2(20):='';  --temp_table_space_name varchar2(20):='';  --修改表的数据表空间 记录集放到游标中    CURSOR c_data_sql IS    SELECT 'alter table  ' || table_name || ' move tablespace ' ||           data_table_space_name as ddl,           table_name as tbname      FROM user_tables     where TABLESPACE_NAME <> upper(data_table_space_name);  --修改表的索引表空间 记录集放到游标中    CURSOR c_index_sql IS    SELECT 'alter index ' || index_name || ' rebuild tablespace ' ||           index_table_space_name as ddl,           table_name as tbname      FROM user_indexes     where TABLESPACE_NAME <> upper(index_table_space_name)       and index_type <> 'LOB';begin  --create temporary tablespace jft_temp tempfile 'F:\orac11g\demo\temp\jft_temp01.dbf' size 32m autoextend on next 32m maxsize 2048m extent management local;  --create tablespace jft_data logging datafile 'F:\orac11g\demo\data\jft_data01.dbf' size 32m autoextend on next 32m maxsize 2048m extent management local;  --create tablespace jft_index logging datafile 'F:\orac11g\demo\index\jft_index01.dbf' size 32m autoextend on next 32m maxsize 2048m extent management local;  --alter user jft_test temporary tablespace jft_temp;  --alter user jft_test default tablespace jft_data;  --对于含有特殊类型clob字段的表需要特殊处理      -- 执行修改索引表空间    FOR r_mysql IN c_index_sql LOOP    DBMS_OUTPUT.put_line(r_mysql.ddl || ',' || r_mysql.tbname);    EXECUTE IMMEDIATE r_mysql.ddl;    i_count := i_count + 1;  END LOOP;  DBMS_OUTPUT.put_line('i_count: ' || i_count);  i_count := 0;  -- 执行修改数据表空间    FOR r_mysql IN c_data_sql LOOP    DBMS_OUTPUT.put_line(r_mysql.ddl || ',' || r_mysql.tbname);    EXECUTE IMMEDIATE r_mysql.ddl;    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 change_jft_tablespace;/


今天发现插入数据索引失效的问题
后来发现上述却本造成索引无索了
解决办法:先修改表的表空间,再修改再的表的索引表空间
  请将上述两段代码互换
  相关解决方案