EMC 콘솔 캐쉬 이슈

Exchange Management Console을 통해서 우리는 다양한 Exchange 관련 Operation을 할 수 있습니다.

한 ORG 내에서 여러 DC가 존재하는 경우, 그 사이트내의 GC를 automatic 하게 Detect 해서 관련 AD 정보와 사용자 정보를 읽어 오도록 디자인 되어 있습니다.

하지만, 간혹 여러 DC 중에 특정 DC 에 문제가 있거나 또는 서버 Fail로 인해서 Turn off 를 하거나 Dcpromo 과정을 통해서 DC 리스트에서 EVICT 하는 경우가 있습니다.

이럴 경우, EMC 의 각 세 개의 Node, 가령, Orgnization configuration/Server Configuration/Recipient Configuration 에서 특정 DC를 바라 보도록 지정하거나, 아래 명령어를 통해서 그 설정을 할 수 있습니다.

Set-ExchangeServer "ExchangeServerName" -StaticDomainControllers $Null -StaticGlobalCatalogs “DC1-XXX.smas-aaa.com"
Set-ExchangeServer "ExchangeServerName" -StaticDomainControllers $Null -StaticConfigDomainController “DC1-XXX.smas-aaa.com"

이렇게 정상적이면서 현재 Acting중인 DC 만 바라보도록 설정했음에도 불구하고, 여전히 mailbox move 등 EMC에서 특정 Operation을 하면, 다음과 같은 에러가 발생하면서, 여전히 demoted 된 DC 또는 Turn off 된 DC를 바라보는 경우가 있습니다.

로그 이름:         Application

원본:            MSExchange Configuration Cmdlet - Remote Management

날짜:            2010-03-25 오후 2:46:26

이벤트 ID: 4

작업 범주:         General

수준:            오류

키워드:           클래식

사용자:           해당 없음

컴퓨터:           **********

설명:

(PID 9480, 스레드 72) Get-Recipient 작업에서 인덱스가 0인 레코드를 처리하는 동안 쓰기 오류가 발생했습니다. 오류: Microsoft.Exchange.Data.Directory.SuitabilityDirectoryException: OLD DC 서버 적합성을 확인하는 동안 Active Directory 오류 0x51이(가) 발생했습니다. 오류: 'Active Directory 응답: LDAP 서버를 사용할 수 없습니다.' ---> System.DirectoryServices.Protocols.LdapException: LDAP 서버를 사용할 수 없습니다.

위치: System.DirectoryServices.Protocols.LdapConnection.Connect()

위치: System.DirectoryServices.Protocols.LdapConnection.BindHelper(NetworkCredential newCredential, Boolean needSetCredential)

위치: Microsoft.Exchange.Data.Directory.SuitabilityVerifier.CreateConnectionAndBind(String fqdn, Int32 portNumber, NetworkCredential credential)

   --- 내부 예외 스택 추적의 끝 ---

위치: Microsoft.Exchange.Data.Directory.SuitabilityVerifier.CreateConnectionAndBind(String fqdn, Int32 portNumber, NetworkCredential credential)

위치: Microsoft.Exchange.Data.Directory.SuitabilityVerifier.IsServerSuitable(String fqdn, Boolean isGlobalCatalog, NetworkCredential credential, String& writableNC, LocalizedString& errorMessage)

위치: Microsoft.Exchange.Data.Directory.ConnectionPoolManager.GetConnection(ConnectionType connectionType, ADObjectId domain, String serverName, Int32 port, NetworkCredential credential)

위치: Microsoft.Exchange.Data.Directory.ConnectionPoolManager.GetConnection(ConnectionType connectionType, NetworkCredential networkCredential, String serverName, Int32 port)

위치: Microsoft.Exchange.Data.Directory.ADSession.GetConnection(String preferredServer, Boolean isWriteOperation, Boolean isNotifyOperation, String optionalBaseDN, ADObjectId& rootId, ADScope scope)

위치: Microsoft.Exchange.Data.Directory.ADSession.GetReadConnection(String preferredServer, ADObjectId& rootId, ADRawEntry scopeDeteriminingObject)

위치: Microsoft.Exchange.Data.Directory.ADGenericReader.GetNextResultCollection(Type controlType, DirectoryControl& responseControl)

위치: Microsoft.Exchange.Data.Directory.ADPagedReader`1.GetNextResultCollection()

위치: Microsoft.Exchange.Data.Directory.ADGenericPagedReader`1.GetNextPage()

