/* 다른 user의 schema와비교해서 존재하는 테이블에 대하여 인덱스를 생성하는 스크립트를 자동으로 생성해 주는 쿼리. 테이블은 그대로 copy했는데 index정보가 빠진 경우에 user만 바꾸어서 실행해주면 index creation script가 만들어진다 */
SELECT HEADER
||MAX(COL1)
||MAX(COL2)
||MAX(COL3)
||MAX(COL4)
||MAX(COL5)
||MAX(COL6)
||MAX(COL7)
||MAX(COL8)
||MAX(COL9)
||MAX(COL10)
||TAILOR AS CMD
FROM (SELECT 'CREATE '
||CASE WHEN B.UNIQUENESS = 'UNIQUE' THEN B.UNIQUENESS ELSE '' END
||' INDEX '
||A.INDEX_NAME
||' ON '
||A.TABLE_NAME
||' (' HEADER
,CASE WHEN COLUMN_POSITION = 1 THEN COLUMN_NAME||' '||DESCEND ELSE '' END COL1
,CASE WHEN COLUMN_POSITION = 2 THEN ','||COLUMN_NAME||' '||DESCEND ELSE '' END COL2
,CASE WHEN COLUMN_POSITION = 3 THEN ','||COLUMN_NAME||' '||DESCEND ELSE '' END COL3
,CASE WHEN COLUMN_POSITION = 4 THEN ','||COLUMN_NAME||' '||DESCEND ELSE '' END COL4
,CASE WHEN COLUMN_POSITION = 5 THEN ','||COLUMN_NAME||' '||DESCEND ELSE '' END COL5
,CASE WHEN COLUMN_POSITION = 6 THEN ','||COLUMN_NAME||' '||DESCEND ELSE '' END COL6
,CASE WHEN COLUMN_POSITION = 7 THEN ','||COLUMN_NAME||' '||DESCEND ELSE '' END COL7
,CASE WHEN COLUMN_POSITION = 8 THEN ','||COLUMN_NAME||' '||DESCEND ELSE '' END COL8
,CASE WHEN COLUMN_POSITION = 9 THEN ','||COLUMN_NAME||' '||DESCEND ELSE '' END COL9
,CASE WHEN COLUMN_POSITION = 10 THEN ','||COLUMN_NAME||' '||DESCEND ELSE '' END COL10
,') TABLESPACE INDEX20;' TAILOR
FROM DBA_IND_COLUMNS A
,DBA_INDEXES B
WHERE A.INDEX_NAME = B.INDEX_NAME
AND A.TABLE_NAME IN (SELECT TABLE_NAME
FROM DBA_TABLES
WHERE OWNER = 'PAN_ESTUSR')
AND INDEX_OWNER = 'EST_USR'
ORDER BY A.INDEX_NAME,A.COLUMN_POSITION)
GROUP BY HEADER,TAILOR
'오라클 실무..' 카테고리의 다른 글
HINT 사용법 (1) | 2006.05.16 |
---|---|
사용자추가하기 (1) | 2006.05.16 |
날짜단위의 연산에서...... (1) | 2006.05.16 |
특정 테이블의 테이블스페이스를 변경하는 명령을 생성하는 쿼리 (1) | 2006.05.16 |
MEMORY 복제용 COPY_T 쉽게 만들기 (1) | 2006.05.16 |