Table of Contents
ToggleOID/DIP 동기화 진단: orclodipConDirLastAppliedChgNum으로 미처리 변경 확인
이 가이드는 언제 유용한가요?
OID/DIP 운영자가 "동기화가 멈춘 것 같은데 이유가 뭘까?"라는 상황에서, 바로 상태를 가늠하고 원인을 신속히 좁혀가기 위한 최소한의 명령어 세트를 설명합니다.
- AD↔OID 동기화 지연이 발생할 때
- DIP 프로세스가 STARTING/Running인데 변화가 없을 때
- 로그에 명확한 단서가 적을 때
⚠️ 보안 주의사항: 예시의
welcome1 패스워드는 반드시 환경 변수나 보안 저장소로 대체하세요.
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 서버와의 연결 상태 점검
