OID/DIP 동기화 진단: 프로파일 방향, 체크포인트와 변경 번호 확인

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

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

OID/DIP 동기화가 지연될 때 프로파일 방향, 변경 번호의 출처, 처리 로그를 나누어 확인하는 방법을 정리합니다. Oracle 11g 문서에서 orclodipConDirLastAppliedChgNum은 연결 디렉터리에서 OID로 가져오는 import의 처리 지점입니다. OID 자체 changelog 번호와 바로 비교할 수 없습니다. 아래 원래 명령은 설치 버전·클라이언트 문법·번호 체계가 검증되지 않은 예시이며, 그대로 실행하지 마세요.

  • AD↔OID 동기화 지연이 발생할 때
  • DIP 프로세스가 STARTING/Running인데 변화가 없을 때
  • 로그에 명확한 단서가 적을 때
⚠️ 보안 주의사항: 예시 비밀번호 welcome1을 사용하지 마세요. -w 인수는 환경 변수로 바꿔도 프로세스 인수 등에 비밀번호가 노출될 수 있습니다. 설치 버전에 맞는 인증 방식과 TLS 연결을 확인해야 하며, 3060 접속을 암호화된 연결로 가정하지 마세요.

🔧 OID/DIP 진단 Playbook

원래 명령을 담은 검토용 템플릿입니다. import/export 번호 체계, 인증·문법, 리셋 절차가 검증되지 않았으므로 다운로드 파일을 그대로 실행하지 마세요.

Playbook 다운로드

1. 프로파일 DN 찾기

프로파일은 어느 디렉터리의 변경을 어디로 전달할지 정한 동기화 설정입니다. 처리 지점의 숫자를 읽기 전에 대상 프로파일과 방향부터 확인해야 합니다.

먼저 대상 인스턴스와 프로파일 엔트리의 정확한 DN을 확인합니다. import는 연결 디렉터리→OID, export는 OID→연결 디렉터리이므로 방향과 커넥터를 함께 기록합니다.

왜 실행하나요? 다른 프로파일의 상태를 섞지 않고 대상 속성과 로그를 조회하기 위해서입니다. DN을 찾았다고 상태 속성을 직접 수정해도 되는 것은 아닙니다.
결과의 의미: dn:은 해당 프로파일 조회의 기준입니다. changelog와 rootDSE 조회는 별도 검색 기준을 사용하므로 모든 명령의 base 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 읽기

Oracle 11g 문서에서 이 속성은 import 시 연결 디렉터리의 변경을 OID에 적용한 처리 지점입니다. OID export의 처리 번호와는 구분해야 하며, 설치 버전과 커넥터별 의미를 먼저 확인합니다.

왜 실행하나요? 프로파일의 처리 지점을 확인하기 위해서입니다. 이 값과 비교할 변경 기록이 같은 출처·번호 체계에 속하는지 확인하는 것이 먼저입니다.
결과의 의미: 이 속성은 문서상 Directory String입니다. AD import의 값과 OID cn=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}"
예시 해석: 49204와 49205는 같은 숫자 기반 변경 스트림이라고 검증된 경우의 예시입니다. 예제의 awk는 출력 속성명의 대소문자에 따라 빈 값을 만들 수 있습니다. 조회 성공·값의 형식·출처를 확인하기 전에는 LAST+1 연산을 하지 마세요.

3. changelog 비교 전에 방향과 번호 체계 확인

cn=changelog는 OID의 변경 기록입니다. 연결 디렉터리 import 처리 지점과 직접 비교하는 아래 예제는 일반적인 진단법으로 사용할 수 없습니다. 설치 버전의 프로파일 속성·검색 스키마를 확인한 뒤 같은 변경 스트림만 대조합니다.

왜 실행하나요? 비교 대상과 검색이 유효한지 확인하기 위해서입니다. 아래 필터의 chgNumber와 반환 속성 changeNumber가 설치 스키마에 맞는지도 별도 검증해야 합니다.
결과의 의미: 검색 결과만으로 완료·실패를 확정할 수 없습니다. 결과가 없어도 권한·검색 오류·보존 기간·잘못된 범위를 확인해야 합니다. 결과가 있어도 프로파일 필터·매핑에 포함되는 변경인지, 실제 적용 기록이 있는지 확인합니다.
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 변경 번호의 범위와 조회 조건 확인

OID 변경 기록을 진단하는 경우에는 rootDSE 속성 지원 여부와 changelog 보존 범위를 확인합니다. 아래 최신 항목 조회의 정렬 옵션도 LDAP 클라이언트에 따라 다르므로 검증 전에는 최대값 조회로 받아들이지 않습니다.

