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;/
今天发现插入数据索引失效的问题
后来发现上述却本造成索引无索了
解决办法:先修改表的表空间,再修改再的表的索引表空间
请将上述两段代码互换