ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQL_SYNONYM 생성/삭제 & DATA DICTIONARY
    Data Base_Oracle/SQL 2020. 1. 10. 16:31

    SYNONYM 생성_PRIVATE

    동의어를 생성하기 위해서는 관리자로부터
    create synonym 권한을 부여받아야 함

    § 형식

    [ SQL> create synonym 동의어이름 for 대상객체명(=테이블명); ]

    # 예제

    ▶ b_dept2에 buser라는 동의어 생성
    [ SQL> create synonym buser for b_dept2;
    동의어가 생성되었습니다.
    select * from tab; ]

    TNAME TABTYPE CLUSTERID
    BUSER SYONONYM  
    ... ... ...

    ▷ buser 테이블 확인
    [ SQL> select * from buser; ]

    DEPTNO DNAME LOC
    10 ACCOUNTING NEW YORK
    20 RESEARCH DALLAS
    30 SALES CHICAGO
    40 OPERATIONS BOSTON
    50 SUPPORT KWANGJU

    ▷ buser 테이블에서 부서번호가 50인 레코드 삭제
    [ SQL> delete from buser where deptno=50;
    1 행이 삭제되었습니다.
    select * from buser ;
    select * from b_dept2; ]

    DEPTNO DNAME LOC
    10 ACCOUNTING NEW YORK
    20 RESEARCH DALLAS
    30 SALES CHICAGO
    40 OPERATIONS BOSTON

    ※ buser에서 삭제한 내용이 b_dept2에도 반영됨
    즉, 동의어는 테이블의 별칭이라고 할 수 있음

    SYNONYM 생성_PUBLIC

    관리자가 만들어 주는 모든 계정에서 사용 가능한 공용 동의어

    § 형식

    [ SQL> create [public] synonym 동의어명 for 소유자명.테이블명; ]

     

    ※ 관리자가 특정 계정의 테이블에 접근할 권한을 임의로 줄 수 없기 때문에
    이미 소유자에 의해 권한이 부여된 상태여야 함

    # 예제

    ▷ 관리자 계정 로그인
    [ SQL> conn sys/##### as sysdba
    연결되었습니다. ]

     

    ▶ scott이 test1에 권한을 부여한 b_dept2 테이블에 공용 동의어 생성
    [ SQL> create public synonym butest for scott.b_dept2;
    동의어가 생성되었습니다. ]

     

    ▷ test1 계정에서 butest 동의어 확인
    [ SQL> select * from butest; ]

    DEPTNO DNAME LOC
    10 ACCOUNTING NEW YORK
    20 RESEARCH DALLAS
    30 SALES CHICAGO
    40 OPERATIONS BOSTON
    50 TEST SEOUL

    ※ scott 계정에서는 butest 동의어를 사용할 수 있지만
    test1 이외의 일반 계정은 scott에게 권한을 부여받지 않았기 때문에 사용 불가

    SYNONYM 삭제

    권한이 회수되어도 동의어가 자동으로 삭제되지는 않기 때문에
    수동으로 삭제 해주어야 함

    § 형식

    private synonym 삭제
    [ SQL> drop synonym 동의어명; ]

     

    public synonym 삭제
    [ SQL> drop [public] synonym 동의어명; ]

    # 예제

    ▶ test1 계정에서 buser2 동의어 삭제
    [ SQL> drop synonym buser2;
    동의어가 삭제되었습니다. ]

     

    ▷ test 1 계정에서 butest 공용 동의어 삭제
    [ SQL> drop synonym butest;
    1행에 오류:
    ORA-01434: 삭제할 비공개 동의어가 존재하지 않습니다 ]

     

    ※ butest는 sys계정에서 생성한 것이기 때문에 발생하는 에러
    sys계정으로 로그인해서 삭제해야함

    SYNONYM DATA DICTIONARY

    user_synonyms
    동의어 이름, 테이블 소유 계정, 테이블 이름, DB 링크 정보가 담겨 있는 Oracle 자체 테이블

     

    ▷ user_synonyms 구조 확인
    [ SQL> desc user_synonyms ]

    이름 널? 유형
    SYNONYM_NAME NOT NULL VARCHAR2(30)
    TABLE_OWNER   VARCHAR2(30)
    TABLE_NAME NOT NULL VARCHAR2(30)
    DB_LINK   VARCHAR2(128)

    ▷ user_synonyms 내용 확인
    [ SQL> select * from user_synonyms ]

    SYNONYM_NAME TABLE_OWNER TABLE_NAME DB_LINK
    BUSER SCOTT B_DEPT2  

    동의어의 생성/삭제 방법과 데이터 딕셔너리를 살펴보았습니다.

    동의어를 생성하면 다른 계정에서 사용을 허가받은 테이블의 이름을 편리하게 작성할 수 있습니다.

    'Data Base_Oracle > SQL' 카테고리의 다른 글

    SQL_PRIVILEGE 계정 관리 (2)  (0) 2020.01.10
    SQL_PRIVILEGE 개요 & 계정 관리 (1)  (0) 2020.01.10
    SQL_SYNONYM 개요 & 테이블 접근 권한 설정  (0) 2020.01.10
    SQL_SEQUENCE  (0) 2020.01.09
    SQL_INDEX  (0) 2020.01.09

    댓글

Designed by Tistory.