Oracle SQL 강좌
SYNONYM(동의어) 24 34 99,999+

by 김정식 SYNONYM 동의어 시노님 CREATE SYNONYM [2002.01.20]


시노님은 오라클 객체(테이블, 뷰, 시퀀스, 프로시저)에 대한 대체이름(Alias)를 말하며, 실질적으로 그 자체가 객체가 아니라 객체에 대한 직접적인 참조 이다.

시노님을 사용하는 이유

① 데이터베이스의 투명성을 제공하기 위해서 사용 한다고 보면 된다. 시노님은 다른 유저의 객체를 참조할 때 많이 사용을 한다.

② 만약에 실무에서 다른 유저의 객체를 참조할 경우가 있을 때 시노님을 생성해서 사용을 하면은 추후에 참조하고 있는 오프젝트가 이름을 바꾸거나 이동할 경우 객체를 사용하는 SQL문을 모두 다시 고치는 것이 아니라 시노님만 다시 정의하면 되기 때문에 매우 편리 하다.

③ 객체의 긴 이름을 사용하기 편한 짧은 이름으로 해서 SQL코딩을 단순화 시킬 수 있다.

④ 또한 객체를 참조하는 사용자의 오브젝트를 감추 수 있기 때문에 이에 대한 보안을 유지할 수 있다. 시노님을 사용하는 유저는 참조하고 있는 객체를에 대한 소유자, 이름, 서버이름을 모르고 시노님 이름만 알아도 사용 할 수 있다.

시노님을 사용하는 경우

객체의 실제 이름과 소유자 그리고 위치를 감춤으로써 데이터베이스 보안을 개선하는데 사용 한다

객체의 Public Access를 제공 한다

Remote 데이터베이스의 TABLE, VIEW, PROGRAM UNIT를 위해 투명성을 제공 한다.

데이터베이스 사용자를 위해 SQL 문을 단순화 할 수 있다.

시노님의 두 가지 종류

Private Synonym : 전용 시노님은 특정 사용자만 이용할수 있다.

Public Synonym : 공용 시노님은 공용 사용자 그룹이 소유하며 그 데이터베이스에 있는 모든 사용자가 공유 한다.

시노님 문법

  • - PUBLIC : 모든 사용자가 접근 가능한 시노님을 생성 한다.

시노님 예제

scott USER의 emp테이블을 test USER가 사용 하는 예제.

 
-- ① 먼저 scott/tiger USER로 접속해서 test USER에게 
--   emp 테이블을 조작할 권한을 부여합니다.
SQL> GRANT ALL ON  emp TO test; 

-- ② test USER로 접속해 동의어를 생성합니다. 
SQL> CONNECT test/test 
SQL> CREATE SYNONYM scott_emp FOR scott.emp ; 

-- scott USER가 소유하고 있는 emp 테이블에 대해 
   scott_emp라는 일반 시노님을 생성했다. 
-- scott 사용자의 emp테이블을 test 사용자가 
   scott_emp라는 동의어로 사용 합니다. 

-- ③ 시노님을 이용한 쿼리
SQL> SELECT empno, ename FROM  scott_emp; 

-- 일반 테이블을 쿼리
SQL> SELECT empno,  ename FROM  scott.emp; 
 이 두 쿼리의 결과는 같다. 

   EMPNO ENAME
-------- ---------
    7369 SMITH
    7499 ALLEN
...

-- ④ 동의어 삭제 
SQL> DROP SYNONYM scott_emp; 

-- 시노님을 이용한 조회
SQL> SELECT empno,  ename FROM  scott_emp; 
         라인 1 에 오류:
     ORA-00942: 테이블 또는 뷰가 존재하지 않습니다  
	

- 강좌 URL : http://www.gurubee.net/lecture/1038

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

by 매민 [2004.10.22 16:45:04]
와 다봤다.근데 모르겠다 -_-

by 웃음을잃어버린남자 [2004.10.29 15:04:42]
와 다봤다.
나도 모르겠네-_-

by 나그네 [2005.03.05 09:50:16]
scott USER가 소유하고 있는 emp 테이블에 대해 scott_emp라는 일반시노님을 생성했습니다. scott 사용자의 emp테이블을 test 사용자가 scitt_emp라는 동의어로 사용 합니다. -> 이 문장에서 scitt_emp -> scott_emp로 수정해야...^^;

by 김정식 [2005.03.16 10:10:24]
오타 수정했습니다. ^^

by 김영석 [2005.06.24 00:31:12]
공부 잘 했습니다.
감사합니다.

by 심심 [2005.06.30 17:15:24]
푸하항 쉽당...땡큐요...^^

