OEM-Jobs von einem Host auf ein anderen Host verschieben mit emcli

5. April 2021 0 Von Markus Flechtner

Ein Datenbank soll von einem Server auf einen anderen umziehen. Kein Problem. Allerdings gibt es für die Datenbank viele Host-Jobs im Enterprise Manager, die auf Shell-Skripten beruhen. Wie kann man diese Jobs einfach auf den neuen Server schieben?

 

Bei dieser Aufgabe hilft das Tools “emcli” (Enterprise Manager Command Line Interface), mit dem man – wie der Name schon sagt – viele OEM-Aktivitäten über die Kommandozeile erledigen kann.

Wenn emcli noch nicht installiert ist, dann hilft die Oracle-Dokumentation bei der Installation: https://docs.oracle.com/en/enterprise-manager/cloud-control/enterprise-manager-cloud-control/13.4/emcli/downloading-and-deploying-em-cli.html#GUID-17E6AC75-81A6-4FF8-B1C7-5682BFEC7B67

 

Schritt 1: Umgebung für den OMS setzen

Das tool emcli liegt im Middleware-Home des OMS, daher muss man erstmal die Umgebung (Pfade etc.) für dieses Home setzen.

oracle@kaki:~/ [oms13c] echo $ORACLE_HOME
/u00/app/oracle/product/oem13cr4/middleware

oracle@kaki:~/ [oms13c] which emcli
/u00/app/oracle/product/oem13cr4/middleware/bin/emcli

 

Schritt 2: Anmelden des emcli am OEM-Repository

Damit man mit emcli arbeiten kann, muss man sich am OEM-Repository anmelden und anschließend das emcli “synchronisieren”:

oracle@kaki:~/ [oms13c] emcli login -username=sysman
Enter password :

Login successful

oracle@kaki:~/ [oms13c] emcli sync
Synchronized successfully

 

Schritt 3: Liste der geplanten Jobs für einen Server anzeigen lassen

oracle@kaki:~/ [oms13c] emcli get_jobs -target="kaki.markusdba.local:host" -status_ids="1;"

Name     Type       Job ID                            Execution ID                      Scheduled            Completed  TZ Offset      Status     Status ID  Owner   Target Type  Target Name

TESTJOB  OSCommand  BF2D432F121E1E8DE0530801A8C049F6  BF2D432F12241E8DE0530801A8C049F6  2021-04-05 00:45:00  none       Europe/Berlin  Scheduled  1          SYSMAN  host         kaki.markusdba.local

Mit ‘-status_ids=”1;”‘ werden nur die geplanten Jobs auf dem Server angezeigt.

Im Folgenden sind die Jobnamen  wichtig.

 

Schritt 4: Job-Definitionen auslesen

Für jeden der in Schritt 3 angezeigten Jobs, die auf den neuen Server übernommen werden sollen, müssen die Job-Eigenschaften ausgelesen und in eine Datei geschrieben werden:

oracle@kaki:~/ [oms13c] emcli describe_job -name="TESTJOB" -owner="SYSMAN" >/home/oracle/testjob.txt

Das Ergebnis sieht dann so aus:

oracle@kaki:~/ [oms13c] cat /home/oracle/testjob.txt

# Current status of the job is ACTIVE.

name=TESTJOB
type=OSCommand
owner=SYSMAN
target_list=kaki.markusdba.local:host

#Number of targets : 1
# Credential Usage: defaultHostCred
# Description:

cred.defaultHostCred.<all_targets>:host=NAMED:SYSMAN:NC_HOST_ORACLE

# Description: (Optional) The complete command line, including parameters.

variable.default_shell_command=/home/oracle/oemjob.sh
schedule.frequency=REPEAT_BY_HOURS
schedule.startTime=2021-04-04 23:45:00
schedule.interval=1
schedule.timezone.region=Europe/Berlin

 

Schritt 5: Anpassen der Job-Definitionen

In die Job-Definitionen aus Schritt 4 müssen name und target_list angepasst werden.

In der Target-List muss der neue Server eingetragen werden.

Der Name des Jobs muss geändert werden, damit nicht beim Anlegen des neuen Jobs die Fehlermeldung (“Job XX already exists”) kommt. Wenn man den Namen nicht ändern möchte kann man den vorhandenen Job auch beenden und löschen:

oracle@kaki:~/ [oms13c] emcli stop_job -name="TESTJOB"
Job "TESTJOB" stopped successfully

oracle@kaki:~/ [oms13c] emcli delete_job -name="TESTJOB"
Job "TESTJOB" deleted successfully

Ergebnis (geänderte Job-Definition):

oracle@kaki:~/ [oms13c] cat /home/oracle/testjob.txt

# Current status of the job is ACTIVE.

name=TESTJOB2
type=OSCommand
owner=SYSMAN
target_list=kiwi.markusdba.local:host

#Number of targets : 1
# Credential Usage: defaultHostCred
# Description:

cred.defaultHostCred.<all_targets>:host=NAMED:SYSMAN:NC_HOST_ORACLE

# Description: (Optional) The complete command line, including parameters.

variable.default_shell_command=/home/oracle/oemjob.sh
schedule.frequency=REPEAT_BY_HOURS
schedule.startTime=2021-04-04 23:45:00
schedule.interval=1
schedule.timezone.region=Europe/Berlin

 

Schritt 6: neue Jobs anlegen

Durch Einlesen der geänderten Job-Definitionen werden die neuen Jobs angelegt:

oracle@kaki:~/ [oms13c] emcli create_job -input_file="property_file:/home/oracle/testjob.txt"
Creation of job "TESTJOB2" was successful.

 

Schritt 7: Kontrolle (Anzeige der geplanten Jobs auf dem neuen Server)

oracle@kaki:~/ [oms13c] emcli get_jobs -target="kiwi.markusdba.local:host" -status_ids="1;"

Name       Type       Job ID                            Execution ID                      Scheduled            Completed  TZ Offset      Status     Status ID  Owner   Target Type  Target Name
TESTJOB2  OSCommand  BF2D432F29431FC5E0530801A8C03FDB  BF2D432F29491FC5E0530801A8C03FDB  2021-04-05 00:45:00  none       Europe/Berlin  Scheduled  1          SYSMAN  host         kiwi.markusdba.local

 

Weitere Informationen:

 

 

Amazon-Partner-Link: