OID/DIP 동기화 진단
OID/DIP 동기화 진단: orclodipConDirLastAppliedChgNum으로 미처리 변경 확인

OID/DIP 동기화 진단: orclodipConDirLastAppliedChgNum으로 미처리 변경 확인

이 가이드는 언제 유용한가요?

OID/DIP 운영자가 "동기화가 멈춘 것 같은데 이유가 뭘까?"라는 상황에서, 바로 상태를 가늠하고 원인을 신속히 좁혀가기 위한 최소한의 명령어 세트를 설명합니다.

  • AD↔OID 동기화 지연이 발생할 때
  • DIP 프로세스가 STARTING/Running인데 변화가 없을 때
  • 로그에 명확한 단서가 적을 때
⚠️ 보안 주의사항: 예시의 welcome1 패스워드는 반드시 환경 변수나 보안 저장소로 대체하세요.

🔧 OID/DIP 진단 Playbook

이 가이드의 모든 명령어와 체크리스트를 포함한 실행 가능한 스크립트 파일

Playbook 다운로드

1. 프로파일 DN 찾기

먼저 DIP가 사용할 프로파일 엔트리의 정확한 DN을 알아야 후속 조회/변경이 가능합니다.

왜 실행하나요? 프로파일 DN이 정확해야 해당 엔트리의 속성(예: LAST 적용 번호)을 가져오거나 수정할 수 있습니다.
결과의 의미: 결과로 나오는 dn: 라인이 이후 모든 명령의 베이스 DN이 됩니다.
LDAP • subscriber profile 목록에서 DN 추출
# "subscriber profile" 아래의 프로파일 목록에서 DN만 추출
ldapsearch -LLL -h dip11g -p 3060 \
  -D cn=orcladmin -w welcome1 \
  -b "cn=subscriber profile,cn=changelog subscriber,cn=oracle internet directory" \
  -s one "(objectClass=orclodipagentprofile)" dn

2. orclodipConDirLastAppliedChgNum 읽기

찾은 프로파일 DN에서 마지막으로 적용한 changelog 번호(LAST)를 확인합니다.

왜 실행하나요? DIP가 "어디까지 처리했다고 생각하는지"의 기준 값이자, 미적용 여부 판정의 좌표입니다.
결과의 의미: 이 값보다 큰 chgNumber가 changelog에 실제로 있으면, 처리가 덜 된 변경이 존재함을 뜻합니다.
LDAP • MsadSyncProfile의 LAST 조회
ldapsearch -LLL -h dip11g -p 3060 \
  -D cn=orcladmin -w welcome1 \
  -b "orclodipagentname=MsadSyncProfile,cn=subscriber profile,cn=changelog subscriber,cn=oracle internet directory" \
  -s base "(objectClass=*)" orclodipConDirLastAppliedChgNum

쉘 변수에 담아 비교용으로 사용

Bash • LAST 값 캡처
LAST=$(ldapsearch -LLL -h dip11g -p 3060 \
  -D cn=orcladmin -w welcome1 \
  -b "orclodipagentname=MsadSyncProfile,cn=subscriber profile,cn=changelog subscriber,cn=oracle internet directory" \
  -s base "(objectClass=*)" orclodipConDirLastAppliedChgNum |
  awk '/orclodipcondirlastappliedchgnum:/ {print $2}')

echo "LAST = ${LAST}"
예시 해석: LAST=49204라면, changelog에 49205 이상이 실제로 있는지 확인하는 게 다음 단계입니다.

3. changelog에 미적용 changeNumber가 실제로 있는지 확인

LAST보다 큰 번호가 cn=changelog에 존재하는지 검사합니다. 존재한다면 "처리해야 할 변경이 남아 있음"을 뜻합니다.

왜 실행하나요? "DIP가 멈춘 것 같다"는 느낌을 사실로 검증합니다. LAST와 changelog의 실제 상태가 불일치하는지 확인하는 핵심 단계입니다.
결과의 의미: 검색 결과가 없다면 DIP가 이미 최신일 수 있고, 있다면 DIP가 아직 해당 변경을 읽지 못했거나 처리 실패 상태일 가능성이 큽니다.
LDAP • cn=changelog 존재성 검사
# LAST가 49204라면, 49205 이상이 존재하는지 1건만 확인
ldapsearch -LLL -h dip11g -p 3060 -D cn=orcladmin -w welcome1 \
  -b "cn=changelog" "(chgNumber>=$((LAST+1)))" changeNumber -z 1

4. (선택) OID 전체의 "가장 큰 change 번호" 확인

