1. Synonym (동의어)
Oracle DBMS는 Synonym을 통해 다양한 user가 동일한 object를 바라보고 사용할 수 있게 해준다.
예를 들어 권한 분리를 위해 아래와 같이 5종류의 계정을 생성했다고 할때
SVC : 서비스의 모든 OBJECT를 소유하는 owner 계정
SVCONL : 서비스의 ONLINE 프로그램에서 접속해 사용하는 계정
SVCBAT : 서비스의 BATCH 프로그램에서 접속해 사용하는 계정
SVCSEL : 서비스의 SELECT 권한만 부여한 계정
SVCDML : 서비스의 DML 권한을 부여한 계정
SVC.TABLE1 을 SYNONYM으로 아래 DDL을 통해 SYNONYM을 생성한다면
CREATE PUBLIC SYNONYM TABLE1 FOR SVC.TABLE1;
모든 계정에서 SYNONYM을 통해 SVC.TABLE1 이 아니라 TABLE1 으로 접근 가능하다.
이는 SQL의 가독성을 확보해주기도 하고, 실제 OWNER를 숨길수도 있으며, 권한 관리를 용이하게 해주기도 한다.
https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/CREATE-SYNONYM.html
2. 존재하지 않는 Object에 대한 Synonym
DBA가 수행하는 자동화, 일반화하기 어려운 경우가 많다.
범용적으로 쓰이는 솔루션이라도 DB는 각 회사의 정책에 따라 Object 생성/관리를 다르게 하는 경우가 많고
수십년을 DBA로 일해도 상황에 따라 처음 DDL 을 수행하는 경우가 생길 수 밖에 없다.
그래서 결국 손으로 스크립트를 작성하고 이 과정에서 오타가 발생할 수 있는데
대부분의 DDL은 문법오류 발생으로 잘못된 스크립트를 인지할 수 있으나,
Synonym의 경우 존재하지 않는 Object에 대해서도 문법오류 없이 수행이 가능하다.
-- 만약 SVC.TABLE2가 존재하지 않더라도 아래 DDL은 문제 없이 수행된다.
CREATE PUBLIC SYNONYM TABLE1 FOR SVC.TABLE2;
당연히 스크립트를 작성할때 주의하고, 크로스 체크를 해야겠지만
Synonym의 DDL 작성시에 특히 주의해야한다.
출처 :
'데이터 사이언스 DataScience > Data Base 데이터베이스' 카테고리의 다른 글
[Oracle] DDL 중 발생하는 ORA-00054 해결 (0) | 2024.05.31 |
---|---|
[Oracle] 기존 패스워드로 ALTER (0) | 2023.11.29 |
[Oracle] SYS.SYS_HUB DB LINK (0) | 2023.05.04 |
[Oracle] 계층형 쿼리 Hierarchical Queries (0) | 2023.05.03 |
Amazon RDS for Oracle Immersion Day (0) | 2023.05.02 |