본문 바로가기
Database/Oracle

[ORACLE] SYN 시노님 완전 가이드 : 구조 사용법 실무 적용까지

by Papa Martino V 2025. 7. 30.
728x90

SYN 시노님 완전 가이드 : 구조 사용법 실무 적용까지
[ORACLE] SYN

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