깊이 있는 진단이 필요하면 루트의 lastChangeNumber 또는 changelog의 최신 항목을 조회해 시스템 상한선을 파악합니다.

왜 실행하나요? LAST 대비 시스템의 최대 change 번호를 알아야 "얼마나 뒤쳐졌는지" 대략적 갭을 계산할 수 있습니다.
결과의 의미: lastChangeNumber가 높을수록 최근 변경이 활발했다는 뜻이며, LAST 차이가 크면 지연이 누적 중일 수 있습니다.

4-1. 루트 엔트리의 lastChangeNumber

LDAP • rootDSE lastChangeNumber 조회
ldapsearch -LLL -h dip11g -p 3060 \
  -D "cn=orcladmin" -w welcome1 \
  -b "" -s base "(objectClass=*)" lastChangeNumber

4-2. changelog에서 최신 changeNumber 하나만

LDAP • 최신 changeNumber 1건 조회
ldapsearch -LLL -h dip11g -p 3060 -D cn=orcladmin -w welcome1 \
  -b "cn=changelog" -s one "(objectClass=*)" changeNumber -S changeNumber:desc -z 1

5. 권장 점검 / 조치 체크리스트

  • 프로파일 속성: LAST 확인 → cn=changelog에서 (chgNumber >= LAST+1) 탐색
  • Sync 모드/컨트롤: orclodipSynchronizationMode, orclodipAgentControl 조회로 "읽기 방식/제어 상태" 확인
  • DIP Reader 로그: 기동 후 Searching changelog with base=cn=changelog 라인이 나오는지
  • 강제 리셋(주의): LAST를 안전한 이전값으로 낮춘 뒤 재기공(사전 백업 필수)
  • Replication 부하: oidmon -cmd showreplmon 등으로 busy loop/지연 징후 점검

6. 안전한 강제 리셋(롤백) – 필요 시

changelog에 미적용 변경이 확실하고, DIP가 재시도하지 않거나 stuck으로 보일 때만 수행합니다.

왜 실행하나요? Reader가 잘못된 LAST로 인해 "앞을 더 이상 읽지 않는" 상태를 강제로 되돌립니다.
결과의 의미: LAST를 낮추면 DIP는 해당 번호 이후의 changelog를 다시 탐색/적용합니다. 값 과도 하향은 중복 처리 유발 가능.

6-1. 현재 프로파일 엔트리 백업(LDIF)

LDAP • 프로파일 백업 LDIF 생성
ldapsearch -LLL -h dip11g -p 3060 -D "cn=orcladmin" -w welcome1 \
  -b "orclodipagentname=MsadSyncProfile,cn=subscriber profile,cn=changelog subscriber,cn=oracle internet directory" \
  -s base "(objectClass=*)" \* + > MsadSyncProfile_backup.ldif

6-2. LAST 값 조정 LDIF 작성

LDIF • reset_last.ldif 파일 내용
dn: orclodipagentname=MsadSyncProfile,cn=subscriber profile,cn=changelog subscriber,cn=oracle internet directory
changetype: modify
replace: orclodipConDirLastAppliedChgNum
orclodipConDirLastAppliedChgNum: 49200

6-3. LDIF 적용

LDAP • ldapmodify로 LAST 값 변경
ldapmodify -h dip11g -p 3060 -D "cn=orcladmin" -w welcome1 -f reset_last.ldif
⚠️ 중요: 변경 전 LDIF 백업은 필수입니다. 재기동 후 changelog 재탐색 로그를 반드시 확인하세요.

7. DIP Reader 디버깅 팁

Reader가 changelog를 실제로 조회하는지, 조회는 하지만 적용이 실패하는지 로그로 확인합니다.

왜 실행하나요? "읽지 않음 vs. 읽지만 실패"를 구분해야 대응이 정확해집니다.
결과의 의미: Searching changelog with base=cn=changelog가 없다면 질의 자체가 없고, 있다면 매칭 필터/권한/데이터 충돌을 의심합니다.
  • 재기동 JVM 옵션: -Doracle.security.jps.debug=true
  • 로그 키워드: Searching changelog with base=cn=changelog
  • 권한 문제: orcladmin 계정의 changelog 읽기 권한 확인
  • 네트워크 지연: OID 서버와의 연결 상태 점검

저자: Oracle Middleware 전문가 (27년 경력)

전문 분야: OID, DIP, OAM, ODI, OGG, OBIEE, OAS

© Data In Hands · OID/DIP 운영 가이드. 예시 크리덴셜은 반드시 실제 환경 값으로 교체하세요.

위로 스크롤