[Oracle] RECO 프로세서

·2025년 8월 21일

오라클 관리

목록 보기
26/163


🔸 이론1. 오라클 DB링크란?

💡 오라클에서 다른 데이터베이스에 있는 객체에 접근할 수 있게 해주는 연결 통로


🔸 이론2. RECO 프로세서의 역할

💡 DB링크를 이용해서 다른 유저의 EMP 테이블을 UPDATE 하고 있는데 갑자기 내 SQL DEVELOPER가 꺼지게 되면 다른 유저의 서버에 남아있는 내 세션의 서버프로세서를 정리해주는 프로세서가 --> RECO


🔸 이론3. 만약 DB링크로 다른 유저의 EMP를 UPDATE 하다가 내 SQL DEVELOPER가 꺼져서 재접속하면 어떤 일이 발생하는가?

💡 정상적인 상황이라면 비정상 종료된 세션을 다른 유저의 RECO가 정리했기 때문에 정상적을 작업이 됩니다. 그러나 정리를 못했으면 나는 아무런 작업을 못하고 LOCK에 걸리게 됩니다.


실습1. 내 리눅스 서버에 SCOTT으로 접속해서 emp_kbm을 생성합니다.

SQL> connect scott/tiger
연결되었습니다.
SQL>
SQL> create  table  emp_kbm
  2  as
  3   select * from emp;

테이블이 생성되었습니다.

SQL> select count(*) from emp_kbm;

  COUNT(*)
----------
        14

실습2. aaa 유저의 db의 데이터를 select 하기 위한 db링크를 생성합니다.

create database link aaa_link
connect to scott
identified by tiger
using '192.168.13.69:1521/ORA19';

select * from emp_aaa@aaa_link;

truncate table emp;

select * from emp;

insert /*+ parallel(emp,12) */ into emp
select /*+ parallel(e1,12) */ *
 from emp_aaa@aaa_link e1;
 
commit;

select * from emp;

update emp_aaa@aaa_link
set sal = 0
where ename='SCOTT';

문제. aaa 유저의 emp_aaa 과 나의 emp 테이블을 조인해서 아래의 셀프조인이 잘 수행되는지 확인하시오

select e.ename, l.ename
 from emp e, emp_aaa@aaa_link l
 where e.mgr = l.empno;

0개의 댓글