행위

오라클 튜닝 테이블 실제 건수

DB CAFE

Dbcafe (토론 | 기여)님의 2019년 7월 12일 (금) 20:54 판 (새 문서: == 스칼라서브쿼리 멀티로우 처리 == SELECT REGEXP_REPLACE(EXTRACT(dbms_xmlgen.getXmlType('select to_char(level) c from dual connect by level <= 10'), '/ROWSET/ROW/C'...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
thumb_up 추천메뉴 바로가기


1 스칼라서브쿼리 멀티로우 처리[편집]

SELECT REGEXP_REPLACE(EXTRACT(dbms_xmlgen.getXmlType('select to_char(level) c from dual connect by level <= 10'), '/ROWSET/ROW/C'

                            ).getStringVal(), '<C>|</C><C>|</C>', ', '
                     )
    , dbms_xmlgen.getXmlType('select to_char(level)||, C from dual connect by level <= 10').EXTRACT('//text()').getclobval()
 FROM DUAL
 CONNECT BY LEVEL <=5



2 통계정보 차이 분석(실행주의:테이블 건수 실측 수행함)[편집]

WITH V1 AS (
    SELECT A.OWNER, A.TABLE_NAME
         , A.LAST_ANALYZED
         , A.NUM_ROWS  ANALYZED_ROWS
         --, NUMTODSINTERVAL(SYSDATE - A.LAST_ANALYZED, 'DAY') DAY_GAP
         , TRUNC(SYSDATE - A.LAST_ANALYZED) GAP_DAY         
    FROM DBA_TABLES A
    WHERE 1 = 1
      AND A.LAST_ANALYZED < TRUNC(SYSDATE - 30)
      AND OWNER IN (SELECT USERNAME FROM DBA_USERS WHERE USER_ID > 100)
    ORDER BY GAP_DAY DESC, 1, 2
)
, V2 AS (
    SELECT ROWNUM AS RNO
         , A.*
         , TO_NUMBER(REGEXP_REPLACE(EXTRACT(DBMS_XMLGEN.GETXMLTYPE(
                                                   'SELECT /*+ PARALLEL(1) */ COUNT(*) C FROM '||A.OWNER||'.'||A.TABLE_NAME
                                             ), '/ROWSET/ROW/C'
                                     ).GETSTRINGVAL()
                                    , '<C>|</C><C>|</C>', ''
                     )
            ) CURRENT_ROWS
    FROM V1 A
--    WHERE ROWNUM < 100
)
SELECT A.*, ABS(A.ANALYZED_ROWS - A.CURRENT_ROWS) AS GAP_ROWS
     , ROUND(ABS(A.ANALYZED_ROWS - A.CURRENT_ROWS) / GREATEST(A.ANALYZED_ROWS,1) * 100, 2) CHANGED_PCT
FROM V2 A
;