Oracle表空間收縮方案
應用背景:
某些情況下,由於前期設計上沒有考慮全面,導致表空間預建太大,遠遠超出實際使用大小。於是,就出現了收縮表空間這樣的需求,即將這個表空間的佔用空間進行收縮。
某些情況下,由於前期設計上沒有考慮全面,導致表空間預建太大,遠遠超出實際使用大小。於是,就出現了收縮表空間這樣的需求,即將這個表空間的佔用空間進行收縮。
處理方案:
對於表空間收縮,Oracle只提供擴大的功能,而不提供收縮。所以,要實現這樣的要求,就只能先建立一箇中間表空間,然後將待收縮表空間中的資料遷移到這個表空間下
對於表空間收縮,Oracle只提供擴大的功能,而不提供收縮。所以,要實現這樣的要求,就只能先建立一箇中間表空間,然後將待收縮表空間中的資料遷移到這個表空間下
處理方法:
1、找出該表空間下的所有資料物件;
select segment_type, partition_name, segment_name from dba_segments;
1、找出該表空間下的所有資料物件;
select segment_type, partition_name, segment_name from dba_segments;
2、建立目標空間(不強制建立,但是建議)。
create tablespace dbs_temp datafile 'd:\dbs_temp01.dbf' size 100m;
create tablespace dbs_temp datafile 'd:\dbs_temp01.dbf' size 100m;
3、根據物件型別重建或轉移對應資料;
對於table:
alter table xx move tablespace dbs_temp;
對於partition table:
alter table xx move partition xx1 tablespace dbs_temp;
對於index:
alter index ixx rebuild tablespace dbs_temp;
對於lob欄位:
alter table xx move lob(col_name) store as (tablespace dbs_temp);
對於table:
alter table xx move tablespace dbs_temp;
對於partition table:
alter table xx move partition xx1 tablespace dbs_temp;
對於index:
alter index ixx rebuild tablespace dbs_temp;
對於lob欄位:
alter table xx move lob(col_name) store as (tablespace dbs_temp);
一般情況下,下面語句基本可以涵蓋所有的資料物件了:
select segment_type, segment_name, partition_name,
case segment_type
when 'TABLE' then 'alter table ' || owner || '.' || segment_name || ' move tablespace dbs_temp;',
when 'INDEX' then 'alter index ' || owner || '.' || segment_name || ' rebuild tablespace dbs_temp;',
when 'INDEX PARTITION' then 'alter index ' || owner || '.' || segment_name || ' rebuild tablespace dbs_temp;',
when 'TABLE PARTITION' then 'alter table ' || owner || '.' || segment_name || ' move partition ' || partition_name || 'tablespace dbs_temp;' sqltext
from dba_segments
where tablespace_name = 'FUND_TABLE'
and segment_type not like 'LOB%';
select segment_type, segment_name, partition_name,
case segment_type
when 'TABLE' then 'alter table ' || owner || '.' || segment_name || ' move tablespace dbs_temp;',
when 'INDEX' then 'alter index ' || owner || '.' || segment_name || ' rebuild tablespace dbs_temp;',
when 'INDEX PARTITION' then 'alter index ' || owner || '.' || segment_name || ' rebuild tablespace dbs_temp;',
when 'TABLE PARTITION' then 'alter table ' || owner || '.' || segment_name || ' move partition ' || partition_name || 'tablespace dbs_temp;' sqltext
from dba_segments
where tablespace_name = 'FUND_TABLE'
and segment_type not like 'LOB%';
下面是遷移lob欄位的
select table_name, column_name, 'alter table ' || owner || '.' || table_name || ' move lob(' || column_name || ') store as(tablespace dbs_temp);' sqltext
from dba_lobs
where tablespace_name = 'FUND_TABLE';
select table_name, column_name, 'alter table ' || owner || '.' || table_name || ' move lob(' || column_name || ') store as(tablespace dbs_temp);' sqltext
from dba_lobs
where tablespace_name = 'FUND_TABLE';
4、刪除清空後的表空間;
drop tablespace dbs_old including contents and datafiles;
下面步驟簡單了,就不一一列舉。
drop tablespace dbs_old including contents and datafiles;
下面步驟簡單了,就不一一列舉。
5、如果對錶空間名稱有要求,則使用原來的表空間名再次建立一個合適大小的表空間。
6、將目標表空間中的資料再遷移回新建的最終的表空間。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31444259/viewspace-2153197/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【RESIZE】Oracle收縮表空間主要命令Oracle
- Oracle案例11——Oracle表空間資料庫檔案收縮Oracle資料庫
- mysql收縮共享表空間MySql
- 表空間(資料檔案shrink)收縮示例
- mysql共享表空間擴容,收縮,遷移MySql
- Oracle表空間Oracle
- oracle 表空間Oracle
- MySQL 5.7新特性之線上收縮undo表空間MySql
- 增加oracle表空間Oracle
- oracle temp 表空間Oracle
- lvm收縮邏輯卷空間LVM
- Oracle 19c 線上縮減 UNDO 表空間 容量Oracle
- oracle 表移動表空間Oracle
- Oracle表移動表空間Oracle
- oracle表空間的整理Oracle
- Oracle 批量建表空間Oracle
- Oracle清理SYSAUX表空間OracleUX
- Oracle Temp 表空間切換Oracle
- Oracle 表空間增加檔案Oracle
- Oracle OCP(49):表空間管理Oracle
- Oracle RMAN 表空間恢復Oracle
- Oracle新建使用者、表空間、表Oracle
- oracle建立臨時表空間和資料表空間以及刪除Oracle
- Oracle的表空間quota詳解Oracle
- oracle臨時表空間相關Oracle
- oracle sql 表空間利用率OracleSQL
- Oracle OCP(47):表空間的建立Oracle
- 【Oracle 恢復表空間】 實驗Oracle
- 【TABLESPACE】Oracle表空間最佳實踐Oracle
- oracle 建立表空間和使用者Oracle
- Oracle建立表空間和使用者Oracle
- Oracle中新建表空間、使用者Oracle
- Oracle中表空間、表、索引的遷移Oracle索引
- ORACLE線上切換undo表空間Oracle
- oracle表空間增長趨勢分析Oracle
- Oracle OCP(46):表空間、段、區、塊Oracle
- 【TABLESPACE】Oracle 表空間結構說明Oracle
- Oracle RAC+DG 表空間擴容Oracle