2

私は Oracle DBMS の初心者で、Oracle のインデックス テーブル スペースを から に変更するタスクがありMYDB_DATA_SPACEますMYDB_INDX_SPACE

考えられる解決策をGoogleで検索してみたところ、次のようなSQLが見つかりました。

ALTER INDEX idx_city_state
REBUILD TABLESPACE sales_us;

これが目的に合っているかどうか確認してもらえますか?

4

1 に答える 1

5

はい、テーブルスペースのidx_city_stateインデックスを再構築しsales_usます。少しの動的 SQL を記述して、すべてのインデックスを再構築できます。

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;
于 2012-05-02T03:34:25.690 に答える