by 푸하하 [2005.08.09 21:14:14]
아....다봤다.
나두 모르겠다...ㅡ,.ㅡ

by 푸우 [2005.09.05 18:28:39]
다 봤다..공부 좀 해야겠다.ㅋㅋ

by 김태정 [2005.09.09 12:23:30]
허얼. 메롱이다

by 꼬북이 [2005.09.09 12:24:20]
아이고 성님 오라글이 머에요?

by 배움이 [2005.10.13 09:13:11]
드뎌 다 봤는데...근데 뭘 배웠지?..ㅎㅎ
관리자님 좋은 정보 정말 감사합니다.

by 가로등 [2005.10.27 13:12:13]
잘 읽었습니다.
아직 안 찾아봤는데 고급 강좌도 있나요? ㅋ
너무 공짜만 좋아해서 머리 벗겨지는거 아닌지 모르겠네요.-_-;;
강좌 많은 도움이 도움이 되었습니다.
감사합나다..^^

by -_-;; [2005.11.09 15:09:41]
;; 모르겠다는 이유를 모르겠다는..__;;;;;;;
흐음;; 쉽잔아요;;

by smile [2005.11.09 20:34:15]
퍼갑니다. ^^

by ^^* [2006.01.05 10:57:05]
난 이제 시작인데.... 거꾸로 보는센스!

by ㅡ,.ㅡ; [2006.02.15 17:14:03]
머리 아프심 눈 아프심 ㅠㅠ

by 시근땀 [2006.03.20 20:11:20]
시노님은 누구에요? 신호님을 말하는건가?


by 장인저그 [2006.07.12 12:37:07]
A,B user가 있습니다 A user로 접속해서 B user가 가지고 있는 테이블등을 select하고싶습니다. 그럴 때 시노님을 생성해서 사용하더라구요~ 시노님이 없다면 user 계정을 바꿔서 접속해야 하잖아욤~^^

by Javakiller [2006.08.16 14:43:42]
select * from b.(b에 있는 테이블이름);
이렇게 하믄 안되나영-ㅁ-;

by 삼식이 [2006.08.20 04:07:40]
select * from b.test
위 테이블을 test로 시노님 생성했을 경우
그냥 select * from test
이렇게만 하면 되는데요...
밑에 있는게 더 간편하겠죠?

by 변원상 [2006.10.12 18:02:48]
이궁 Javakiller님 DB link가 걸린 Synonym의 경우 그런씩으로 접근 안되요.
걍 토달지말구 Synonym 쓰세요

by 히주꾸리 [2006.10.27 17:37:49]
오.. 다 보긴 다 봤는데... 기억이 하나도 안난다.. -ㅅ-

by 김종우 [2006.12.06 17:40:08]
퍼갑니다.

by 웅 [2007.04.30 11:22:13]
보안 상 시노임을 생성할 수 있다고했는데 해당 테이블사용권한을 주면 해당 테이블명으로 직접 엑세스 가능하지 않나요?


by darkturtle [2007.05.02 17:38:39]
또한 객체를 참조하는 사용자의 오브젝트를 감추 수 있기 때문에 이에 대한 보안을 유지할 수 있습니다.
!! 우선 Schema Owner 등을 감출수 있다는 의미로 파악 되네요
!! Object 에 대한 Full Path
!! 어차피 부여된 권한에 대해서는 어쩔수 없겠지요.

by 백가을 [2007.06.08 17:18:01]
시노님은 글머 일종의 table이나 object를 사용하는 별명인거죠

by 썬 [2008.08.14 11:03:58]
시노님 생성 문법에 SYNONYM 이 SYSNONYM으로 되어 있네요^^;

by 허브 [2008.12.03 15:50:24]
아 이제 sql하나를 한번 봤네요..
pl/sql, admin, oracle 10g도 모두 봐야하는데..
길게보고 이곳 강좌 3번도 보고 실습하면 좋을거 같아요^^
이거랑 wiki도 봐야하는데 ㅠㅠㅋ

by 양한마리 [2010.02.03 13:47:23]
쉬운 설명 감사합니다.

by 돌이맹이 [2012.02.28 15:21:41]
잘 봤습니다.

by 손님 [2013.02.08 09:54:44]

개념이 정리가 되네요 감사합니다.

by 손님 [2013.06.10 16:40:01]

정식이 덕분에
시험잘보겠다.

by 신화씨앤씨 [2014.02.19 21:28:13]

개념이 정리가 되네요 감사합니다

by 시정잡배 [2014.09.25 14:13:50]

좋은강의 잘 보고갑니다^^

감사합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입