2012-09-27 1 views
10

우리가 오라클 DBMS (11g) 다음과 같은 구성 :다른 스키마에있는 DBLINK를 사용하여 Oracle에서 선택하는 방법은 무엇입니까?

  • DB를 사용자 "참고 MyUser"
  • 두 스키마 "참고 MyUser"와 "SCHEMA_B"
  • 사용자 "참고 MyUser는"액세스 할 수 있습니다 "SCHEMA_B "그 테이블에 대한 읽기 권한이
  • 공공 DB 링크"SCHEMA_B "에있는"DB_LINK 직접 "
을 SCHEMA_B"는 DB 사용자를 사용할 때 DB_LINK가 작동
  • "

    질문 : "MYUSER"로 로그온 할 때 "SCHEMA_B"의 DB 링크를 사용하여 테이블에 액세스하는 올바른 구문은 무엇입니까? 전혀 그렇게 할 수 있습니까?

    select * from [email protected]"DB_LINK" 
    select * from [email protected]"SCHEMA_B"."DB_LINK" 
    select * from [email protected]_B."DB_LINK" 
    select * from [email protected]_B.DB_LINK 
    select * from [email protected]_LINK 
    select * from "SCHEMA_B"[email protected]_LINK 
    

    I 나타나는 오류 메시지는 다음과 같습니다 : ORA-02019

    는 이미 모두가 작동하지 않았다 몇 가지 별자리를 시도했다. 00000 - "원격 데이터베이스에 대한 연결 설명을 찾을 수 없습니다"

    어떤 의견을 보내 주셔서 감사합니다!

  • 답변

    11

    둘 이상의 사용자간에 데이터베이스 링크를 공유 할 수는 있지만 모든 사용자가 아닌 것은 아닙니다. 개인용 (한 사용자 전용) 또는 공용 (모든 사용자 용)입니다.

    좋은 방법은 데이터베이스 링크를 통해 액세스하려는 테이블을 노출하는 SCHEMA_B 뷰를 만드는 것입니다. 또한 뷰에 대한 액세스를 제어 할 수 있으므로 누가 데이터베이스 링크에서 누가 선택할 수 있는지 잘 제어 할 수 있습니다.

    은 다음과 같이 수행 모든 사용자가 'PUBLIC'지시어를 사용에

    create database link db_link... as before; 
    create view mytable_view as select * from [email protected]_link; 
    grant select on mytable_view to myuser; 
    
    +0

    데이터베이스 링크를 공유 할 수 있습니다. CREATE PUBLIC DATABASE LINK ... – Rusty1

    관련 문제