Blog Name
  • November 2018

Cloud Control: Export und Import von Target Properties

Wenn in einem Unternehmen mehrere Installationen von Cloud Control betrieben werden, ist es manchmal erforderlich ein Target (also ein Zielsystem) von einer Cloud Control Installation zu einer anderen zu verschieben. Eine direkte Migration von einem EM Repository in ein anderes ist nicht möglich. Aber einzelne Informationen, wie zum Beispiel die Target Properties können mit einem einfachen Workaround exportiert und importiert werden. Dieser Tipp zeigt, wie das funktioniert.

Dieser Tipp entstand aus einer realen Kundenanfrage: aufgrund von Änderungen in der Netzwerktopologie sollten aus einem Cloud Control mehrere Installationen erstellt werden. Dabei war klar, dass dazu neue Agenten installiert werden müssen, und ein Target Discovery neu durchgeführt werden muß. Es stand fest, dass alle Targets ihren alten Namen behalten sollen. Da bei diesem Kunden die Target Properties intensiv genutzt werden, kam die Frage auf, ob die Werte der Target Properties von einer Cloud Control Installation zu einer anderen transportiert werden können, es also einen Weg eines Exports/Imports gibt.

Ein Blick in die GUI von Cloud Control zeigt, dass dieses Vorgehen nicht angeboten wird. In EMCLI (Enterprise Manager Command Line Interface) gibt es ein Verb (Kommando) mit dem Namen "set_target_property", welches für ein Import verwendet werden könnte, jedoch fehlt ein Verb zum Auslesen aller Property Werte, zumindest gilt das für die aktuelle Version EM 13.3.

Um die Werte aller Target Properties auslesen zu können bleibt also nur der direkte Blick in das EM Repository und die Views MGMT$TARGET_PROPERTIES und MGMT$ALL_TARGET_PROP_DEFS. Damit der Import optimal vorbereitet wird, wird das SELECT Kommando gleich so geschrieben, dass die passenden EMCLI Kommandos erzeugt werden:

select distinct 'emcli set_target_property_value -property_records="'||p.target_name||':'||p.target_type||':'||d.property_display_name||':'||p.property_value||'"'
from MGMT$TARGET_PROPERTIES p, MGMT$ALL_TARGET_PROP_DEFS d
where p.property_name=d.property_name
and d.PROPERTY_NAME not in ('orcl_gtp_platform','orcl_gtp_target_version','orcl_gtp_os');

emcli set_target_property_value -property_records="emrep.example.com:oracle_database:Downtime Contact:Ralf Durben"
emcli set_target_property_value -property_records="emrep.example.com:oracle_database:Location:Lippstadt"

Diese Abfrage blendet drei Properties aus, die nicht manuell gesetzt werden sollten, da sie beim Discovery automatisch mit einem Wert belegt werden: Plattform, Version und Betriebssystem.

Die obige Abfrage "exportiert" aber nur die Werte der Standardproperties. Benutzerdefinierte Properties sind in der View MGMT$ALL_TARGET_PROP_DEFS leider nicht gelistet. Um auch diese benutzerdefinierten Properties erfassen zu können muß noch ein zweiter Leseaufruf durchgeführt werden:

select distinct 'emcli set_target_property_value -property_records="'||p.target_name||':'||p.target_type||':'||tpd.property_display_name||':'||p.property_value||'"'
from MGMT$TARGET_PROPERTIES p, GC_TARGET_PROP_DEFS tpd
where p.property_name=tpd.property_name
and tpd.PROPERTY_NAME like 'udtp%';

emcli set_target_property_value -property_records="emrep.example.com:oracle_database:Approval:RD"
emcli set_target_property_value -property_records="emrep.example.com:oracle_database:Usage:EM Repository"

Letztlich kombiniert man diese beiden Abfragen mit einem UNION und schon ist man am Ziel:

select distinct 'emcli set_target_property_value -property_records="'||p.target_name||':'||p.target_type||':'||d.property_display_name||':'||p.property_value||'"'
from MGMT$TARGET_PROPERTIES p, MGMT$ALL_TARGET_PROP_DEFS d
where p.property_name=d.property_name
and d.PROPERTY_NAME not in ('orcl_gtp_platform','orcl_gtp_target_version','orcl_gtp_os')
union
select distinct 'emcli set_target_property_value -property_records="'||p.target_name||':'||p.target_type||':'||tpd.property_display_name||':'||p.property_value||'"'
from MGMT$TARGET_PROPERTIES p, GC_TARGET_PROP_DEFS tpd
where p.property_name=tpd.property_name
and tpd.PROPERTY_NAME like 'udtp%';

emcli set_target_property_value -property_records="emrep.example.com:oracle_database:Downtime Contact:Ralf Durben"
emcli set_target_property_value -property_records="emrep.example.com:oracle_database:Location:Lippstadt"
emcli set_target_property_value -property_records="emrep.example.com:oracle_database:Approval:RD"
emcli set_target_property_value -property_records="emrep.example.com:oracle_database:Usage:EM Repository"

Falls Sie die Abfrage in SQL*Plus ausführen empfiehlt es sich noch, folgende Einstellungen vorzunehmen, damit die Ausgabe auch gleich als Skript verwendet werden kann:

set heading off linesize 200 echo off 
spool import_properties.sh

select distinct 'emcli login -username=sysman' from dual;

select distinct 'emcli set_target_property_value -property_records="'||p.target_name||':'||p.target_type||':'||d.property_display_name||':'||p.property_value||'"'
from MGMT$TARGET_PROPERTIES p, MGMT$ALL_TARGET_PROP_DEFS d
where p.property_name=d.property_name
and d.PROPERTY_NAME not in ('orcl_gtp_platform','orcl_gtp_target_version','orcl_gtp_os')
union
select distinct 'emcli set_target_property_value -property_records="'||p.target_name||':'||p.target_type||':'||tpd.property_display_name||':'||p.property_value||'"'
from MGMT$TARGET_PROPERTIES p, GC_TARGET_PROP_DEFS tpd
where p.property_name=tpd.property_name
and tpd.PROPERTY_NAME like 'udtp%';
spool off

emcli login -username=sysman
emcli set_target_property_value -property_records="emrep.example.com:oracle_database:Downtime Contact:Ralf Durben"
emcli set_target_property_value -property_records="emrep.example.com:oracle_database:Location:Lippstadt"
emcli set_target_property_value -property_records="emrep.example.com:oracle_database:Approval:RD"
emcli set_target_property_value -property_records="emrep.example.com:oracle_database:Usage:EM Repository"

Zum Import in das neue System braucht man dort nur eine Sitzung in EMCLI und führt die erzeugten Kommandos aus, oder startet das erzeugte Skript, welches eine EMCLI Sitzung erzeugt.

Weitere Informationen


 

Zurück zum Anfang des Artikels

Zurück zur Community-Seite
 

Visit the Oracle Blog

 

Contact Us

Oracle

Integrated Cloud Applications & Platform Services