본문 바로가기
Database/Oracle

[ORACLE] SYNONYM() 시노님 개념부터 생성 예제까지 완전 정복

by Papa Martino V 2025. 6. 9.
728x90

오라클 SYNONYM() 시노님 개념부터 생성 예제까지 완전 정복
[Oracle] SYNONYM

 

1. SYNONYM이란 무엇인가?

SYNONYM(시노님)은 Oracle에서 테이블, 뷰, 시퀀스, 프로시저, 함수 등 다양한 객체에 대해 별칭을 만들어주는 객체입니다. 다른 사용자 스키마의 객체를 보다 간단하게 참조하거나, 객체명을 추상화할 때 주로 사용됩니다.

2. SYNONYM의 필요성

  • 객체명을 짧고 단순하게 줄이기 위해
  • 스키마명을 노출하지 않고 참조하기 위해
  • 다른 사용자 스키마의 객체에 접근을 간단하게 만들기 위해
  • 애플리케이션 유지보수 시 객체명을 변경하지 않아도 되게 하기 위해

3. SYNONYM의 종류

종류 설명 스코프
PRIVATE SYNONYM 특정 사용자 스키마에만 존재 사용자 단위
PUBLIC SYNONYM 모든 사용자에게 동일하게 노출 데이터베이스 전체

4. PRIVATE SYNONYM 생성 예제

CREATE SYNONYM emp_syn FOR hr.employees;

현재 사용자 스키마에서 hr.employees 테이블을 emp_syn이라는 이름으로 참조할 수 있게 만듭니다.

5. PUBLIC SYNONYM 생성 예제

CREATE PUBLIC SYNONYM emp_pub FOR hr.employees;

모든 사용자가 emp_pub이라는 이름으로 hr.employees 테이블을 참조할 수 있습니다.

6. SYNONYM 사용 예

SELECT employee_id, first_name FROM emp_syn;

원래는 SELECT employee_id, first_name FROM hr.employees를 입력해야 하지만, 시노님으로 간편화됩니다.

7. SYNONYM 존재 확인

  • USER_SYNONYMS: 현재 사용자 소유의 시노님 목록
  • ALL_SYNONYMS: 접근 가능한 모든 시노님 목록
  • DBA_SYNONYMS: 전체 데이터베이스 시노님 목록 (DBA 전용)
SELECT synonym_name, table_owner, table_name
FROM user_synonyms;

8. SYNONYM 삭제

-- 개인 시노님 삭제
DROP SYNONYM emp_syn;

-- 공개 시노님 삭제
DROP PUBLIC SYNONYM emp_pub;

9. 실무 활용 예

  • 뷰 또는 테이블을 SYNONYM으로 감싸고, 실제 객체 이름이 바뀌더라도 애플리케이션 쿼리는 수정하지 않음
  • 부서별 스키마 구조가 동일한 경우, 시노님을 통해 하나의 쿼리 템플릿으로 모든 부서를 처리
  • 데이터 마이그레이션 또는 테스트 환경 분리 시 동일한 시노님 이름 사용으로 코드 일관성 유지

10. SYNONYM 사용 시 주의사항

  • PUBLIC SYNONYM은 충돌을 방지하기 위해 신중하게 사용
  • 의존 객체가 삭제되면 시노님은 깨진 상태로 남음 (ORACLE-00980 오류 발생 가능)
  • 뷰나 프로시저 내에서 사용 시, 시노님 변경이 전체 영향을 줄 수 있음
  • 스키마가 다른 동일 객체명이 있을 경우, 시노님 우선순위에 주의

11. VIEW vs SYNONYM

항목 VIEW SYNONYM
정의 대상 SELECT 결과 집합 모든 SQL 객체 (테이블, 뷰 등)
데이터 보유 없음 (가상 테이블) 없음 (단순 별칭)
작성 목적 복잡한 쿼리 단순화 접근 경로 단축
DML 지원 조건부 지원 원본 객체에 따라 결정

12. 결론

Oracle SYNONYM은 단순한 별칭 기능을 넘어, 객체 구조의 추상화와 SQL 코드의 유지보수성 향상에 매우 유용한 기능입니다. 특히 대규모 시스템에서 모듈 간 객체 참조를 단순화하고, 객체 이름 변경이나 스키마 구조 변경에 유연하게 대처할 수 있는 강력한 수단입니다.

출처

728x90