We can create our own target property classifications using EM CLI. In this example we’ll create a new property named “Product Type”. In my shop we’ll use that property to identify Oracle RAC and single instance databases, but also noSQL targets that we’re adding to our EM environment.
Here’s the syntax for creating the new target property:
emcli add_target_property -target_type=”*” -property=”Product Type”
Property “Product Type” added successfully
The new target property can now be applied with EM CLI using the syntax:
emcli set_target_property_value -property_records=”target_name:target_type:property_name:property_value”
emcli set_target_property_value property_records=”SPECIAL_DEMO_2:rac_database:Product Type:OracleRAC”;
Properties updated successfully
That’s cool, but now I need to apply it to >500 targets, right? Let’s build the CLI statement from a SQL query against the SYSMAN schema:
’emcli set_target_property_value -property_records=”‘
|| ‘:Product Type:OracleRAC”;’
WHERE target_type LIKE ‘rac_database’
AND target_name NOT IN ( SELECT target_name
WHERE property_name = ‘udtp_1’
AND property_value = ‘OracleRAC’ );
Notice that the query is filtered by the property_value (OracleRAC) and a property_name of udtp_1! Oracle has assigned a generic-looking name to our custom user defined target property name, just as they use orcl_gtp* for OEM-defined properties. These abstractions are only used in the repository and within the OEM application itself. The user-readable property name appears in the console.
Test the new property by running the CLI command for a single target and then execute the subquery (containing the udtp_1 property_name above) against the OMR. Confirm that it’s performing as expected by looking up the target’s properties in the console.
Hang onto that SQL query after your deployment to periodically label new targets as they’re added to your environment. I have several SQL queries like this posted to a single Information Publisher report (surprise!) that I mail to myself nightly. You can also set up an OEM Job to execute the CLI commands for you.