모든 페이지
1 / 1

Loading...

롤백 가이드

백업이 존재하는 경우에만 롤백이 가능하다. 아래는 4.4.x로의 패치 이후 문제가 발생했을 때, 이전 버전으로 롤백하기 위한 단계다.

1. 프로세스 강제 종료 (SRC / TAR)

ADMIN> shutd agent;

2. 디렉토리 복구

rm -rf prosync;
mv old_prosync prosync

참고

3단계(재설치 수행)부터 5단계(메타데이터 복구)까지의 과정은 메타 테이블 구조 변경으로 인해 필요한 절차이며, 백업 시점의 버전과 현재 설치된 버전 사이에 메타 테이블 구조 변경이 있는 경우에만 수행한다. 메타 테이블 구조는 4.5.0에서 변경되었으므로 다음 두 경우가 이에 해당한다.

  • 4.5.0 이상에서 4.4.x 이하로 내려가는 롤백

  • 4.0, FS01, 4.2.x 버전으로의 롤백

3. 재설치 수행

$PRS_HOME/install/prs_install.sh -c prs_install.cfg

4. 기존 메타데이터 삭제

주의

4단계와 5단계에 나열된 메타 테이블 목록은 백업 시점 버전(구버전)의 스키마를 기준으로 한 것이므로, 현재 설치된 버전의 테이블 목록으로 바꾸면 절차가 깨진다. 백업 스크립트(prs_backup.sh)가 구버전의 create_src_tbl.sql을 기준으로 백업 테이블을 생성하고, 5단계의 INSERT ... SELECT *는 원본 테이블과 백업 테이블의 컬럼 구성이 동일해야 성공하기 때문이다. 따라서 현재 버전에는 없고 구버전에만 존재하는 테이블(예: PRS_IMPORTED_ARCHIVE_LOG)이 목록에 포함되어 있어도 그대로 둔다.

SRC DB

TRUNCATE TABLE $PRS_USER.PRS_TXINFO;
TRUNCATE TABLE $PRS_USER.PRS_OBJ_LIST;
TRUNCATE TABLE $PRS_USER.PRS_DDL_HIST;
TRUNCATE TABLE $PRS_USER.PRS_DD_CON;
TRUNCATE TABLE $PRS_USER.PRS_DD_ENC;
TRUNCATE TABLE $PRS_USER.PRS_DUMMY_TBL;
TRUNCATE TABLE $PRS_USER.PRS_LOGMNR_INFO;
TRUNCATE TABLE $PRS_USER.PRS_IMPORTED_ARCHIVE_LOG;
TRUNCATE TABLE $PRS_USER.PRS_DD_ETL_HIST;
TRUNCATE TABLE $PRS_USER.PRS_DICT_HIST;
TRUNCATE TABLE $PRS_USER.PRS_DD_USR;
TRUNCATE TABLE $PRS_USER.PRS_DD_TBL;
TRUNCATE TABLE $PRS_USER.PRS_DD_SGMT;
TRUNCATE TABLE $PRS_USER.PRS_DD_COL;
TRUNCATE TABLE $PRS_USER.PRS_IPARAM;  -- Rule DB를 사용한 구성에서만 해당한다. 해당 테이블이 없으면 건너뛴다.

TAR DB

TRUNCATE TABLE $PRS_USER.PRS_CONST_HIST;
TRUNCATE TABLE $PRS_USER.PRS_LCT;
TRUNCATE TABLE $PRS_USER.PRS_DUMMY_TBL;
TRUNCATE TABLE $PRS_USER.PRS_COMMITTED_TX_LIST;
TRUNCATE TABLE $PRS_USER.PRS_INSTALL_HIST;

5. 메타데이터 복구

SRC DB

