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 서버를 사용할 수 없습니다.' ---> 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()</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.