<개발자일기>
테이블명세서를 작성할 일이 있었는데
방화벽문제인지..아니면 권한문제인지..
Orange에서 특정계정의 Table 목록이 나오지 않는 현상이 발생했다.
(Orange > View > Schema Browser > Table tab > 계정의 '+' 클릭하여 table목록 조회)
뭐지? 하고... 알아보니
특정계정은 어떠한 이유로 시노님만 있다고 했다.
시노님? 시노님이 무엇일까-
SYNONYM(시노님)란?
- alias와 같이 이름을 줄여주는 역할을 함.
- synonym은 table의 이름을 설정해 주는데 다른 계정의 객체(테이블,뷰,함수,시퀀스,프로시저)
등을 참조하기 위해 사용하며 이렇게 사용하는 이유는
다른 계정의 정보를 감춤으로써 DataBase의 보안을 위해 사용되어진다.
시노님생성/삭제 관련 자세한 사항은
https://mine-it-record.tistory.com/68 참조.
다른 계정의 쿼리 조회시
SELECT * FROM XXX.TEST_TABLE
XXX.TEST_TABLE을 시노님으로 YYY라고 alias 지으면
SELECT * FROM YYY;
가 되는 거였구나......
물론 XXX계정의 테이블들은 조회되지 않는거고...
어쨌든 TABLE 목록이 나오지 않은 이유는 파악했고
테이블목록 , 테이블컬럼명, 컬럼코멘트 들을 조회해보기 위해
아래와 같은 쿼리들로 목록조회를 하여 테이블명세서는 작성 끝~~~
< TABLE 정보 조회 방법 >
1. 테이블 조회
SELECT *
FROM ALL_TABLES
WHERE TABLE_NAME LIKE 'TABLE명'
ex) select * from all_tables where table_name like 'BRD_%'
사용하고 있는 table명들을 알아서 위와 같이 조회
2. 테이블 컬럼 정보 조회
1번에서 조회한 TABLE명으로 하나씩 조회~
SELECT *
FROM ALL_TAB_COLUMNS
WHERE TABLE_NAME = 'TABLE명'
3. 컬럼 상세설명 조회
SELECT *
FROM ALL_COL_COMMENTS
WHERE TABLE_NAME ='TABLE명'