728x90

1. SYN(시노님)이란 무엇인가?
시노님(SYNONYM)은 Oracle 데이터베이스에서 객체의 별칭(alias) 역할을 수행하는 객체입니다. 사용자는 복잡하거나 소유자가 다른 객체의 전체 이름을 직접 입력하지 않고도, 보다 간단한 이름으로 객체를 참조할 수 있게 됩니다. 이 기능은 특히 대규모 시스템이나 계층 구조가 깊은 시스템에서 객체 접근을 단순화하고, 애플리케이션 개발 시 유지 보수성을 높이는 데 핵심적인 역할을 합니다.
2. 시노님의 주요 특징 및 장점
| 특징 | 설명 |
|---|---|
| 간결한 참조 | 소유자(schema) 명시 없이 테이블, 뷰 등을 간단하게 참조 가능 |
| 보안 추상화 | 객체의 실제 위치나 구조를 숨김으로써 보안 강화 |
| 코드 재사용성 향상 | 다양한 사용자 환경에서 동일한 SQL 쿼리 재사용 가능 |
| 로직 분리 | 물리적 객체 변경 없이 논리적 객체 이름만 변경 가능 |
3. 시노님의 유형: 퍼블릭 vs 프라이빗
Oracle에서는 시노님을 다음과 같이 두 가지 유형으로 구분합니다.
| 유형 | 설명 | 사용 예 |
|---|---|---|
| 퍼블릭 시노님 | 모든 사용자가 접근 가능한 글로벌 별칭 | CREATE PUBLIC SYNONYM emp FOR hr.employees; |
| 프라이빗 시노님 | 특정 스키마 내부에서만 접근 가능한 별칭 | CREATE SYNONYM my_emp FOR hr.employees; |
4. 시노님 생성 및 삭제
시노님의 생성과 삭제는 매우 간단하며, 다음과 같은 SQL 문을 사용합니다.
-- 프라이빗 시노님 생성
CREATE SYNONYM emp FOR hr.employees;
-- 퍼블릭 시노님 생성
CREATE PUBLIC SYNONYM emp FOR hr.employees;
-- 삭제
DROP SYNONYM emp;
DROP PUBLIC SYNONYM emp;
주의할 점은 퍼블릭 시노님은 DROP PUBLIC SYNONYM으로만 삭제 가능하며, 권한이 필요한 작업입니다.
5. 시노님 관련 시스템 뷰
시노님 정보를 확인하려면 다음과 같은 시스템 뷰를 활용할 수 있습니다.
DBA_SYNONYMS: 전체 시노님 정보ALL_SYNONYMS: 접근 가능한 모든 시노님USER_SYNONYMS: 현재 사용자 소유의 시노님
-- 현재 사용자 시노님 확인
SELECT synonym_name, table_owner, table_name
FROM user_synonyms;
6. 실무에서의 시노님 활용 전략
시노님은 단순한 별칭 이상의 가치를 제공합니다. 다음은 실무에서 자주 활용되는 전략입니다.
- 계층 분리 아키텍처: 실제 테이블 위치를 숨겨 DAO 레이어와의 독립성 확보
- 멀티 DB 연동: DB 링크와 결합해 다른 DB 객체도 동일하게 접근
- 버전 관리: 기존 객체를 바꾸지 않고 시노님만 바꾸어 로직 업데이트
- 보안 강화: 직접 객체 이름 노출을 최소화하여 구조 유출 방지
7. 시노님과 뷰, 테이블의 비교
| 구분 | 시노님 | 뷰(View) | 테이블 |
|---|---|---|---|
| 데이터 저장 여부 | 없음 | 없음 | 있음 |
| SQL 정의 필요 | 필요 없음 | SELECT 문 필요 | 스키마 정의 필요 |
| 역할 | 별칭 | 논리적 뷰 | 물리적 저장 |
| 보안 수준 | 높음 (구조 은닉 가능) | 중간 | 낮음 (직접 노출) |
8. 시노님 사용 시 주의할 점
- 의존성 관리: 시노님이 참조하는 객체가 삭제되면 무용지물이 됨
- 이름 중복: 동일한 이름으로 퍼블릭, 프라이빗 시노님이 존재할 수 있어 충돌 주의
- 보안 권한: 대상 객체에 대한 SELECT/EXECUTE 권한이 있어야 시노님도 접근 가능
9. 고급 응용: DB 링크 + 시노님
Oracle에서는 시노님을 DB 링크와 결합하여 외부 데이터베이스 객체에도 동일한 이름으로 접근할 수 있습니다.
CREATE SYNONYM remote_emp FOR hr.employees@remote_db;
이를 통해 이기종 시스템 간의 데이터 연동을 간단하게 구성할 수 있습니다.
출처
- Oracle Database SQL Language Reference 21c – Oracle Corporation
- Oracle Database Concepts Guide – Oracle Docs
728x90
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] USER_HISTOGRAMS 완벽 분석 : 옵티마이저의 판단을 지배하는 통계 구조 (0) | 2025.07.30 |
|---|---|
| [ORACLE] TABS 뷰 완전 정복 : 테이블 구조 파악과 실무 활용 전략 (0) | 2025.07.30 |
| [ORACLE] SM$VERSION 완전 분석 : 숨겨진 시스템 테이블을 활용한 DB 진단 전략 (0) | 2025.07.30 |
| [ORACLE] SEQ 시퀀스 완전 분석 : 구조 사용법 실전 적용 사례까지 (0) | 2025.07.29 |
| [ORACLE] OBJ 테이블 완전 분석 : 구조 활용법 실무 적용사례 (0) | 2025.07.29 |