레이블이 DatabaseLink인 게시물을 표시합니다. 모든 게시물 표시
레이블이 DatabaseLink인 게시물을 표시합니다. 모든 게시물 표시

2021년 11월 20일 토요일

오라클 데이터베이스 링크(Oracle Database Links)란?

 

오라클 데이터베이스 링크(Oracle Database Links)란?


http://ojc.asia/bbs/board.php?bo_table=LecOracle&wr_id=292 


오라클 데이터베이스 링크(Oracle Database Links)란?

오라클 데이터베이스 링크(Oracle Database Links)란?데이터베이스 링크database links는 다른 데이터베이스에 접근할 수 있도록 하는 스키마 객체schema objects로 원격 데이터베이스의 테이블 또는 뷰를 접

ojc.asia

 

데이터베이스 링크database links는 다른 데이터베이스에 접근할 수 있도록 하는 스키마 객체schema objects로 원격 데이터베이스의 테이블 또는 뷰를 접근하기 위해 실무에서도 많이 사용하고 있습니다. 여기서 원격의 DB는 반드시 오라클일 필요는 없지만 비 오라클 데이터베이스에 접근 하려면 오라클의 이기종 서비스를 사용해야 합니다.

 

모든 사용자가 사용할 수있는 공용public 데이터베이스 링크와 데이터베이스 링크를 만든 계정에서만 사용할 수 있는 전용private 데이터베이스 링크가 있습니다.

 

데이터베이스 링크는 로컬 데이터베이스에 연결된 클라이언트가 로컬 데이터베이스에 저장된 데이터베이스 링크를 사용하여 원격 데이터베이스의 테이블, 뷰에 액세스 할 수 있는데 SQL문에서 테이블 또는 뷰 이름에 @dblink이름을 추가하여 다른 데이터베이스의 테이블 또는 뷰를 참조 할 수 있습니다. 

 

SELECT 문을 사용하여 다른 데이터베이스의 테이블이나 뷰를 쿼리 할 수 ​​있고 INSERT, UPDATE, DELETE문을 사용하여 원격 테이블 및 뷰에 액세스 할 수도 있습니다.

 

원격 데이터베이스에 대해 ORCL2라는 데이터베이스 링크를 생성하였다면 이를 이용하여 원격 데이터베이스의 테이블 또는 뷰에 액세스 접근할 수 있습니다.

 

EMP@ORCL2라는 형식으로 원격 데이터베이스의 EMP 테이블의 데이터를 쿼리할 수 ​​있습니다.

 

SELECT * FROM EMP@ORCL2;

 

데이터베이스 링크를 통해 원격 테이블 또는뷰에 접근할 때 현재의 로컬 데이터베이스는  오라클 클라이언트 역할을 합니다.

 

또한 동의어synonyms를 사용하여 데이터베이스 링크를 통해 테이블에 접근하기위한 구문을  단순화 할 수 있습니다.

 

CREATE SYNONYM REMOTE_EMP FOR EMP@ORCL2;

 

그리고 데이터베이스 링크가 있는 원격 테이블 이름 대신 동의어를 사용합니다.

 

SELECT * FROM REMOTE_EMP;

 

[기본형식]

CREATE [PUBLIC] DATABASE LINK [schema.]db_link_name
CONNECT TO user_name IDENTIFIED BY password
USING connect_string

  • PUBLIC : 공용 데이터베이스 링크를 정의하며 생략하면 전용 데이터베이스 링크를 정의합니다.
  • db_link_name : 데이터베이스 링크 이름
  • user_name : 원격 데이터베이스에 접속하기 위한 사용자 계정
  • password : 원격 데이터베이스에 접속하기 위한 사용자의 비밀번호
  • connect_string : 원격 데이터베이스에 접근하기 위한 연결 문자열 또는 tnsnames.ora 파일에 정의된 TNS이름

 

실제 물리적으로 원격 데이터베이스를 구성하기는 힘들어 원격 데이터베이스와 같은 역할을 데이터베이스를 오라클 Database Configuration Asistant로 로컬 PC에 추가로 생성을 하고 이를 원래 실습하던 계정(scott)에서 데이터베이스 링크를 생성하여 추가한 원격 데이터베이스의 테이블을 쿼리해 보겠습니다.

