如何更改Oracle 9i中的索引更改表空间?

Oh *_*oon 2 oracle9i

我是新手到Oracle DBMS和我有任务在甲骨文如要更改索引表空间MYDB_DATA_SPACEMYDB_INDX_SPACE.

我尝试在Google上搜索可能的解决方案并找到了这样的SQL:

ALTER INDEX idx_city_state
REBUILD TABLESPACE sales_us;
Run Code Online (Sandbox Code Playgroud)

我可以检查一下这是否符合目的?

Jus*_*ave 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;
Run Code Online (Sandbox Code Playgroud)