/*******************************
*
*修改集付通数据库默认表空间,临时表空间,索引表空间存储过程
*
*调用 : change_jft_tablespace(数据表空间名称,索引表空间名称) examp:exec change_jft_tablespace ('jft_data','jft_index');
*auther: fanwg@insigmacc.com
*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;
/
今天发现插入数据索引失效的问题
后来发现上述却本造成索引无索了
解决办法:先修改表的表空间,再修改再的表的索引表空间
请将上述两段代码互换
下载次数: 3
分享到:
2013-04-10 20:45
浏览 3168
分类:数据库
评论