왜 실행하나요? 같은 출처의 처리 지점과 변경 범위를 대조하기 위해서입니다. 연결 디렉터리 import 값과 OID 자체 번호의 차이를 지연으로 계산하지 않습니다.
결과의 의미: 번호의 절대값이 높다고 최근 변경이 활발한 것은 아닙니다. 검증된 같은 번호 체계에서도 차이는 지연 시간이나 실제 처리할 건수와 같지 않습니다. 시각별 변화·필터·보존 기간·적용 로그를 함께 봅니다.

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 정렬 조회 예제 — 클라이언트 문법 검증 필요

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. 권장 점검 / 조치 체크리스트

  • 프로파일 속성: import/export 방향과 LAST의 출처를 먼저 확인합니다. 같은 변경 스트림·숫자 형식·검색 스키마가 검증되기 전에는 (chgNumber >= LAST+1) 예제를 사용하지 않습니다
  • Sync 모드/컨트롤: 설치 버전에서 orclodipSynchronizationMode, orclodipAgentControl의 의미와 프로파일 상태·예약 주기·재시도 정책·필터·매핑을 대조합니다
  • DIP Reader 로그: Searching changelog with base=cn=changelog는 원문의 예시 키워드입니다. 로그 수준·회전·대상 프로파일·시각을 확인하고 조회 및 적용 결과를 함께 추적합니다
  • 강제 리셋(주의): LAST 하향 변경을 일반 해결책으로 사용하지 않습니다. 설치 버전의 지원 절차, 재처리 범위와 복구 계획이 확인된 경우에만 별도 승인된 변경으로 다룹니다
  • Replication 부하: oidmon -cmd showreplmon은 지원 여부가 확인되지 않은 원문 예제입니다. 설치 버전의 지원 도구와 시각이 일치하는 지표로 경합 여부를 확인합니다

6. 처리 지점 변경의 위험과 지원 절차 확인

처리 지점 변경은 디렉터리 데이터의 롤백이 아닙니다. Oracle 11g 문서는 동기화 상태 속성의 임의 변경을 권장하지 않습니다. 아래 LDIF·ldapmodify는 지원 여부가 확인되지 않은 원문 예제로 보존한 것이며, 그대로 적용하지 마세요.

왜 실행하나요? 읽기 지연을 잘못된 LAST 탓으로 단정하지 않기 위해 먼저 방향·필터·예약·재시도·오류를 확인합니다. 변경이 필요하다면 설치 버전의 지원 관리 절차와 정확한 속성을 확인해야 합니다.
결과의 의미: 잘못된 처리 지점은 동기화 중단이나 잘못된 적용을 일으킬 수 있습니다. 하향 변경도 재처리·중복·순서 문제를 만들 수 있고, 제거된 변경 기록은 복구하지 못합니다. 프로파일 백업만으로 안전한 복구가 보장되지는 않습니다.

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. 원문 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. 원문 적용 명령 — 실행하지 않는 검토 예제

LDAP • ldapmodify로 LAST 값 변경
ldapmodify -h dip11g -p 3060 -D "cn=orcladmin" -w welcome1 -f reset_last.ldif
⚠️ 중요: 상태 변경은 별도 승인된 작업입니다. 지원 절차·보존된 변경 범위·재적용 영향·복구 기준을 먼저 확인해야 합니다. 원문의 49200은 안전한 권장값이 아니며, 재기동 로그 한 줄만으로 정상화를 판정하지 않습니다.

7. DIP Reader 디버깅 팁

대상 프로파일과 시각을 맞춰 조회 시도, 읽기 결과, 매핑·적용 결과를 구분합니다. import 커넥터가 어떤 변경 출처를 읽는지도 먼저 확인합니다.

왜 실행하나요? 조회 전 오류와 읽은 뒤 적용 오류의 대응이 다르기 때문입니다. 프로파일 상태와 예약·재시도 기록도 함께 확인합니다.
결과의 의미: Searching changelog with base=cn=changelog가 없어도 질의가 없었다고 단정할 수 없습니다. 버전·로그 수준·회전·대상 프로세스를 확인해야 합니다. 키워드가 있어도 조회 성공이나 적용 완료를 입증하지는 않습니다.
  • 원문 JPS 보안 디버그 옵션 -Doracle.security.jps.debug=true은 DIP Reader 추적을 보장하지 않습니다. 설치 버전의 로깅 절차와 민감 정보 처리·종료 기준을 확인하기 전에는 활성화하지 않습니다
  • 로그 키워드: Searching changelog with base=cn=changelog
  • 권한 문제: 실제 프로파일 바인드 계정의 조회·적용 권한과 오류를 확인합니다. 예시 orcladmin 계정과 운영 계정을 혼동하지 않습니다
  • 연결 문제: 해당 프로파일의 출발·도착 디렉터리, 리스너·TLS·연결 오류를 구분합니다. 지연만으로 네트워크 원인을 단정하지 않습니다

저자: JJ Moon · AI로 제품을 만드는 솔로프리너

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

© Data In Hands · OID/DIP 운영 가이드. 원문 명령은 검토 예제이며, 설치 버전·인증·번호 체계·지원 절차 확인 전에는 실행하지 마세요.

위로 스크롤