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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle空間收縮Oracle
- 收縮表空間 for Oracle 10gOracle 10g
- 【RESIZE】Oracle收縮表空間主要命令Oracle
- oracle之臨時表空間的收縮Oracle
- 分析表空間空閒率並收縮表空間
- mysql收縮共享表空間MySql
- Oracle效能優化:收縮臨時表空間Oracle優化
- DB2_收縮表空間DB2
- Oracle案例11——Oracle表空間資料庫檔案收縮Oracle資料庫
- ORACLE 11g臨時表空間收縮的功能Oracle
- Oracle 11g 新特性 -- 臨時表空間收縮(轉)(Oracle
- mysql共享表空間擴容,收縮,遷移MySql
- 表空間(資料檔案shrink)收縮示例
- 收縮臨時表空間收縮方法及ORA-03297錯誤處理
- shrink收縮檔案空間
- MySQL 5.7新特性之線上收縮undo表空間MySql
- 收縮表空間ORA-03297錯誤解決
- Oracle 10g Shrink Table - Shrink Space 收縮空間Oracle 10g
- 轉貼:收縮oracle表空間時ora-03297錯誤的解決Oracle
- lvm收縮邏輯卷空間LVM
- oracle壓縮表表空間Oracle
- Oracle表空間Oracle
- oracle 表空間Oracle
- Oracle 19c 線上縮減 UNDO 表空間 容量Oracle
- 測試表的空間壓縮與表空間的關係
- HybridDBforPostgreSQL列存表(AO表)的膨脹、垃圾檢查與空間收縮SQL
- oracle temp 表空間Oracle
- 增加oracle表空間Oracle
- oracle undo 表空間Oracle
- oracle users 表空間Oracle
- Oracle表空間管理Oracle
- oracle建立表空間Oracle
- Oracle 表空間管理Oracle
- oracle表空間操作Oracle
- ORACLE MOVE表空間Oracle
- ORACLE表空間概述Oracle
- Oracle表空間命令Oracle
- Oracle 表空間回收Oracle