Grid Control 11g / DB console 11g - Windows Host Credentials Albtraum
Wenn man beim Konfigurieren und Testen der Windows Host Credentials immer nur die Meldung "Connection to myWindowsHost.example.com as user myOsUser failed." bzw "Verbindung zu myWindowsHost.example.com als Benutzer MyOSUser fehlgeschlagen." als Antwort erhält...
Eigenheiten von Windows
Damit man unter Windows erfolgreiche Verbindungen zum Agent und zur Datenbank sicherstellen kann, sollten diese nicht - wie es bei einer Default Oracle Installation bis Oracle 11gR2 erfolgt - unter dem lokalen SYSTEM laufen, sondern unter einen eigenen Windows Benutzer.
Um dies zu erreichen, muss man alle betroffenen Services (Datenbank Service, Listener Service, Agent Service,....) stoppen und den Benutzer unter dem das Service läuft korrigieren (damit es keine Probleme gibt wenn die Windows Domain Controller spinnen, werden lokale Benutzer empfohlen).
Checkliste - Windows Benutzer für Oracle Services
-
Bei jedem Service muss man mittels klick mit der rechten Maustaste --> Eigenschaften/Properties diese öffnen und am Reiter "Logon" von "Local System Account" auf "Dieses Account" umstellen.
-
Dieser Benutzer muss dann in der Lokalen Gruppe ORA_DBA Mitglied sein (sinnvollerweise auch in der lokalen Administrator Gruppe, damit man auch am Desktop lokal anmelden kann).
-
Der Benutzer muss im User Management ENABLED sein und darf auch nicht sein Passwort ändern müssen.
-
In den "Advanced User Rights" muss man dem Benutzer folgende Rechte einräumen:
log on as a batch job
act as part of the operating system
log on locally
log on as a service
adjust memory quotas for a process
increase memory quotas
increase quotas
replace a process level token
Nicht alle Rechte gibt es bei jeder Widnows Version, dies stellt die umfassendste Liste dar.
Der Fehler tritt immer noch auf - muss man zu Debuggen beginnen
Im Agent $ORACLE_HOME/sysman/config/emd.properties muss man folgende Einstellungen setzen:
tracelevel.Dispatcher=DEBUG
tracelevel.Authentication=DEBUG
nmotracing=true
SSL Handshake
Gibt es Probleme beim SSL Handshake - zu finden im Agent $ORACLE_HOME/sysman/log im emagent.trc file:
2014-04-14 15:05:24,766 Thread-5704 ERROR ssl: nzos_Handshake failed, ret=28860
2014-04-14 15:05:24,766 Thread-5704 ERROR http: 1316: Error initializing SSL connection for incoming request, aborting request. ret=-10
In diesem Fall scheitert man daran, dass der Agent und der OMS kein gemeinsames Zertifikat haben (sprich das Agent Zertifikat am OMS nicht bekannt ist. Die Schritte zur Lösung sind:
-
Stoppen des Agents: emctl stop agent
-
Stoppen des OMS (Enterprise Managers): emctl stop oms -all
-
Das Zertifikat File "b64LocalCertificate.txt" von Agent $ORACLE_HOME/sysman/config öffnen.
-
Das Zertifikat File "b64LocalCertificate.txt" von OMS ...gc_inst/<EMGC_OMS1>/sysman/config öffnen und das Zertifikat vom Agent anfügen (Vorsicht KEINE LEERZEILEN erzeugen!) und speichern
-
Den OMS wieder starten: emctl start oms
-
Den Ageng wieder starten: emctl start agent
-
Die Host Credentials testen.
Damit sollten die SSL Handshake Probleme beseitig sein, und man sollte DEBUG Information der Anmeldung vorfinden, sofern es immer noch nicht funktioniert.
Hier ein Beispiel eines Login DEBUGs aus dem emagent.trc:
2014-04-14 15:36:39,109 Thread-6460 INFO Dispatcher: nmemdisp.c: Entering nmemdisp_Dispatcher_main
2014-04-14 15:36:39,109 Thread-6460 INFO Dispatcher: nmemdisp_Dispatcher_main: Request Api number: 10627 ID: Tag Name RemoteOperationReq
2014-04-14 15:36:39,109 Thread-6460 DEBUG Dispatcher: nmemdisp_Dispatcher_startActivity: Registering Activity RemoteOperationReq
2014-04-14 15:36:39,109 Thread-6460 DEBUG Dispatcher: nmemdisp_Dispatcher_startActivity: Started Activity RemoteOperationReq
2014-04-14 15:36:39,109 Thread-6460 INFO Dispatcher: process RemoteOpReq
2014-04-14 15:36:39,125 Thread-6460 INFO Authentication: Default nmo binary has setuid permissions
2014-04-14 15:36:39,125 Thread-6460 DEBUG Authentication: Successfully sent CLEAR severity for non setuid nmo
2014-04-14 15:36:39,125 Thread-6460 DEBUG Authentication: nmejcap.c: argv =
2014-04-14 15:36:39,125 Thread-6460 DEBUG Authentication: nmejcap.c: 0: d:\Oracle\product\agent11g\perl\bin/perl
2014-04-14 15:36:39,125 Thread-6460 DEBUG Authentication: nmejcap.c: 1: -
2014-04-14 15:36:39,141 Thread-6460 DEBUG Authentication: nmejcap.c: 2: example\myOSUSer
2014-04-14 15:36:39,141 Thread-6460 DEBUG Authentication: nmejcap.c :_adjustArgsForPDP args[0] = d:\Oracle\product\agent11g\perl\bin/perl
2014-04-14 15:36:39,141 Thread-6460 DEBUG Authentication: nmejcap.c :_adjustArgsForPDP args[1] = -
2014-04-14 15:36:39,141 Thread-6460 DEBUG Authentication: nmejcap.c :_adjustArgsForPDP args[2] = example\myOSUSer
2014-04-14 15:36:39,141 Thread-6460 DEBUG Authentication: nmejcap_Process_remote_new: nmejcap: Local process
2014-04-14 15:36:39,141 Thread-6460 DEBUG Authentication: nmejcap_Process_run : PROCESS_TYPE (LOCAL_RUN) RETURN_FROM_PROCESS_RUN (0)
2014-04-14 15:36:39,141 Thread-6460 DEBUG Authentication: nmejcap: (PDP-auth) Exiting nmejcap_Process_PDP_Authenticate.
2014-04-14 15:36:40,203 Thread-6460 DEBUG Authentication: nmejcap.c: ret=-10, buf=''
2014-04-14 15:36:40,203 Thread-6460 DEBUG Authentication: nmejcap: read error 7 from process
2014-04-14 15:36:40,203 Thread-6460 DEBUG Dispatcher: nmemdisp_Dispatcher_endActivity: End Activity RemoteOperationReq
Dazu findet man auf dem OMS im emoms.trc folgende Zeilen:
2014-04-14 15:34:21,918 [EMUI_15_34_19_/console/pref/setCredentials$targetType=host] ERROR creds.SetPrefCreds testCreds.1690 - SetPrefCreds.testCreds(): CredsException: Anmeldung bei myWindowsHost.example.com als Benutzer example\myOSUSer nicht erfolgreich.
2014-04-14 15:36:40,324 [EMUI_15_36_38_/console/pref/setCredentials$targetType=host] ERROR creds.SetPrefCreds testCreds.1690 - SetPrefCreds.testCreds(): CredsException: Anmeldung bei myWindowsHost.example.com als Benutzer example\myOSUSer nicht erfolgreich.
2014-04-14 15:36:51,231 [XMLLoader0 70000000007.xml] ERROR track.SnapshotFactory captureSnapshotIntoRepository.1677 - ECM: Load of Host Configuration failed for myWindowsHost.example.com: Unparseable date: "2014-04-14 15:36:34 (CEST)"
In diesem Fall war der Fehler ein Tippfehler im Passwort - andere Fehler würden in dem Tracefile entsprechend vermerkt werden.