디비 링크를 만들어서 다른 PDB에 접근하는 원격 Dependencies 대해서 알아보겠습니다.
To read from remote DB, the DBA should create Database link.
So the DBA will create link in orclpdb that read newd database
create public database link READ_REMOTE
connect to ict
identified by ict
using ‘newd';
Now when user HR (orclpdb) need to query table from ict(newd):
select * from table_name@database_link_name
Example : select * from students@READ_REMOTE;
기본구조는 orclpdb 내부에 있는 사용자 hr 에서 다른 pdb 인 "newd" 내부에 있는 객체를 접근하는 구조입니다.
다음과 같은 절차를 통해서 위의 그림과 같은 테스트 환경을 구성하고 테스트해 보겠습니다.
1. 새로운 pluggable db 를 만들기
2. 새로운 pdb 내부에 사용자 생성
3. 디비 링크 생성
1- We will create new pluggable database called (newd )
we will use Database Configuration Assistant (DBCA)
2- We will create new user called (ICT ) inside the new pluggable database (newd)
create user ict identified by ict;
grant create session to ict;
grant connect to ict;
grant create table to ict;
grant create procedure to ict;
grant create view to ict;
GRANT UNLIMITED TABLESPACE TO ict;
3- We will create database link from orclpdb to read the new pluggable database (newd)
create public database link READ_REMOTE
connect to ict
identified by ict using 'newd';
실제로 구현은 아래와 같이 하면 됩니다.
1. 새로운 디비 생성 - 리눅스 os 사용자는 oracle 임, 오라클 인스턴스와 리스너 모두 실행중인 상태임
비번을 입력할때 오라클 표준방식의 비밀번호 조합을 사용하지 않는다는 경고 문구가 나오지만 무시하고 진행하면 됨
설치가 완료됨
설치가 결과는 아래처럼 확인 가능하다, 2개의 PDB가 실행중이고 상태는 read/write 가능 상태이다.
[oracle@test ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Fri May 31 16:34:17 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> show con_name;
CON_NAME
------------------------------
CDB$ROOT
SQL>
SQL>
SQL> select name,open_mode from v$pdbs;
NAME OPEN_MODE
--------------- ----------
PDB$SEED READ ONLY
ORCLPDB READ WRITE
NEWD READ WRITE
SQL> alter session set container=newd;
Session altered.
SQL> show con_name;
CON_NAME
------------------------------
NEWD
SQL>
"newd" 에서 새로운 사용자 생성 및 권한 추가
-- sysdba 권한으로 아래 명령어 실행
SQL> create user ict identified by ict;
User created.
SQL> grant create session to ict;
Grant succeeded.
SQL> grant connect to ict;
Grant succeeded.
SQL> grant create table to ict;
Grant succeeded.
SQL> grant create procedure to ict;
Grant succeeded.
SQL> grant create view to ict;
Grant succeeded.
SQL> GRANT UNLIMITED TABLESPACE TO ict;
Grant succeeded.
SQL>
SQL>
tnsnames.ora 파일 수정 - 서버사이드와 리모트 사이드, 모두 수정해야 함(tnsnames.ora 파일을 사용하지 않는다면 안해도 됌).
서버의 tnsnames.ora 파일 수정
리모트 쪽 수정 - 각 환경에 따라서 host 이름이나 포트 등의 정보는 다를수 있다.
ORCLPDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle88)(PORT = 1529))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orclpdb.com)
)
)
NEWD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle88)(PORT = 1529))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = newd.com)
)
)
로그인 테스트 - 서버에서 로그인 확인, 새로운 테이블 생성 및 데이터 입력
[oracle@test ~]$ sqlplus ict/ict@newd
SQL*Plus: Release 19.0.0.0.0 - Production on Fri May 31 16:58:26 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Last Successful login time: Fri May 31 2024 16:57:53 +01:00
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL>
-- 테이블 생성, 데이터 입력
SQL> create table emp (empno number);
Table created.
SQL> insert into emp values (1);
1 row created.
SQL> commit;
Commit complete.
SQL>
로그인 테스트 - 리모트에서 로그인 확인
디비 링크 생성 - sysdba 사용자로 로그인해서 컨테이너 이름을 orclpdb 로 변경한 후에, 디비 링크를 생성해야 한다.
[oracle@test admin]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Fri May 31 17:03:14 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> alter session set container=orclpdb;
Session altered.
SQL> show con_name;
CON_NAME
------------------------------
ORCLPDB
SQL>
--sysdba 유저가 orclpdb 에서 디비 링크를 생성해야 한다
SQL> create public database link READ_REMOTE
connect to ict
identified by ict using 'newd'; 2 3
Database link created.
SQL>
리모트 테이블 조회 테스트 - hr 사용자로 orclpdb 에 접속해서 디비링크를 통해서 newd 내부의 테이블 조회
SQL> conn hr/hr@orclpdb
Connected.
SQL> select * from emp@read_remote;
EMPNO
----------
1
SQL>
'Database > PLSQL' 카테고리의 다른 글
118 - [Oracle PL/SQL] Remote Dependencies - Signature mode (0) | 2024.06.02 |
---|---|
117 - [Oracle PL/SQL] Remote Dependencies - Time stamp (0) | 2024.06.01 |
115 - [Oracle PL/SQL] Dependencies - Reducing invalidation (0) | 2024.05.21 |
114 - [Oracle PL/SQL] Dependencies - Impact on the Package (0) | 2024.05.21 |
113 - [Oracle PL/SQL] Dependencies - Impact on the Package (0) | 2024.05.21 |