表空間遷移

neverinit發表於2017-07-15
這裡以schema為prod下的表為例子,進行表空間遷移的操作。
1.新建表空間(路徑可選,大小和自擴充都可選,名字也可自選)
create tablespace prod_idx datafile '/data/prod/tablespace/PROD_IDX_001.dbf' size 1G AUTOEXTEND ON next 500M maxsize unlimited;
create tablespace prod_tab datafile '/data/prod/tablespace/PROD_TAB_001.dbf' size 1G AUTOEXTEND ON next 500M maxsize unlimited;
create tablespace prod_lob datafile '/data/prod/tablespace/PROD_LOB_001.dbf' size 1G AUTOEXTEND ON next 500M maxsize unlimited;
2.修改使用者預設表空間
alter user prod default tablespace prod_tab;
3.拼接預設表空間遷移sql
select 'alter table prod.'|| TABLE_NAME || ' move tablespace prod_tab;' from dba_tables where owner='prod';
4.拼接索引表空間遷移sql
select 'alter index prod.'|| INDEX_NAME || ' rebuild tablespace prod_idx;' from dba_indexes where owner='prod';
5.拼接LOB表空間遷移sql
select 'alter table prod.'|| TABLE_NAME || ' move lob('|| COLUMN_NAME ||') store as (tablespace prod_lob);' from dba_lobs where owner='prod';
6.執行上述3,4,5三個步驟拼接的SQL,完成表空間遷移

最後,如果原表空間佔用空間較大,可以對資料庫PROD使用者的原表空間(資料庫預設表空間)進行表空間收縮操作。如果佔用空間不大,也可不進行表空間收縮。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31394774/viewspace-2142095/,如需轉載,請註明出處,否則將追究法律責任。

相關文章