SELECT SQL
FROM
(SELECT 'ALTER TABLE '||OWNER||'.'||TABLE_NAME||' ENABLE ROW MOVEMENT ;'
||CHR(10)
||'ALTER TABLE /* '||NUM_ROWS||' */ '||OWNER||'.'||TABLE_NAME||' SHRINK SPACE CASCADE ;'
||CHR(10)
||'ALTER TABLE '||OWNER||'.'||TABLE_NAME||' DISABLE ROW MOVEMENT ;' SQL
, ROW_NUMBER() OVER(ORDER BY OWNER, TABLE_NAME) NUM
FROM DBA_TABLES
WHERE OWNER IN ('SCOTT')
AND TABLESPACE_NAME='검색할 테이블스페이스'
)
;
select tablespace_name, segment_name, segment_type, partition_name,
recommendations, c1 from
table(dbms_space.asa_recommendations('FALSE', 'FALSE', 'FALSE'));
Table 단위의 shrink (일반 Tablespace는 table 단위까지 밖에 안된다)
- extend 단위로 data 가 늘어났다가 (high water marking 되어있음)
지속적으로 data가 delete 되는 경우 (high water mark가 옮겨지지는 않는다)
기존의 경우 fragment 발생 (쓸데없이 공간 차지)
- 할당해제와 동시에 high water mark가 옮겨지면서 다른 data 가 해당 공간을 사용할 수 있음
-> segment 축소 -> 공간 확보
예시
ALTER TABLE SCOTT.table ENABLE ROW MOVEMENT ;
ALTER TABLE /* 176 */ SCOTT.table SHRINK SPACE CASCADE ;
'DBMS > Oracle' 카테고리의 다른 글
table move 하는 방법 (0) | 2022.07.04 |
---|---|
table별 조회 (0) | 2022.07.04 |
Partition table shrink (0) | 2022.07.04 |
index unusable 확인(index 깨진거 확인 쿼리) (0) | 2022.07.04 |
index rebuild 하는 방법 (0) | 2022.07.04 |