본문 바로가기

Oracle/admin

Oracle Streams 상태조회

오라클 스트림즈(Oracle Streams)는 2개 DB의 동기화를 위해 사용되는 기능인데요. 현재는 OGG(Oracle Golden Gate)등의 솔루션으로 많이 사용되고 있지 않고 있습니다.

Stream와 관련한 레퍼런스가 많이 없어 참고하시면 좋겠다는 생각이 들어 공유해 봅니다.

Streams 진행방향을 간단하게 본다면 아래와 같습니다.

Capture(SourceDB) -> Propagation(SourceDB) -> Apply(TargetDB)

     캡처              ->            전송              ->     적용


■SourceDB에서 확인 사항

★ Streams Capture Table 확인(동기화 하는 테이블 목록 확인)

select table_owner,table_name,scn,to_char(timestamp,'hh24:mi:ss mm/dd/yy') timestamp 

from dba_capture_prepared_tables;

★ Capture Process 확인
select capture_name,queue_name,to_CHAR(start_scn) start_Scn,to_char(captured_scn) 
chaptured_scn ,to_char(applied_scn) appled_scn,status from dba_capture;

-> 만약 Status가 Enable이 아닌경우 에러로그를 확인합니다.
select capture_name,status,error_message from dba_capture; 

->캡쳐프로세서 재시작
exec dbms_capture_adm.stop_capture(capture_name=>'~capture_name~'); 
exec dbms_capture_adm.start_capture(capture_name=>'~capture_name~');

 
★Queue 된 메시지 수 확인 
select sid,capture_message_number,TOTAL_MESSAGES_CREATED,total_messages_enqueued,enqueue_time  
from  v$streams_capture; 

★Propagation 상태 확인 
 select propagation_name, status from dba_propagation; 

-> propagation status가 Enable이 아닌경우 이역시 다시 재시작 해주어야 합니다.
exec dbms_propagation_adm.stop_propagation(propagation_name=>'~propagation_name~'); 
exec dbms_propagation_adm.start_propagation(propagation_name=>'~propagation_name~');

■TargetDB에서 확인 사항

★ Apply 상태 정보(Dequeue 상태확인)

select r.apply_name ,r.state,c.total_received,c.total_applied,c.total_errors 
from v$streams_apply_reader r,v$streams_apply_coordinator c,dba_apply ap 
where r.apply_name=ap.apply_name and r.apply_name=c.apply_name;

-> Apply status가 Enable이 아닌경우 이역시 다시 재시작 해주어야 합니다.
exec dbms_Apply_adm.stop_propagation(Apply_name=>'~Apply_name~'); 
exec dbms_Apply_adm.start_propagation(Apply_name=>'~Apply_name~');


■ 주의사항
에러가 발생하여 동기화가 진행이 안된경우에 각각의 프로세스 상태를 점검하여 정상적으로 enable의 상태가 되도록 복구 시킵니다.
하지만 동기화 테이블들의 SCN정보가 서로 불일치 할것이므로 수동으로 동기화를 진행해주어야 합니다.
DBLINK와 MINUS함수를 이용하여 source table과 target table의 정보를 동기화 시키면 Streams 프로세스가 동기화 이후 시점부터 작동하게 됩니다.



'Oracle > admin' 카테고리의 다른 글

tablespace,datafile 생성 SQL (마이그레이션시 참고용)  (0) 2016.11.14
2pc_pending 처리  (0) 2016.11.07
Oracle Support 한국어 문서 목록  (0) 2016.09.09
락 세션 조회 및 KILL 방법  (0) 2016.09.06
주요 성능분석지표 SQL  (0) 2016.09.05