Oracle DB 링크를 통한 원격 테이블 조회
Oracle 데이터베이스에서 원격 테이블의 정보를 조회할 때 DB 링크를 사용할 수 있다. 그러나 데이터 사전 뷰(ALL_TAB_COMMENTS
, ALL_TAB_COLUMNS
등)는 직접 DB 링크를 통해 조회할 수 없다.
DB 링크를 통한 원격 테이블 조회 방법
1. 원격 테이블 직접 조회
DB 링크(디비링크주소
)를 통해 원격 테이블을 조회
SELECT * FROM 테이블명@디비링크주소;
2. 원격 데이터 사전 정보 조회 (테이블 생성)
데이터 사전 뷰는 직접 조회할 수 없으므로 원격 데이터베이스에서 테이블을 생성한 후 조회해야 한다.
CREATE TABLE tab_comments_backup AS
SELECT * FROM ALL_TAB_COMMENTS;
이후 로컬 DB에서 조회할 수 있다
SELECT * FROM tab_comments_backup@디비링크주소 WHERE TABLE_NAME = '테이블명';
3. 뷰를 사용하여 원격 데이터 조회
원격 DB에서 데이터를 쉽게 접근할 수 있도록 뷰를 생성하는 방법
CREATE VIEW remote_tab_comments AS
SELECT * FROM ALL_TAB_COMMENTS;
이후 로컬에서 다음과 같이 조회할 수 있다
SELECT * FROM remote_tab_comments@디비링크주소 WHERE TABLE_NAME = '테이블명';
4. 동적 SQL을 사용한 원격 조회
PL/SQL을 활용하여 원격 데이터 사전 정보를 조회할 수 있다
DECLARE
v_sql VARCHAR2(4000);
v_result VARCHAR2(4000);
BEGIN
v_sql := 'SELECT COMMENTS FROM ALL_TAB_COMMENTS WHERE TABLE_NAME = "테이블명"';
EXECUTE IMMEDIATE v_sql INTO v_result;
DBMS_OUTPUT.PUT_LINE('Result: ' || v_result);
END;
5. DBMS_SQL을 사용하여 원격 조회
DBMS_SQL 패키지를 이용하여 원격 데이터 조회 가능
DECLARE
cur INTEGER;
v_result VARCHAR2(4000);
v_sql VARCHAR2(4000) := 'SELECT COMMENTS FROM ALL_TAB_COMMENTS WHERE TABLE_NAME = "테이블명"';
BEGIN
cur := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(cur, v_sql, DBMS_SQL.NATIVE);
DBMS_SQL.DEFINE_COLUMN(cur, 1, v_result, 4000);
DBMS_SQL.EXECUTE(cur);
IF DBMS_SQL.FETCH_ROWS(cur) > 0 THEN
DBMS_SQL.COLUMN_VALUE(cur, 1, v_result);
DBMS_OUTPUT.PUT_LINE('Result: ' || v_result);
END IF;
DBMS_SQL.CLOSE_CURSOR(cur);
END;
정리
- DB 링크를 통해 원격 테이블을 직접 조회 가능.
- 데이터 사전 뷰는 직접 조회 불가능하므로 원격 DB에서 테이블을 생성 후 접근해야 함.
- 뷰를 활용하면 원격 테이블을 보다 쉽게 조회할 수 있음.
- PL/SQL을 사용하면 동적으로 원격 데이터를 조회 가능.
- DBMS_SQL을 사용하여 보다 세밀한 제어가 가능.
'공부방 > DataBase' 카테고리의 다른 글
마리아DB(MariaDB) 데이터베이스 생성 (0) | 2025.04.13 |
---|---|
PL/SQL PLS-00103 오류 해결 방법 (0) | 2025.03.14 |
[Oracle] 데이터베이스에서 문자열 뒤에서 자르기(RIGHT) (0) | 2025.01.09 |
[MariaDB] ADD COLUMN 사용법 (0) | 2025.01.03 |
Subquery returns more than 1 row (0) | 2024.12.19 |