ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • GRANT, SYNONYM 문 추출하기
    ♣ Tech & Biz Salon/Tech 2009. 11. 24. 06:52

    FOODADM 이라는 계정이 있는데, 이 계정은 모델 관리자가 비번을 알고 있다.

    FOODDEV 라는 계정이 있는데, 이 계정은 애플리케이션단에서 이용하는 계정이다.

     

    테이블들 주요 OBJECT 의 OWNER 는 FOODADM 이고

    FOODDEV 는 FOODADM 의 OBJECT 들에 SYNONYM 을 가지고 있고, SYNONYM 이 바라보는 오브젝트에 대한 권한을 부여받아 사용한다.

     

    위와 같은 구조로 써 본 경험들이 있겠죠?

     

    GRANT 정보, SYNONYM 정보, DATABASE LINK 등...

    조금만 관심이 있다면, 오라클 DICTIONARY 들을 접근해보고, 각종 메타정보를 쉽게 파악할수 있을텐데 ( 직접 쿼리하지 않고, TOAD 같은 툴에서도 쉽게 볼수가 있지요.. )

    해당 DICTIONARY 들에 대해서도 모르고, TOAD에서도 보지도 않고...

    "~에서 ~ 보는  DB LINK 명이 뭐죠?" 이런 걸 물어보는 구력이 오래된 분들 보면 ...

    직접 확인하면 되는 수준의 건을 왜 그렇게 요청하는건지... 직접 확인하라고 하고 앞으로는 안 알려줘야겠다는...

     

    암튼.. 업무때 자주 쓰는 간단한 쿼리 올립니다.  GRANT, SYNONYM 생성문입니다.

     

     GRANT 생성문 추출
    SELECT
    'GRANT SELECT, INSERT, UPDATE, DELETE ON '
    || OBJ_NM
    || ' TO FOODDEV;'
    FROM
    (
        SELECT OBJECT_NAME AS OBJ_NM FROM ALL_OBJECTS
        WHERE 0 = 0
        AND OWNER = 'FOODADM'
       AND OBJECT_TYPE = 'TABLE'
        AND NOT ( OBJECT_NAME LIKE 'BIN$%'
        OR OBJECT_NAME  LIKE 'FS_%' )
        MINUS
        SELECT TABLE_NAME AS OBJ_NM FROM ALL_TAB_PRIVS_RECD
        WHERE 0 = 0
        AND TABLE_NAME NOT LIKE 'BIN$%'
        AND PRIVILEGE NOT IN ('EXECUTE')
        AND OWNER = 'FOODADM'
        AND GRANTEE = 'FOODDEV'
        GROUP BY TABLE_NAME
    )

    SYNONYM 생성문 추출

    SELECT
     'CREATE SYNONYM ' || 'FOODDEV.'|| TABLE_NAME || ' FOR ' || 'FOODADM.' || TABLE_NAME
      || ';'
    FROM
    (
     SELECT TABLE_NAME FROM ALL_TABLES
     WHERE OWNER = 'FOODADM'
     MINUS
     SELECT SYNONYM_NAME AS TABLE_NAME FROM ALL_SYNONYMS
     WHERE TABLE_OWNER = 'FOODADM'
     AND OWNER = 'FOODDEV'
    )
    ORDER BY TABLE_NAME;

     

    이 글은 스프링노트에서 작성되었습니다.

Designed by Tistory.