無効化以降のすべてのテーブルインデックスにOracle
-
02-07-2019 - |
質問
方法を教えてくださいdisable以降のすべての指標を与えられたスキーマ/データベースにOracle?
注意:これはsqlldrの実行が速くなります。
解決
この指数は使用不可のファイル:
DECLARE
CURSOR usr_idxs IS select * from user_indexes;
cur_idx usr_idxs% ROWTYPE;
v_sql VARCHAR2(1024);
BEGIN
OPEN usr_idxs;
LOOP
FETCH usr_idxs INTO cur_idx;
EXIT WHEN NOT usr_idxs%FOUND;
v_sql:= 'ALTER INDEX ' || cur_idx.index_name || ' UNUSABLE';
EXECUTE IMMEDIATE v_sql;
END LOOP;
CLOSE usr_idxs;
END;
の再構築するsimiliar.
他のヒント
組み合わせ3回答とでは、selectステートが実行されないのDDL)
set pagesize 0
alter session set skip_unusable_indexes = true;
spool c:\temp\disable_indexes.sql
select 'alter index ' || u.index_name || ' unusable;' from user_indexes u;
spool off
@c:\temp\disable_indexes.sql
インポートを行う...
select 'alter index ' || u.index_name ||
' rebuild online;' from user_indexes u;
注この輸入が起こるのと同じ(sqlplus)。
の場合は呼び出し"imp"すると別セッションだけを利用する必要があり"の変更システム"の代わりに"変更セッション"(覚えていけるパラメータの使い方に見つかります。
ご利用の場合は平行でないパスを直接荷重を検討し、ベンチマークは下の指標は、特に、指標のみをカバー数とする。Oracle仕組みになって効率的な維持管理の指数にパスを直接ます。
なっついてもアドバイスの指数が使用不可能ではなく落とします。少ない偶発的な再現する。
下からもアクセスできます。 http://forums.oracle.com/forums/thread.jspa?messageID=2354075
alter session set skip_unusable_indexes = true;
alter index your_index unusable;
インポートを行う...
alter index your_index rebuild [online];
無数の組み合わせで自分だけの制約Oracleはスを作成します。あるコマンドインデックスを構築しておくことununsableして再構築の指標ともかく、なんとともにスクリプト内で落とし、スを作成します。で利用できますuser_indexesとuser_ind_columnsをすべて取得し、指数のスキーマを使dbms_metadata:
select dbms_metadata.get_ddl('INDEX', u.index_name) from user_indexes u;
"という場Oracle11gで、チェックアウトしたいとし dbms_index_utl.
組み合わせの回答:
を作成するsqlをすべて指数を使用でき:
alter session set skip_unusable_indexes = true;
select 'alter index ' || u.index_name || ' unusable;' from user_indexes u;
インポートを行う...
select 'alter index ' || u.index_name || ' rebuild online;' from user_indexes u;
実際に試したほうがよいでしょうsqlldrのSKIP_INDEX_MAINTENANCEパラメータとします。