Oracle DBLInk 사용

Oracle DBLINK
역할: 여러 지역 의 서버 의 Oacle 데이터 베 이 스 를 논리 적 으로 하나의 데이터 베이스 로 봅 니 다. 즉, 하나의 데이터 베이스 에서 다른 원 격 데이터 베이스 의 대상 을 조작 할 수 있 습 니 다.문법: CREATE [PUBLIC] DATABASE LINK dblink CONNECT to user IDENTIFIED BY password Using 'connectstring’; DROP [PUBLIC] DATABASE LINK dblink; 메모: CREATE DATABASE LINK 또는 CREATE PUBLIC DATABASE LINK 권한 (sys 신분 으로 할당 가능) 이 있어 야 합 니 다. 또한 연결 할 데이터베이스 에 있 는 권한 이 있어 야 합 니 다. grant CREATE DATABASE LINK to hr;
매개 변수 설명: dblink: 당신 이 만 든 database link 의 이름, user 와 password: 연결 할 데이터베이스 의 사용자 이름과 비밀번호 connectstring: Net Manager 설정 (tnsnames. ora) 을 거 쳐 테스트 를 통 해 연결 할 수 있 는 서비스 이름 일 수도 있 지만 tnsnames 에 있 는 문자열 을 직접 사용 할 수도 있 습 니 다. (DESCRIPTION =
(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = even.oracle.com)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME =orcl) )
SHOW PARAMETER GLOBAL NAMES 를 통 해 FALSE 나 TRUE 값 을 확인 할 수 있 습 니 다.
1) GLOBAL NAMES = FALSE 의 경우 DBLINK 의 이름 을 사용자 정의 할 수 있 습 니 다. 관련 과정 은 다음 과 같 습 니 다. 로 컬 데이터베이스 에서 원 격 데이터베이스 서버 로 연결 하 는 것 을 실현 합 니 다. 원 격 서버 는 감청 을 설정 하고 로 컬 서버 를 시작 하려 면 tnsnames 를 설정 해 야 합 니 다.
로 컬 서버 에서 원 격 서버 데이터베이스 에 연결 하기:
로 컬 데이터베이스 에 연결 을 만 듭 니 다: 1. 링크 문자열 즉 서비스 이름 입 니 다. 먼저 로 컬 에 서비스 이름 을 설정 합 니 다. 주 소 는 원 격 데이터베이스 주 소 를 가리 키 며, 당연히 직접 작성 한 연결 문자열 입 니 다. 2. 데이터베이스 링크 를 만 듭 니 다 (해당 권한 이 할당 되 었 음 을 전제 로 합 니 다). SQL > grant CREATE DATABASE LINK to hr;
Grant succeeded.
SQL> CREATE DATABASE LINK LinkRemoteTestDB CONNECT TO hr IDENTIFIED BY hr USING ‘test’;
Database link created.
물론 연결 문자열 SQL > create database link LinkRemoteTestDB 2 connect to hr identified by hr using 'TEST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = even. oracle. com) (PORT = 1521) (CONNECT DATA = (SERVER = DEDICATED) (SERVICE NAME = test))'; hr 사용자 와 TEST 데이터 베 이 스 를 연결 하 는 링크 링크 RemoteTestDB 를 만 들 었 습 니 다.
3. database link 를 사용 하여 원 격 HR schema 의 testdlink 표 정 보 를 조회 합 니 다 SQL > select * fromtestdblink@LinkRemoteTestDB;
    ID NAME
     1 Watson
     2 John

실행 을 통 해 select * fromtestdblink@LinkRemoteTestDB테스트 결과 OK
2) GLOBAL NAMES = TRUE 의 경우 데이터베이스 링크 (DATABASE LINK)데이터베이스 이름과 이름 이 같 아야 합 니 다. 로 컬 서버 에서 GLOBAL NAMES = TRUE: SQL > ALTER SYSTEM SET GLOBAL NAMES = TRUE 를 실행 하고 다시 조회 할 때 다음 과 같은 오류 가 발생 합 니 다. SQL > select * fromtestdblink@LinkRemoteTestDB; select * from testdblink@LinkRemoteTestDB * ERROR at line 1: ORA-02085: database link LINKREMOTETESTDB.REGRESS.RDBMS.DEV.US.ORACLE.COM connects to TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM
원 격 데이터 베 이 스 를 로그 인하 여 SQL > SELECT * FROM GLOBAL NAME 를 실행 합 니 다. 데이터베이스 의 전체 이름 을 TEST. REGRESS. RDBMS. DEV. US. ORACLE. COM 으로 원 격 SQL > CREATE DATABASE LINK Link RemoteTestDB CONNECT TO hr IDENTIFIED BY hr USING 'test' 를 실행 합 니 다. 생 성 과정 은 오류 가 없 지만 'select * from
testdblink@LinkRemoteTestDB"이 럴 때 ORA - 02085: database link LINKREEMOTETESTDB. REGRESS. RDBMS. DEV. US. ORACLE. COM connects to TEST. REGRESS. RDBMS. DEV. US. ORACLE. COM 의 오류 가 발생 했 기 때문에 아래 의 방식 으로 DBLINK: SQL > create database link TEST. REGRESS. RDBMS. DEV. US. ORACLE. COM connect to HR identified by HR using 'TEST' 를 만들어 야 합 니 다.
데이터베이스 링크 가 생 성 되 었 습 니 다. SQL 을 다시 실행 > select * [email protected];
    ID NAME
     1 Watson
     2 John

SQL> UPDATE [email protected] t set t.name=‘WatsonModified’ where id=1;
1 row updated.
SQL> select * from [email protected];
    ID NAME
     1 WatsonModified
     2 John

실행 에 성 공 했 습 니 다!!!!
DBLINK 기타 관련 지식: 1. 모든 데이터베이스 링크 SQL > selectowner, object name from dba objects where object type = 'DATABASE LINK', SQL > select * from dba db links;
2. 데이터베이스 연결 SQL > drop database link LinkRemoteTestDB 를 삭제 합 니 다.
Database link dropped. - - - - 저작권 성명: 본 고 는 CSDN 블 로 거 'waterxcfg 304' 의 오리지널 글 입 니 다. CC 4.0 by - sa 저작권 협의 에 따라 원문 출처 링크 와 본 성명 을 첨부 하 십시오.https://blog.csdn.net/waterxcfg304/article/details/8494463

좋은 웹페이지 즐겨찾기