私は Oracle DBMS の初心者で、Oracle のインデックス テーブル スペースを から に変更するタスクがありMYDB_DATA_SPACE
ますMYDB_INDX_SPACE
。
考えられる解決策をGoogleで検索してみたところ、次のようなSQLが見つかりました。
ALTER INDEX idx_city_state
REBUILD TABLESPACE sales_us;
これが目的に合っているかどうか確認してもらえますか?
私は Oracle DBMS の初心者で、Oracle のインデックス テーブル スペースを から に変更するタスクがありMYDB_DATA_SPACE
ますMYDB_INDX_SPACE
。
考えられる解決策をGoogleで検索してみたところ、次のようなSQLが見つかりました。
ALTER INDEX idx_city_state
REBUILD TABLESPACE sales_us;
これが目的に合っているかどうか確認してもらえますか?
はい、テーブルスペースの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;