콘텐츠로 이동

작업 예약

Datatrans는 CLI의 schedule 또는 웹 콘솔의 예약에서 일회·반복 작업을 등록합니다. 예약 시각과 실행 기동은 systemd 사용자 timer/service가 담당합니다. 콘솔을 열어 두는 것이 예약 기동 조건은 아닙니다.

1. 운영 계정 준비

Datatrans가 설치된 Linux 서버에서 콘솔과 CLI를 같은 운영 계정으로 사용합니다. 해당 계정으로 다음 상태를 확인합니다.

systemctl --user is-system-running
loginctl show-user "$USER" -p Linger
timedatectl show -p Timezone -p NTPSynchronized

로그아웃·재부팅 후에도 사용자 관리자가 기동되도록 linger를 설정합니다. 권한이 필요하면 관리자가 해당 운영 계정에 대해 수행합니다.

loginctl enable-linger "$USER"
loginctl show-user "$USER" -p Linger

Linger=yes와 정상 사용자 서비스 연결을 확인합니다. 설정 확인과 실제 재부팅 후 실행 검증은 별개입니다. 서비스 환경에서도 Oracle 라이브러리·설정과 실행에 필요한 파일을 읽을 수 있어야 합니다.

2. CLI에서 예약

jobname과 해당 모드의 접속·대상 등 필수 파라미터를 모두 지정합니다. 공백이 포함된 날짜와 Cron은 큰따옴표로 묶습니다.

datatrans \
  source=SRC_USER/password@host:1521/SRCDB \
  target=TGT_USER/password@host:1521/TGTDB \
  schemas=SALES \
  schedule="2027-01-15 02:00:00+09:00" \
  jobname=SALES_ONCE

datatrans \
  source=SRC_USER/password@host:1521/SRCDB \
  target=TGT_USER/password@host:1521/TGTDB \
  schemas=SALES \
  schedule="0 2 * * *" \
  jobname=SALES_NIGHTLY

일회 날짜는 실제 미래 실행 시각으로 바꾸세요. schedule=ONCE 또는 schedule=CRON이라는 문자열을 지정하는 방식은 아닙니다.

  • 일회 예약은 ISO 날짜·시각을 받습니다. 시간대가 없으면 서버 현지 시간으로 해석하므로 명시적 offset을 권장합니다.
  • CLI 반복 예약의 기준 시간대는 현재 Asia/Seoul입니다. CLI에는 별도의 시간대·반복 만료날짜 공개 파라미터가 없습니다.
  • Cron은 5필드이며 숫자·범위·목록·간격·요일 이름을 지원합니다. L, # 등 특수 표현식은 거부합니다.
  • 날짜와 요일을 모두 제한하면 Cron의 OR 의미를 유지합니다.

3. 웹 콘솔에서 예약

할당된 프로젝트의 작업에서 예약을 열고 저장된 작업 버전과 일회·반복 방식을 지정합니다. UI에서 사용 여부·수정·삭제·지금 실행·예약 이력을 관리할 수 있습니다.

설정 의미
작업 버전 실행할 저장된 설정 버전 고정
한 번 실행 입력 화면에 안내된 브라우저 현지 시각을 서버 시각으로 변환
반복 기준 시간대 Cron을 해석할 지역 지정
반복 만료날짜 (선택) 해당 기준 시간대에서 지정 날짜의 끝까지 새 실행 허용; 생략하면 무기한

만료 후 자동 실행·지금 실행·재활성화는 차단합니다. 이미 진행 중인 실행을 중단하거나 미실행 회차를 완료로 처리하지 않습니다. 다음 실행이 기간 안에 없으면 일정·날짜를 수정해야 합니다.

설정 → 표시 → 표시 시간대는 화면에 보이는 날짜만 바꾸며 예약 기준 시간대나 만료날짜의 의미를 바꾸지 않습니다.

실행 통제 프로젝트의 예약 승인

예약 저장 → 관리자 사전 승인 → 활성화 순서입니다. 승인 전에는 타이머를 활성화하지 않습니다. 예약 요청에는 별도 대기 기한이 없지만 예약 실행 기간이 지나면 무효화됩니다.

승인 후에는 매 회차 재승인 없이 실행하되 사용자 상태·권한·승인 내용을 다시 확인합니다. 주기·만료날짜·작업 버전·연결·규칙 등 승인 조건이 변경되면 재승인이 필요합니다. 지금 실행은 별도의 수동 실행 요청이며 기존 10분 승인 절차를 따릅니다.

기존 CLI 예약은 콘솔 관리자에게 조회·비활성화·삭제 기능을 제공합니다. 콘솔 작업 예약으로 실행하려면 사용자에게 귀속된 프로젝트 예약으로 다시 등록합니다.

4. 예약 상태와 이력

대화형 CLI에서는 다음 명령을 사용합니다.

DATATRANS> SCHEDULE_LIST
DATATRANS> SCHEDULE_HISTORY
DATATRANS> SCHEDULE_HISTORY=SALES_NIGHTLY
DATATRANS> SCHEDULE_ERASE=SALES_NIGHTLY

SCHEDULE_ERASE는 지정 예약과 예약 이력을 확인 후 삭제합니다. SCHEDULE_CLEANUP은 전체 예약과 예약 이력을 확인 후 삭제합니다.

실제 systemd 등록 상태는 운영 계정에서 확인합니다.

systemctl --user list-timers --all 'datatrans-*'
systemctl --user list-unit-files 'datatrans-*'

사용자 서비스가 꺼져 놓친 예약은 Persistent=true에 따라 실행 기간 안에서 재기동 시 한 번 실행될 수 있습니다. 놓친 모든 회차를 각각 재생하지 않습니다. 동일 예약이 이미 실행 중이면 겹쳐 기동하지 않습니다.

예약 등록 성공은 실제 데이터 전송 성공이 아닙니다. 실행 이력에서 COMPLETED, COMPLETED_WITH_ERRORS, FAILED 등 최종 상태를 확인하세요. systemd 서비스는 일회 실행 후 inactive일 수 있으므로 timer의 예정 시각과 실행 결과를 함께 확인합니다.

5. 기존 예약 이행

기존 설치의 예약 저장소를 백업하고 진행 중 예약이 종료된 뒤 설치 루트에서 수행합니다.

DATATRANS_HOME="$PWD" python/bin/python3 -m datatrans.systemd_scheduler migrate

미이행 예약은 자동 실행되지 않습니다. 활성 예약에 지난 예정 시각이 있으면 이행 직후 실행될 수 있으므로 전환 시간을 계획합니다. 실패 항목이 남았다면 전체 이행 완료로 판단하지 말고 오류를 해결한 뒤 확인합니다.

설치 경로나 운영 계정이 바뀌면 해당 환경의 예약 등록과 기존 timer 정리가 필요합니다. 콘솔 자체의 자동 기동 설정과 예약별 timer/service는 별개입니다.