1) ================================================
* 개념 *
데이터베이스 링크는 클라이언트 또는 현재의 데이터베이스에서 네트워크상의 다른 데이터베이스에
접속하기 위한 접속 설정을 정의하는 오라클 객체 이다.
그럼 데이터베이스 링크를 걸어보도록 하자.
1. 먼저 특정유저로 접속후 데이터베이스 링크를 만든다.
SQL> connect scott/tiger
create database link 링크이름
connect to 계정이름
identified by 패스워드
using '서비스이름';
SQL> create database link cent_link
connect to scott
identified by tiger
using 'cent212';
2. DBLINK 가 정상적으로 질의 되는지 확인한다.
SQL> select * from emp@cent_link;
ps) 만약 SYNONYM 을 걸었 두었을 경우 뒤의 @cent_link 는 제외해도 된다.
SQL> create synoym emp for emp@cent_link;
SQL> select * from emp;
===========================================================
여기서 cent212의 service_name 은 클라이언트의 tnsnames.ora 에 아래와 같이 설정되어 있어야 함
cent212 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL=TCP)(HOST=192.168.1.212)(PORT=1521)
) )
(CONNECT_DATA =
(SERVICE_NAME=cent212))
)
=========================================================
3. 만약 유저별로 데이터베이스링크를 사용할경우 데이터베이스 링크에서 사용된 계정 사용자가 패스워드를 변경하게 되면 모든 사용자가 각각의 데이터베이스링크에서 패스워드를 모두 변경해야 하는 단점이 있다.
이런 단점을 보완하기 위하여 view 를 생성하여 모두 데이터베이스링크를 사용할 필요 없이 view 를 이용하고, 패스워드 변경할 경우에는 데이터베이스링크만 새로 생성하면 모든 사용자가 패스워드 변경없이 접속이 가능하다.
create view 뷰이름
as select * from
테이블@링크이름
SQL> create view cent_view
as select * from
emp@cent_link
4. 접근하려는 계정에게 권한을 할당해준다.
grant select on 뷰이름 to 계정,계정
SQL>grant select on cent_view to ryu, rchwin
5. 질의확인
select * from 계정이름,뷰이름
-> select * from scott.cent_view;
* 만약 link 를 걸지 않은 상태에서 질의를 할경우 아래와 같은 에러가 발생한다.
SQL> select * from emp@cent_link;
select * from emp@cent_link
*
ERROR at line 1:
ORA-02019: connection description for remote database not found
6. dictiony 조회를 통회 dblink 가 정상적으로 생성되었는지 확인할수 있다.
전체 DBLINK 를 볼때 - SYSTEM 권한의 DBA_DB_LINKS
유저별 DBLINK 를 볼때 - USER_DB_LINKS
OWNER DB_LINK USERNAME HOST CREATED
------------------------------ ------------------------------ ------------------------------ ------------------------------ --------------
SCOTT cent_link scott cent212 03-JAN-2008
[출처] DB link 문의 (ProDBA) |작성자 흥이
출처 : http://cafe.naver.com/prodba.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=7634%26sc=e0d63018014b299a0d%26query=%BF%C0%B6%F3%C5%AC+dblink+USER_DB_LINKS%26clubid=12321220
===================================================
===================================================
2) =================================================
만일 tnsname을 to_8i 로 설정하고 scott 유저로 접속하고자 할때.
다음과 같이 db link를 생성합니다.
create database link to_8i connect to scott identified by tiger
using 'to_8i'
위 구문에 using 'to_8i' 라고 있는데
tnsnames.ora 파일에 to_8i의 설정이 있어야 한다.
db link 는 to_8i의 프로퍼티 즉sid 나 호스트네임을 참조한다.
여기서 connect to ~ indentified by ~ 절은 두서버간의 유저와 패스워드가 같다면
생략가능합니다.
select * from emp@to_8i; 하셔서 정상적으로 나오면 성공입니다.
synonym 을 생성하면 더 편하겠죠?
create synonym emp for emp@to_8i;
이렇게 하면 select * from emp; 처럼 쓰실수 있습니다.
그러나 9i하고 8i과 같이 버전이 차이가 날땐 약간의 문제가 발생할 수도 있습니다.
예를 들면
long type dblink시에는 약간의 문제가 있으나
8.1.7.3 버전에서는 이문제가 해결되었다고 하네요.
==db links 조회
==USER ACCOUNT
SELECT * FROM USER_DB_LINKS
--DBA ACCOUNT
SELECT * FROM DBA_DB_LINKS
[출처] 오라클 DBLINK|작성자 쿨
출처 : http://blog.naver.com/restrust?Redirect=Log&logNo=50008862804
====================================================
====================================================
3)===================================================
1. 서비스 NAME과 link할 table의 user/passwd 알아야함.
2. 일단 DB링크를 건 시스템에서 sys나 system 계정으로 로그인이 가능하면
dba_db_links 테이블로 모든 db link를 조회할 수 있고..
만약 특정 유저로만 접근이 가능하면 user_db_links 테이블을 조회
DB 링크 거는 방법
CREATE {PUBLIC} DATABASE LINK {dblink_name}
CONNECT TO {user_id}
IDENTIFIED BY {password}
USING '{sid}'
PUBLIC : 생성한 사용자 만이 아닌 다른 모든 유저들이 사용할 수 있도록 지정
dblink_name : 생성하고자 하는 DB LINK 명
user_id : 연결하고자 하는 서버의 오라클 계정
password : 해당 오라클 계정의 비밀번호
sid : 서버의 tnsnames.ora에 정의되어 있는 서비스명
EX) TNSNAMES.ORA
CLAY9I = (DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL=TCP)(HOST=???.???.???.???)(PORT=1521))
)
(CONNECT_DATA=(SID=ORCL)
))
CREATE DATABASE LINK tsever
CONNECT TO orasys IDENTIFIED BY orapw
USING 'CLAY9I'
만약 sys나 system이 아닌 일반 유저로 link를 걸기 위해서는
GRANT CREATE DATABASE LINK to 유저명;
으로 미리 권한을 생성해 주신 후 만드셔야합니다.
3. 접근 : SELECT * FROM [table_name]@dblink_name
4. DBLINK 확인
SELECT * FROM DBA_DB_LINKS;
[출처] [오라클]DB link 생성, 확인|작성자 skylapunjel
출처 : http://blog.naver.com/skylapunjel?Redirect=Log&logNo=150124173289
=====================================================
=====================================================