본문 바로가기

데이터 사이언스 DataScience/Data Base 데이터베이스

[Oracle] SYS.SYS_HUB DB LINK

 

1. 용도

SYS_HUB의 용도는 read only 인스턴스에서 수행된 DML 을 read write 인스턴스로 라우팅해주는 역할이다.

따라서, read only / read write 인스턴스를 따로 운영하는 환경이 아니면 불필요하고 DROP하더라도 영향도가 없다.

 

개인적인 생각으로 

read only / write 인스턴스를 분리해서 사용하는 경우라면, 

Oracle DBMS보다는 

MariaDB, PostgreSQL 등 오픈소스 DBMS를 사용하며 read replica를 scaling 하는게  

낫다고 생각한다.

 

오라클의 장점인 RAC 구성을 활용해 Multi write 인스턴스로 구성된 경우라면 

보안감사 때 이슈가 발생할 수 있으므로 삭제하는게 나을 것 같다.

 

 

2. DROP 하는 방법

1) Read Write 인스턴스인지 확인한다.

SQL> select instance_mode from v$instance;

INSTANCE_MO
-----------
REGULAR

SQL> show parameter instance_mode

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
instance_mode                        string      READ-WRITE

 

2) DROP 전에 DB LINK를 사용중인 OBJECT가 있는지 확인한다

SQL> SELECT o.owner , o.object_name , o.object_type
, o.status , o.created , o.last_ddl_time
FROM dba_objects o
, dba_dependencies d
WHERE o.owner = d.owner
AND o.object_name = d.name
AND o.object_type = d.type
AND d.referenced_owner = 'SYS'
AND d.referenced_name = 'SYS_HUB'
AND d.referenced_type = 'DATABASE LINK'
/

no rows selected

3) DROP 한다 (SYS 권한 필요)

SQL> drop database link sys_hub ;

Database link dropped.

 

3. CREATE 하는 방법

1) DBMS_PQ_INTERNAL 패키지, 패키지 바디가 있어야 생성 가능하다

SQL> select owner, object_name, object_type, status, created, last_ddl_time from dba_objects where object_name = 'DBMS_PQ_INTERNAL' and object_type in ('PACKAGE', 'PACKAGE BODY');

OWNER
--------------------------------------------------------------------------------
OBJECT_NAME
--------------------------------------------------------------------------------
OBJECT_TYPE             STATUS  CREATED             LAST_DDL_TIME
----------------------- ------- ------------------- -------------------
SYS
DBMS_PQ_INTERNAL
PACKAGE                 VALID   2017-01-26 14:19:44 2017-01-26 14:19:44

SYS
DBMS_PQ_INTERNAL
PACKAGE BODY            VALID   2017-01-26 14:19:44 2017-01-26 14:19:44

 

2) PL/SQL을 통해 생성한다

SQL> execute dbms_pq_internal.create_db_link_for_hub ;

PL/SQL procedure successfully completed.
반응형