위치: Microsoft.Exchange.Data.Directory.ADGenericPagedReader`1.<GetEnumerator>d__4.MoveNext()

위치: Microsoft.Exchange.Configuration.Tasks.GetTaskBase`1.WriteResult[T](IEnumerable`1 dataObjects)

위치: Microsoft.Exchange.Configuration.Tasks.GetTaskBase`1.InternalProcessRecord()

이벤트 Xml:

<Event xmlns="https://schemas.microsoft.com/win/2004/08/events/event">

  <System>

    <Provider Name="MSExchange Configuration Cmdlet - Remote Management" />

    <EventID Qualifiers="49152">4</EventID>

    <Level>2</Level>

    <Task>1</Task>

    <Keywords>0x80000000000000</Keywords>

    <TimeCreated SystemTime="2010-03-25T05:46:26.000000000Z" />

    <EventRecordID>11407150</EventRecordID>

    <Channel>Application</Channel>

    <Computer>********</Computer>

    <Security />

  </System>

  <EventData>

    <Data>9480</Data>

    <Data>72</Data>

    <Data>Get-Recipient</Data>

    <Data>0</Data>

    <Data>Microsoft.Exchange.Data.Directory.SuitabilityDirectoryException: OLD DC 서버 적합성을 확인하는 동안 Active Directory 오류 0x51이(가) 발생했습니다. 오류: 'Active Directory 응답: LDAP 서버를 사용할 수 없습니다.' ---&gt; System.DirectoryServices.Protocols.LdapException: LDAP 서버를 사용할 수 없습니다.

위치: System.DirectoryServices.Protocols.LdapConnection.Connect()

위치: System.DirectoryServices.Protocols.LdapConnection.BindHelper(NetworkCredential newCredential, Boolean needSetCredential)

위치: Microsoft.Exchange.Data.Directory.SuitabilityVerifier.CreateConnectionAndBind(String fqdn, Int32 portNumber, NetworkCredential credential)

   --- 내부 예외 스택 추적의 끝 ---

위치: Microsoft.Exchange.Data.Directory.SuitabilityVerifier.CreateConnectionAndBind(String fqdn, Int32 portNumber, NetworkCredential credential)

위치: Microsoft.Exchange.Data.Directory.SuitabilityVerifier.IsServerSuitable(String fqdn, Boolean isGlobalCatalog, NetworkCredential credential, String&amp; writableNC, LocalizedString&amp; errorMessage)

위치: Microsoft.Exchange.Data.Directory.ConnectionPoolManager.GetConnection(ConnectionType connectionType, ADObjectId domain, String serverName, Int32 port, NetworkCredential credential)

위치: Microsoft.Exchange.Data.Directory.ConnectionPoolManager.GetConnection(ConnectionType connectionType, NetworkCredential networkCredential, String serverName, Int32 port)

위치: Microsoft.Exchange.Data.Directory.ADSession.GetConnection(String preferredServer, Boolean isWriteOperation, Boolean isNotifyOperation, String optionalBaseDN, ADObjectId&amp; rootId, ADScope scope)

위치: Microsoft.Exchange.Data.Directory.ADSession.GetReadConnection(String preferredServer, ADObjectId&amp; rootId, ADRawEntry scopeDeteriminingObject)

위치: Microsoft.Exchange.Data.Directory.ADGenericReader.GetNextResultCollection(Type controlType, DirectoryControl&amp; responseControl)

위치: Microsoft.Exchange.Data.Directory.ADPagedReader`1.GetNextResultCollection()

위치: Microsoft.Exchange.Data.Directory.ADGenericPagedReader`1.GetNextPage()

위치: Microsoft.Exchange.Data.Directory.ADGenericPagedReader`1.&lt;GetEnumerator&gt;d__4.MoveNext()

위치: Microsoft.Exchange.Configuration.Tasks.GetTaskBase`1.WriteResult[T](IEnumerable`1 dataObjects)

위치: Microsoft.Exchange.Configuration.Tasks.GetTaskBase`1.InternalProcessRecord()</Data>

    <Data>{0a1c35dd-63a0-4b1f-b673-5c51462ed1ba}</Data>

  </EventData>

</Event>

HOW TO RESOLEVE. (Global 한 Exchange Users를 위해서 해결 방법은 영어로 적습니다)

1. ISSUE : EMC still look for old DC which was already demoted

2. Cause : Obsolete Information is cached in EMC file in windows profile with whom user has logged into the server..

3. How to Resolve:

  THis issue come from EMC cache related stuff.

  •   Close the EMC on the server
  •   Move to the below directory.  You can see several application cache file there.

    C:\users\<specific user>\AppData\Roaming\Microsoft\MMC\

  •     Delete Exchange management console file.
  •     Try to reopen Exchange management console and verify if there is still problem in manupulating EMC.

Wrtten by Jungseo.