실습

 

1. 실습을 의해 로컬 PC에 데이터베이스를 추가로 생성 합니다.

 

시작 >> Oracle - OraDB19Home1 >> Database Configuration Assitant 를 선택하고 orcl2 라는 이름의 데이터베이스를 생성 합니다.

 

 

전역 데이터베이스 이름을 “orcl2”로 부여하였습니다. 관리비밀번호는 적당히 입력을 하고 컨테이너 데이터베이스 생성읠 체크를 해제 후 “다음”을 클릭 합니다. 관리자 비밀번호는 꼭 기억을해 주세요. 원격 DB에서 사용자를 생성하기 위해 관리자 계정으로 접근할 때 필요 합니다.

 

 

“완료”를 클릭하여 데이터베이스를 생성 합니다.

 

2. SQL Developer에서 추가로 생성한 ORCL2 데이터베이스의 관리자 계정(SYSTEM/관리자비밀번호)으로 로그인을하여 scott 이라는 사용자를 생성하고 EMP 테이블을 생성 후 데이터를 입력합니다.

 

 

새로운 연결의 이름을 orcl2로 했고 사용자이름은 데이터베이스 관리자인 system 그리고 이전에 DB 생성시 부여한 관리자 비밀번호를 입력 후 아래쪽 SID에 orcl2 라고 입력합니다. 다 입력하셨으면 “접속”을 클릭 합니다.

 

scott이라는 사용자를 생성 합니다.(비밀번호 소문자 tiger로 부여 했습니다.)

오라클 11g 이후부터 기본적으로 비밀번호의 대소문자는 구별 합니다.

 

오라클 12C 이후부터 계정 앞에 c## 키워드를 붙이도록 규칙이 바뀌었는데 이를 사용하지 않기 위해서는 ALTER SESSION SET "_ORACLE_SCRIPT"=TRUE로 해야 합니다. 아래 명령을 차례로 실행하세요.

 

SCOTT 사용자를 생성하면서 비밀번호는 tiger로 부여하세요. 사용자 생성 후 CONNECT, RESOURE 롤을 부여하고 사용자의 기본 테이블 스페이스를 USERS로 부여합니다. 또한 USERS 테이블스페이스에 대해 제한없이 사용할 수 있는 권한을 부여하세요.

 

ALTER SESSION SET "_ORACLE_SCRIPT"=TRUE;

CREATE USER scott IDENTIFIED BY tiger;

GRANT CONNECT, RESOURCE TO scott;

ALTER USER scott DEFAULT TABLESPACE USERS QUOTA UNLIMITED ON USERS;

 

<실행결과>

Session이(가) 변경되었습니다.

User SCOTT이(가) 생성되었습니다.

Grant을(를) 성공했습니다.

User SCOTT이(가) 변경되었습니다.

 

SQL Developer에서 추가한 원격 DB의 SCOTT 계정으로 새로운 연결을 하나 만들고 접속해 보겠습니다. 좌 상단의 + 버튼을 클릭하여 접속정보를 입력 합니다.


 

Name은 임의로 orcl2_scott 이라고 했습니다. 

사용자 이름은 scott, 비밀번호는 tiger, 아래의 SID는 orcl2라고 입력 후 “접속” 버튼을 클릭 하면 접속이 됩니다. 열려진 질의 탐색기 창에서 테이블을 생성하고 데이터를 한건 입력 하겠습니다.

 

empno(PK), ename 2개의 컬럼을 가지는  EMP 테이블을 생성 후 데이터를 한건 입력하세요.

 

CREATE TABLE EMP (

    EMPNO NUMBER PRIMARY KEY,

    ENAME VARCHAR2(50)

);

 

INSERT INTO EMP (EMPNO, ENAME) VALUES (1, '1길동');

COMMIT;

 

<실행결과>

Table EMP이(가) 생성되었습니다.

1 행 이(가) 삽입되었습니다.

커밋 완료.





추가로 설치한 데이터베이스에 scott 이라는 사용자를 생성하고 그 안에 EMP 테이블을 만들고 데이터를 한건 입력 했습니다.

 

