Using EMCLI for Mass Update a Property Value

Here’s a quick and simple script which can help you to update a target property value of all targets running on a specific host. The script will expect you to enter 3 parameters: host name, property name and property value. Then it will search for the targets running on the given host name, and set the property to the given value:

It’s better to enter the property name in double quotes, because property names can contain spaces (for example “Line of Business”).

The script first checks the number of parameters, then login to OMS (enter your credentials – if you enter username but do not enter password, EMCLI will ask you to enter password when you run the script), gets the targets running on the given host (using EMCLI list command), and then executes set_target_property_value for each target. You may notice I give a non-default separator because some target names can contain colon (:) sign.

EMCLI: Add a Database Target with Specific DB System Name

On Oracle Community forum, I’ve seen a good question about using EMCLI to add targets. The forum user says that they decided to name the database targets with combining db_name and hostname. As you may know, when you add a database target, EM also creates a database system for the new target (or assign it with an existing one). The new database system’s name is generated by adding “_sys” to the database target name. Let’s we add a database target named TEST, EM will create a database system as TEST_sys. If we name our database target as “TEST_test.gokhanatil.com”, EM will create a database system named “TEST_test.gokhanatil.com_sys”.

In my personal opinion, Enterprise Manager provides enough flexibility to report these information so I wouldn’t use this kind of naming system but that’s not the point. As you see, it works well for stand alone databases but when you add a standby database to this system, it becomes confusing. For example, your TESTSTBY_stby.gokhanatil.com will be part of TEST_test.gokhanatil.com_sys. So the forum user asks if we can give a specific name to the database system instead of default naming. For example, our database system will be named as TEST_sys although its members are TEST_test.gokhanatil.com and TESTSTBY_stby.gokhanatil.com.

EM13c: Is It Possible to Delete a Job Run with EMCLI?

Enterprise Manager Cloud Control provides a centralized job scheduling system and it’s possible to control it through both web interface and EMCLI. On the other hand, it seems web interface provides more control over the past jobs, for example it’s not possible to delete a job run with EMCLI, while it’s possible to do it on web interface:

deleterun

EMCLI verb “get_jobs” reports all runs of the jobs, and “delete job” can delete job and its all runs but it’s not possible to delete a specific run of a job. For example, if you want to delete hundreds of “failed” (or “skipped”) runs of a job, EMCLI won’t help you and doing it through the web interface will be very time consuming.

Oracle Enterprise Manager Cloud Control: Write Powerful Scripts with EMCLI

Last week, I attended the Oracle Open World and did a presentation about writing scripts with EMCLI. If you’re not familiar with EMCLI, it’s the command line interface for Oracle Enterprise Manager Cloud Control. Here’s my presentation:

Although EMCLI is a very specific topic which appeals only to advanced users, a lot of people attended my session. I would like to thank Ray Smith (IOUG Director of Education) for his support. He did his best to inform people about my session.

If you attended my session or just checked the presentation slides, and have any questions about EMCLI scripting, please do not hesitate to ask me.

EM13c: Unique Database Service Names on DBaaS

When creating Database through Oracle Enterprise Manager Self Service Portal, we need to enter a “unique” value as database service name. After I set up DBaaS on EM13c, I made several tests until I fix the provision problems (based on my own faults). On each test, I cleaned up failed request, entered a unique service name and submitted a new request. I thought there’s no validation about the service name but then I got an error message complaning “non-unique service name”.

remove_reserved_artifact

As we can see, I tried to enter “murtaza” and it says “murtaza” is not available. I knew that I have already cleaned up failed requests, and there is no service named “murtaza”. Anyway I wanted to be sure and decided to check the existing database services. I noticed that there’s no page showing the existing service names! So I had to enter each database service and check the service name. I had only 3 database services, so it didn’t take so much time.

connection string

The connection string (which we’ll share with the request owner), contains the service name. I couldn’t find any service named “murtaza”. It must be used for a failed request. As I said, I have already cleared and deleted all failed requests, but somehow the service name was stored in the repository. Good thing is, EMCLI verb “dbaas_artifacts” can show and remove these service names which belongs to failed requests: