2012-05-02 18 views
2

私はOracle DBMSの初心者です。Oracleのインデックステーブルスペースを変更する作業があります。 MYDB_DATA_SPACEからMYDB_INDX_SPACEまでです。Oracle 9iでの索引変更表領域の変更方法は?

私は可能な解決策のためにGoogleで検索しようとした、このようなSQLを発見した:これは目的を果たしている場合

ALTER INDEX idx_city_state 
REBUILD TABLESPACE sales_us; 

私はチェックしていただけますか?

答えて

5

はい、sales_us表領域のidx_city_stateインデックスが再構築されます。私はちょうどそれがの2〜3ギガバイトを占有インデックスに対してかかる場合がありますどのくらいの不思議、インデックステーブルスペースを変更するには経験がないので、あなたは、すべてのインデックス

DECLARE 
    l_sql_stmt VARCHAR2(1000); 
BEGIN 
    FOR i IN (SELECT owner, 
        index_name 
       FROM all_indexes 
      WHERE tablespace_name = 'MYDB_DATA_SPACE') 
    LOOP 
    l_sql_stmt := 'ALTER INDEX ' || i.owner || '.' || i.index_name || 
        ' REBUILD TABLESPACE MYDB_INDX_SPACE'; 
    EXECUTE IMMEDIATE l_sql_stmt; 
    END LOOP; 
END; 
+0

ただ、別の質問を再構築するために、動的SQLのビットを書き込むことができます実行を終了するための表スペース? –

+0

@ChinBoon - インデックスを完全に構築する必要があります。テーブルをスキャンしてインデックスを作成する必要があります。おそらく、ハードウェアの最初の場所にインデックスを作成するのに要する時間は、おそらく少なくとも数分かかるでしょう。 –

関連する問題