이제는 원래 사용하던 데이터베이스 ORCL의 scott 계정으로 돌아와서 추가로 설치한 원격 데이터베이스인 ORCL2에 대해 데이터베이스 링크를 생성하고 EMP 테이블을 쿼리한 후 동의어를 만들어서도 쿼리해 보겠습니다.

실습

 

SQL Developer에서 원래 접속했던 데이터베이스인 ORCL로 scott 계정(비밀번호는 소문자 : tiger)으로 접속을 하겠습니다.

 

 

접속을 한후 데이터베이스 링크를 생성 합니다.

 

원격 DB ORCL2의 scott 계정에 대한 데이터베이스 링크 ORCL2를 생성하세요.

 

CREATE DATABASE LINK ORCL2 CONNECT TO scott IDENTIFIED BY "tiger"

USING '(DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = ORCL2)

    )

)';



<실행결과>

Database link ORCL2이(가) 생성되었습니다.

 

SERVICE_NAME에는 추가로 만든 데이터베이스의 전역 데이터베이스 이름인 ORCL2를 입력했고 HOST에는 로컬 PC에 DB를 설치했으므로 localhost라고 했습니다. 위의 CONNECT TO 절에는 ORCL2 데이터베이스의 사용자 계정 및 비밀번호를 기술 합니다. CREATE 다음에 PUBLIC 키워드를 사용해서 데이터베이스 링크를 만들면 공용으로 만들어 모든 사용자들이 이용할 수 있습니다.

 

데이터베이스 링크는 원격 DB의 IP 또는 HOSTNAME, 접속하고 싶은 사용자 계정 정보를 가지고 있는 스키마 오브젝트 입니다. 그래서 접근하고 싶은 테이블을 기술할 때는 테이블명@DB링크명 으로 작성 합니다.

 

scott 사용자의 EMP 테이블을 SELECT 해 보겠습니다.

 

데이터베이스 링크를 사용하여 원격 데이터베이스 ORCL에서 scott 사용자의 EMP 테이블을 SELECT 하세요.

 

SELECT * FROM EMP@ORCL2;

 

<실행결과>

 EMPNOENAME
111길동

 

원격 데이터베이스의 EMP 테이블의 내용이 잘 조회 됩니다.^^

 

데이터베이스 링크 EMP@ORCL2에 대해 동의어를 만들어서 쿼리해 보겠습니다.

실습

 

동의어를 생성 합니다.

 

EMP@ORCL2에 대한 동의어 ORCL2를 생성하세요.

 

CREATE SYNONYM ORCL2_SCOTT_EMP FOR EMP@ORCL2;

 

<실행결과>

Synonym ORCL2_SCOTT_EMP이(가) 생성되었습니다.

 

원격 데이터베이스 scott 사용자의 EMP 테이블을 SELECT 해 보겠습니다.

 

동의어를 사용하여 원격 데이터베이스 scott 사용자의 EMP 테이블을 SELECT 하세요.

 

SELECT * FROM ORCL2_SCOTT_EMP;

 

<실행결과>

 EMPNOENAME
111길동



원격 데이터베이스 scott 사용자의 테이블을 접근하기 위한 데이터베이스 링크 ORCL2를 삭제합니다.

 

데이터베이스 링크 ORCL2를 삭제하세요.

 

DROP DATABASE LINK ORCL2;

 

<실행결과>

Database link ORCL2이(가) 삭제되었습니다.

 

이전에 작성한 동의어 ORCL2_SCOTT_EMP를 삭제 합니다.

 

동의어 ORCL2_SCOTT_EMP를 삭제하세요.

 

DROP SYNONYM ORCL2_SCOTT_EMP;

 

<실행결과>

Synonym ORCL2_SCOTT_EMP이(가) 삭제되었습니다.

 

https://www.youtube.com/playlist?list=PLxU-iZCqT52Dlz0zGgFiq1mBz21arFUHS


오라클 SQL 기본


www.youtube.com


#오라클교육, #ORACLE교육, #데이터베이스링크, #DBLINK, #DB링크, #DatabaseLink, #오라클, #ORACLE​

오라클교육, ORACLE교육, 데이터베이스링크, DBLINK, DB링크, DatabaseLink, 오라클, ORACLE​ 

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...