
Oracle 데이터베이스를 설계하거나 운영하다 보면 시노님(Synonym)을 자주 접하게 됩니다. Synonym은 데이터베이스 객체(테이블, 뷰, 프로시저 등)에 별칭을 부여해 참조를 단순화하고, 보안을 강화하는 역할을 합니다. 이러한 시노님 정보를 관리하거나 분석할 때 유용한 뷰가 바로 ALL_SYNONYMS입니다. 본 글에서는 ALL_SYNONYMS 뷰의 구조와 기능을 상세히 설명하고, 실무에서 시노님을 어떻게 효율적으로 사용하는지 예제와 함께 소개합니다.
1. ALL_SYNONYMS란 무엇인가?
ALL_SYNONYMS는 Oracle 데이터베이스에서 사용자가 접근 가능한 모든 시노님에 대한 정보를 제공하는 시스템 뷰입니다. 이 뷰는 개인 시노님뿐 아니라, 공용 시노님(PUBLIC SYNONYMS)도 포함하고 있어, 전체 데이터베이스 내에서 참조 가능한 시노님 정보를 확인할 수 있습니다.
2. 주요 컬럼 설명
ALL_SYNONYMS 뷰의 주요 컬럼은 아래와 같습니다:
| 컬럼명 | 설명 |
|---|---|
| OWNER | 시노님을 생성한 사용자 (또는 PUBLIC) |
| SYNONYM_NAME | 시노님의 이름 |
| TABLE_OWNER | 실제 참조되는 객체의 소유자 |
| TABLE_NAME | 실제 참조되는 객체의 이름 |
| DB_LINK | 원격 객체인 경우 데이터베이스 링크 이름 |
3. USER_SYNONYMS, ALL_SYNONYMS, DBA_SYNONYMS 비교
Oracle은 사용자 권한에 따라 다양한 시노님 뷰를 제공합니다. 아래는 그 차이를 정리한 표입니다:
| 뷰 이름 | 조회 대상 | 접근 권한 |
|---|---|---|
| USER_SYNONYMS | 자신이 생성한 시노님만 조회 | 일반 사용자 |
| ALL_SYNONYMS | 접근 가능한 모든 시노님 조회 | 일반 사용자 |
| DBA_SYNONYMS | 전체 스키마의 모든 시노님 조회 | DBA 권한 필요 |
4. 실무 활용 예제
4.1 특정 사용자가 생성한 시노님 목록
SELECT SYNONYM_NAME, TABLE_NAME
FROM ALL_SYNONYMS
WHERE OWNER = 'HR';
4.2 공용(PUBLIC) 시노님만 조회
SELECT SYNONYM_NAME, TABLE_OWNER, TABLE_NAME
FROM ALL_SYNONYMS
WHERE OWNER = 'PUBLIC';
4.3 특정 테이블을 참조하는 모든 시노님 조회
SELECT OWNER, SYNONYM_NAME
FROM ALL_SYNONYMS
WHERE TABLE_NAME = 'EMPLOYEES'
AND TABLE_OWNER = 'HR';
4.4 DB 링크를 사용하는 시노님 식별
SELECT SYNONYM_NAME, DB_LINK
FROM ALL_SYNONYMS
WHERE DB_LINK IS NOT NULL;
5. 시노님 활용 전략 및 주의사항
- 보안 레이어 역할: 시노님은 직접 테이블명을 노출하지 않음으로써 보안성을 높일 수 있습니다.
- 접근 편의성: 공용 시노님은 복잡한 스키마명을 생략하고 객체를 직접 호출할 수 있어 SQL을 간결하게 합니다.
- 유지보수 주의: 시노님은 추적이 어려울 수 있으므로, 변경 추적이 필요한 경우 문서화가 반드시 필요합니다.
- 의존성 확인: 시노님이 참조하는 객체가 삭제될 경우 에러가 발생하므로,
ALL_DEPENDENCIES뷰로 의존성 관리가 중요합니다. - 성능 영향 없음: 시노님은 단순한 참조 구조이므로 퍼포먼스에 영향을 주지 않으며, View와는 달리 실행 계획에 영향을 미치지 않습니다.
6. ALL_SYNONYMS를 활용한 점검 체크리스트
- 같은 테이블을 참조하는 중복 시노님이 있는가?
- 사용하지 않는 시노님은 삭제되었는가?
- PUBLIC 시노님이 필요한 경우에만 정의되어 있는가?
- DB 링크를 사용하는 시노님은 연결이 정상적으로 유지되는가?
7. Synonym vs View 비교
시노님과 뷰는 비슷하게 객체를 간접 참조할 수 있지만, 본질적으로 다른 기능입니다. 다음 표를 참고하세요:
| 항목 | Synonym | View |
|---|---|---|
| 기능 | 객체에 대한 별칭 | SELECT 결과 집합을 저장한 가상 테이블 |
| 데이터 보유 | 보유하지 않음 | 보유하지 않음 |
| 실행 계획 | 원본 객체와 동일 | 쿼리 복잡도에 따라 달라짐 |
| 보안 역할 | 접근 경로 숨김 | 접근 제한 및 필드 제어 가능 |
8. 결론
Oracle의 ALL_SYNONYMS 뷰는 데이터베이스 객체 참조를 단순화하고 보안을 강화하기 위한 시노님 정보를 분석하는 데 매우 유용합니다. 실무에서는 객체명을 바꾸지 않고도 백엔드를 변경하거나, 스키마 간 참조를 관리할 수 있는 강력한 기능을 제공합니다. 특히 공용 시노님은 사용자 편의성을 높이지만, 철저한 관리가 필요한 요소이므로 ALL_SYNONYMS 뷰를 주기적으로 활용해 점검하는 것이 좋습니다.
9. 참고자료
- Oracle Database 21c Reference Guide: https://docs.oracle.com/en/database/
- SQL Developer 실무 사용 경험
- Oracle Synonyms Best Practices - Oracle Tech Blog
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] ALL_SOURCE 뷰 완벽 가이드 : PL/SQL 소스코드 관리 (0) | 2025.06.15 |
|---|---|
| [ORACLE] ALL_OBJECTS 뷰 완전 정복 : 객체 관리와 분석의 핵심 (0) | 2025.06.15 |
| [ORACLE] ALL_TRIGGERS 뷰로 트리거 관리와 분석 완전 정복 (0) | 2025.06.15 |
| [ORACLE] ALL_VIEWS 뷰 사용법과 실무 활용 전략 (0) | 2025.06.15 |
| [ORACLE] ALL_SEQUENCES 뷰로 시퀀스 관리 완전 정복 (0) | 2025.06.15 |