오라클

ORACLE shrink 작업

bedbmsguru 2020. 3. 2. 16:26

--1 NOLOGGIN QUERY 만들기 (FUNCTION BASE INDEX 가 있을경우 진행불가능)
SELECT 'ALTER TABLE OWNER명.테이블명 NOLOGGING;' FROM DUAL
UNION ALL
SELECT 'ALTER INDEX ' || OWNER ||'.' || INDEX_NAME || ' NOLOGGING;' FROM all_indexes WHERE table_name='테이블명' AND owner='OWNER명'
UNION ALL
SELECT 'FUNCTION BASE INDEX 있음' FROM all_indexes WHERE table_name='테이블명' AND owner='OWNER명' AND INDEX_TYPE LIKE 'FUNCTION%'


--2 ROW MOVEMENT ENABLE  만들기
SELECT 'ALTER TABLE OWNER명.테이블명 ENABLE ROW MOVEMENT;' FROM DUAL

ALTER TABLE OWNER명.테이블명 ENABLE ROW MOVEMENT;



-- 3-1 SHRINK SPACE CASCADE QUERY 만들기
SELECT 'ALTER TABLE OWNER명.테이블명 SHRINK SPACE CASCADE;' FROM DUAL

 

ALTER TABLE OWNER명.테이블명 SHRINK SPACE CASCADE;

 

-- 3-2  Shrink Space INDEX Table 각각 별도로 할 경우

SELECT 'ALTER TABLE OWNER명.테이블명 SHRINK SPACE;' FROM DUAL
UNION ALL
SELECT 'ALTER INDEX ' || OWNER ||'.' || INDEX_NAME || ' SHRINK SPACE;' FROM all_indexes WHERE table_name='테이블명' AND owner='OWNER명'




--4 ROW MOVEMENT DISABLE  만들기
SELECT 'ALTER TABLE OWNER명.테이블명 DISABLE ROW MOVEMENT;' FROM DUAL


ALTER TABLE OWNER명.테이블명 DISABLE ROW MOVEMENT;

--5 LOGGIN QUERY 만들기 
SELECT 'ALTER TABLE OWNER명.테이블명 LOGGING;' FROM DUAL
UNION ALL
SELECT 'ALTER INDEX ' || OWNER ||'.' || INDEX_NAME || ' LOGGING;' FROM all_indexes WHERE table_name='테이블명' AND owner='OWNER명'



--6 원상복귀 확인  
SELECT INDEX_NAME, LOGGING, '' FROM all_indexes WHERE table_name='테이블명' AND owner='OWNER명'
UNION ALL
SELECT TABLE_NAME, LOGGING, ROW_MOVEMENT FROM all_TABLEs WHERE table_name='테이블명' AND owner='OWNER명'

 

 

http://blog.naver.com/itisksc/30079446285