-
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;이 글은 스프링노트에서 작성되었습니다.
'♣ Tech & Biz Salon > Tech' 카테고리의 다른 글
연속된 숫자 레코드별 반환, 1년치 날짜 레코드별 반환 쿼리, 달력데이터 생성 SP (0) 2009.12.01 tnsname.ora 세팅없이 DBLINK 생성하기 (0) 2009.10.21 소프트웨어 임치제도 요약 (0) 2009.10.11