INSERT INTO $PRS_USER.PRS_TXINFO SELECT * FROM prs_backup.PRS_TXINFO;
INSERT INTO $PRS_USER.PRS_OBJ_LIST SELECT * FROM prs_backup.PRS_OBJ_LIST;
INSERT INTO $PRS_USER.PRS_DDL_HIST SELECT * FROM prs_backup.PRS_DDL_HIST;
INSERT INTO $PRS_USER.PRS_DD_CON SELECT * FROM prs_backup.PRS_DD_CON;
INSERT INTO $PRS_USER.PRS_DD_ENC SELECT * FROM prs_backup.PRS_DD_ENC;
INSERT INTO $PRS_USER.PRS_LOGMNR_INFO SELECT * FROM prs_backup.PRS_LOGMNR_INFO;
INSERT INTO $PRS_USER.PRS_IMPORTED_ARCHIVE_LOG SELECT * FROM prs_backup.PRS_IMPORTED_ARCHIVE_LOG;
INSERT INTO $PRS_USER.PRS_DD_ETL_HIST SELECT * FROM prs_backup.PRS_DD_ETL_HIST;
INSERT INTO $PRS_USER.PRS_DICT_HIST SELECT * FROM prs_backup.PRS_DICT_HIST;
INSERT INTO $PRS_USER.PRS_DD_USR SELECT * FROM prs_backup.PRS_DD_USR;
INSERT INTO $PRS_USER.PRS_DD_TBL SELECT * FROM prs_backup.PRS_DD_TBL;
INSERT INTO $PRS_USER.PRS_DD_SGMT SELECT * FROM prs_backup.PRS_DD_SGMT;
INSERT INTO $PRS_USER.PRS_DD_COL SELECT * FROM prs_backup.PRS_DD_COL;
INSERT INTO $PRS_USER.PRS_IPARAM SELECT * FROM prs_backup.PRS_IPARAM;  -- Rule DB를 사용한 구성에서만 해당한다. 해당 테이블이 없으면 건너뛴다.
DELETE FROM PRS_DD_CON
 WHERE (DD_SEQ#, BO_ID) IN (
       SELECT DD_SEQ#, OBJ_ID FROM PRS_DD_TBL
        WHERE OWNER = '$PRS_USER' AND NAME = 'PRS_DUMMY_TBL');
DELETE FROM PRS_DD_COL
 WHERE (DD_SEQ#, BO_ID) IN (
       SELECT DD_SEQ#, OBJ_ID FROM PRS_DD_TBL
        WHERE OWNER = '$PRS_USER' AND NAME = 'PRS_DUMMY_TBL');
DELETE FROM PRS_DD_SGMT
 WHERE (DD_SEQ#, BO_ID) IN (
       SELECT DD_SEQ#, OBJ_ID FROM PRS_DD_TBL
        WHERE OWNER = '$PRS_USER' AND NAME = 'PRS_DUMMY_TBL');
DELETE FROM PRS_DD_ENC
 WHERE OBJ_ID IN (
       SELECT OBJ_ID FROM PRS_DD_TBL
        WHERE OWNER = '$PRS_USER' AND NAME = 'PRS_DUMMY_TBL');
DELETE FROM PRS_DD_TBL
 WHERE OWNER = '$PRS_USER' AND NAME = 'PRS_DUMMY_TBL';
COMMIT;

DECLARE
  v_seq NUMBER;
BEGIN
  v_seq := PRS_DD_META.INSERT_HIST(0, 'refresh PRS_DUMMY_TBL dd only');
  PRS_DD_META.UPDATE_TBL(v_seq, '$PRS_USER', 'PRS_DUMMY_TBL', NULL, NULL);
  PRS_DD_META.UPDATE_HIST(v_seq, 1, NULL);
END;
/
COMMIT;

TAR DB

INSERT INTO $PRS_USER.PRS_CONST_HIST SELECT * FROM prs_backup.PRS_CONST_HIST;
INSERT INTO $PRS_USER.PRS_LCT SELECT * FROM prs_backup.PRS_LCT;
INSERT INTO $PRS_USER.PRS_COMMITTED_TX_LIST SELECT * FROM prs_backup.PRS_COMMITTED_TX_LIST;
INSERT INTO $PRS_USER.PRS_INSTALL_HIST SELECT * FROM prs_backup.PRS_INSTALL_HIST;

주의

복구 후 반드시 COMMIT을 수행해야 한다.

참고

  • $PRS_USER.PRS_DUMMY_TBL에 대해서는 INSERT 작업을 진행하지 않는다.

  • prosync 롤백 과정에서 재설치가 수행되는데 이 때 $PRS_USER.PRS_DUMMY_TBL

6. Config 파일 검토 및 수정

각 설정 파일의 파라미터를 기존 설정과 비교하여 알맞게 수정한다.

  • <$instance_ID>_ext#.cfg

  • <$instance_ID>_apply1.cfg

  • <$instance_ID>_llob1.cfg

  • prs_agent_<$Agent_ID>.cfg → prs_mgr.cfg

  • prs_instance.map → prs_top.map

은 재설치 과정에서
obj_id
가 변경되는 경우가 발생하여
$PRS_USER.PRS_DUMMY_TBL
에 대해
dd image
갱신 작업을 수행해야 한다.

7. ProSync 재기동

ADMIN> start man {AGENT_ID}
ADMIN> start {INSTANCE_ID}