Tips and Techniques

This page is where I keep a random collection of odd items I’ve come across that might be of interest yet don’t deserve a full blog post. It’s sort of like a FAQ list, but not necessarily with the “F”. 🙂

Why does Hyper-V not find my ISO file?

Well, one reason I found. 🙂

Go to the Settings for the Hyper-V image, then click on “Security” (under “Hardware”). If Secure Boot is enabled, disable it so the code in the ISO file can run at boot time. Once you’ve created the VM, consider enabling secure boot again. 🙂

Is there a way to backup the BI reports in EM?

There is no way to do this “in bulk” that I’m currently aware of. However, you can back up each item in the BI Publisher user interface (report, data model etc.), clicking on the ‘more v’ drop-down and selecting download. It is also wise to backup the BI Publisher file-based repository located at: ./gc_inst/user_projects/domains/GCDomain/config/bipublisher/repository/Reports if there is a fear an upgrading wiping out data.

How can I tell if there is a way to monitor product ‘X’ as a target with Enterprise Manager?

The first place you should look is on the Certifications tab on My Oracle Support. For Product, select “Enterprise Manager Base Platform – OMS”. After choosing the product and version, you’ll see a page that lists various target types/versions that are certified.

The second place to look is on the EM Extensibility Exchange. This site provides a “one-stop shop” of resources for partners to submit their own extensions for Oracle Enterprise Manager, including management plug-ins, management connectors, deployment procedures, data masking templates and more.

How can I tell what port EM Express is using?

When DBCA completes, it indicates the port on which EM Express is configured. If that information is no longer available, there are two ways to find the HTTP/HTTPS port for EM Express:

$ lsnrctl status | grep HTTP
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=xxx.oracle.com)(PORT=5500))(Security=(my_wallet_directory=/u01/oracle/app/oracle/admin/orcl/xdb_wallet))(Presentation=HTTP)(Session=RAW))

or from SQL*Plus:

SQL> SELECT dbms_xdb.getHttpPort() FROM dual;
GETHTTPPORT
-----------
8080

SQL> SELECT dbms_xdb_config.getHttpsPort() FROM dual;
GETHTTPSPORT
------------
5500

Can I determine when a new target was added?

Yes, that’s very easy. The information is kept in the repository, so you just have to connect to the repository as SYSMAN and issue the following command:

SELECT target_name, creation_date FROM sysman.mgmt$target WHERE target_name = '<your_target_name>';

As another example, let’s say you wanted to determine all databases that have been created since a specific date. Again, very easy (change the date string to match the date you’re interested in):

SELECT target_name, creation date FROM sysman.mgmt$target WHERE target_type = 'oracle_database' AND creation_date > '<your_date>';

How do I set the DBA_AUTOTASK_WINDOW_CLIENTS.HEALTH_MONITOR column to ENABLE?

If I select the information from DB_AUTOTASK_WINDOWS_CLIENTS, I see the following:

WINDOW_NAMEWINDOW_NEXT_TIMEWINDOW_ACTIVEAUTOTASK_STATUSOPTIMIZER_STATSSEGMENT_ADVISORSQL_TUNE_ADVISORHEALTH_MONITOR
SUNDAY_WINDOW2016-08-21 06:00:00FALSEENABLEDENABLEDENABLEDDISABLEDDISABLED
SATURDAY_WINDOW2016-08-20 06:00:00FALSEENABLEDENABLEDENABLEDDISABLEDDISABLED
FRIDAY_WINDOW 2016-08-19 06:00:00FALSEENABLEDENABLEDENABLEDDISABLEDDISABLED
THURSDAY_WINDOW2016-08-18 06:00:00FALSEENABLEDENABLEDENABLEDDISABLEDDISABLED
WEDNESDAY_WINDOW2016-08-17 06:00:00FALSEENABLEDENABLEDENABLEDDISABLEDDISABLED
TUESDAY_WINDOW2016-08-16 06:00:00FALSEENABLEDENABLEDENABLEDDISABLEDDISABLED
MONDAY_WINDOW2016-08-22 06:00:00FALSEENABLEDENABLEDENABLEDDISABLEDDISABLED

The columns OPTIMIZER_STATS / SEGMENT_ADVISOR/ SQL_TUNE_ADVISOR can be set to ENABLE with the package DBMS_AUTO_TASK_ADMIN.ENABLE. However, the package cannot set HEALTH_MONITOR to ENABLE, so how do I set the DBA_AUTOTASK_WINDOW_CLIENTS.HEALTH_MONITOR to ENABLE?

The answer is you can’t, because there is no need to. Some basic health checks that are light weight are automatically run and do not need user intervention. The other health checkers are bit more intensive depending on the scope of the task and are not meant to be run automatically – they need to be invoked manually depending on what problem you see.

So you cannot automate the health checkers to run in maintenance windows, the important ones Oracle recommends do already run.

As an aside, the HEALTH_MONITOR column is unnecessary and will actually be removed soon (see bug# 24500338 for details).

How to fix BI Publisher not starting after abrupt system failure?

Sometimes, BIP is unable to start up after issuing command ’emctl start oms -bip_only’. This is particularly the case after an abrupt system failure or Cloud Control upgrade. If so, check Support Note 2053694.1, related to bug# 21451588.

Is there a way to connect to EMCLI on a client machine with the SYSMAN user without having to provide the password?

First of all, obviously consider the security implications of why you would want to do this!

After considering that, it can be done using the -autologin option for setup. See the details here.

How Do I Remove a Plug-in Through EMCLI?

Use the ‘undeploy’ verb to remove the plug-in from the OMS:

$ emcli undeploy_plugin_from_server -plugin=”plug-inId” [-sys_password=”sys_password”]

Documentation Reference

How do I resolve the “Firefox is already running, but is not responding. To open a new window, you must first close the existing Firefox process, or restart your system.” message?

This one has nothing to do with Enterprise Manager at all. It’s just something I run across fairly regularly in my work and need to look up each time because I can’t remember the resolution. Adding it here makes it easier for me to find it! 🙂

The answer for me (there are various other answers out there on the Internet as well) is to remove the $HOME/.mozilla/firefox/profile.ini file. Hope that helps you too!

What do I need to license for the OMS/OMR in EM?

This is a question I see fairly regularly, even though it is well documented in the license guide (note this is the EM13c link, but the details remain the same for EM12c).

In simple terms, you can say this:

  • Enterprise Manager has a restricted run-time license for the functionality used in Enterprise Manager. That includes the agents, the repository database, the middleware underlying the OMS, and BI Publisher.
  • However, if you try and extend the use of any of these items to user-owned objects (for example, you create your own tables in the OMR), you are NOT licensed for that purpose and must buy a normal license for that (in this example, that means you must buy an Oracle database license).
  • If you attempt to use any of the EM functionality that requires additional licensing for a target (e.g. notifications, which require the Diagnostics Pack if you are receiving notifications from a database target) against an EM environment, you require the equivalent licensing that you would for the target. Let me explain that a bit more clearly. Let’s say you wanted to receive notifications from the OMR. In a target database environment, that requires the Oracle Diagnostics Pack. For the OMR, you need the Oracle Diagnostics Pack to be licensed for the OMR database. This is clearly spelt out in the licensing guide under this heading, where it specifically says “excludes notifications” against the base framework feature Alerts and Metric Threshold Management.
  • Anything that is used internally by EM does NOT need additional licensing. For example, some of the tables in the OMR use partitioning. You do NOT need to buy an additional license for Oracle Partitioning to use this functionality. If, however, you create your own user tables and you partition those, you will in fact need two additional licenses – a database license for creating your own user tables in the OMR (as discussed earlier) and a partitioning license to allow you to partition your own tables. Please do not make the mistake of uninstalling these internally used options (as one customer I had did – it took weeks to rebuild the mess they made!), as EM will not function correctly after you do that.
  • As always, the Licensing Guide has the most up-to-date and correct information, so please validate all of this against that guide.

How do I disable BI Publisher?

My first reply to that is “Why would you want to?” 🙂 BI Publisher is now the default reporting tool in Enterprise Manager (which it has been since EM12c was announced). The old Information Publisher tool, while still supported, is deprecated, meaning there is no longer any active development of the tool being done.

However, there are some sites that still don’t use BI Publisher at all, so if that’s the case and you want to stop it using any machine resources at all (NOTE: BI Publisher is NOT resource intensive anyway), then here are the steps to disable it. These need to be performed on each OMS in a multi-OMS configuration:

  • Stop BI Publisher using:
    emctl stop oms -bip_only
  • Change to the OMS instance directory e.g.
    cd gc_inst/em/EMGC_OMS1
  • Move the EM BIP properties file to another file name (this is so you have a backup)
    mv embip.properties embip.properties.<todays_date>

This is much easier than the other method of removing BI Publisher which would need a complete re-install if you want to put it back. The beauty of it is when you decide to use BI Publisher in the future, you can just rename the file back again. And just to whet your appetite, there is full support for disabling BI Publisher in the next release via a new command.

Update: And the new command as of EM13.1 is:

$ emctl config oms -disable_bip [-sysman_pwd ]

BI Publisher Reports Internet Explorer 11 issue

Using Internet Explorer 11 and BI Publisher 11.1.1.7.150120, you may come across an issue where a parameter drop down list appears before a report is run, but after the report is run the list is cut off (i.e. it doesn’t show the complete list). This issue does not appear on IE versions 8, 9, or 10.

This is a known issue, addressed in the patch for Bug 19708421.

What firewall ports do I need to have open?

Thanks to my colleague Courtney Llamas of courtneyllamas.com fame, you need access to the following via 443/https:

updates.oracle.com
support.oracle.com
ccr.oracle.com
login.oracle.com
aru-akam.oracle.com

If you haven’t got access to those, you may well see the error “Unable to complete network operation against My Oracle Support. Please check network connectivity to Oracle Support Site.” when you attempt to setup MOS credentials in EM12c.

What will happen if EM sends emails notifications and the smtp server is down?

An interesting question!

Starting with EM 12.1.0.3 (and higher versions), if the gateway comes back up within 1 hour, there would no loss in email notifications. This time period is configurable through an OMS parameter: oracle.sysman.core.notification.max_email_delivery_time. (We’ve noticed it is not in the doc, so we’ll update that to include it).

Prior to 12.1.0.3, there was no grace period, so email would not be sent but EM would note down the failure to send email.

How do I change the timeout for the console?

One of the questions I see on a regular basis is how do I change the timeout for the console. It’s easy to find the answer for this, if only you know what to google for. 🙂 The OMS property that controls the timout is oracle.sysman.eml.maxInactiveTime (see, I told you it was easy if you knew what to google for, and who wouldn’t think of googling for that?!)

To find out what the value is currently set to, set your environment to the OMS home, and then use:

$ emctl get property -name oracle.sysman.eml.maxInactiveTime

That will either display a value (in minutes) or null (which means the default of 45 minutes). Depending on your security requirements, you can set the property to any value in minutes that you want, or you can disable the timeout completely by setting the property to -1 (NOTE: this is NOT recommended from a security perspective!):

$ emctl set property -name oracle.sysman.eml.maxInactiveTime -value -1 -sysman_pwd your_password_goes_here

You will need to restart the OMS to reflect the new value (you will be prompted to do this anyway):

$ emctl stop oms
Oracle Enterprise Manager Cloud Control 12c Release 4
Copyright (c) 1996, 2014 Oracle Corporation. All rights reserved.
Stopping WebTier…
WebTier Successfully Stopped
Stopping Oracle Management Server…
Oracle Management Server Successfully Stopped
Oracle Management Server is Down

$ emctl start oms
Oracle Enterprise Manager Cloud Control 12c Release 4
Copyright (c) 1996, 2014 Oracle Corporation. All rights reserved.
Starting Oracle Management Server…
Starting WebTier…
WebTier Successfully Started
Oracle Management Server Successfully Started
Oracle Management Server is Up
Starting BI Publisher Server …
BI Publisher Server Already Started
BI Publisher Server is Up

If you have a load balancer in place, you need to follow the directions in Note 1478495.1.

UPDATE: I’m not sure if this change came in 12.1.0.5 or 13.1, as I no longer have an EM12c environment to test this on, but the parameter is now dynamic i.e. there is no need to stop and restart the OMS when you change it. Also, in EM13.1 you can set this through the UI by going to Setup -> Manage Cloud Control -> Management Servers, then select Configuration Properties from the Management Servers dropdown menu. Next, click on the Set Property Value button, enter “oracle.sysman.eml.maxInactiveTime” (without the quotes) in the Name field and click the magnifying glass. Enter a value of -1 for the global setting and click Save. Voila!

What is the difference between Oracle Multitenant Snapshot Copy and EM Snap Clone?

This is a question I see more and more as people start looking both at the Multitenant architecture that comes with Oracle Database 12c and the Snap Clone functionality that’s part of Enterprise Manager. The best answer I’ve seen on that question comes from Sudip Datta, my VP, so let me steal some of his words. 🙂

To understand how these work end to end, think of the Dev-Test-Prod refresh process as one needing 3 pieces of layered, complementary technologies:

  1. Copy on Write (COW) capabilities provided by the Storage layer: These are native capabilities supported by NAS vendors like Netapp, ZFS SA or filesystems like ZFS and ACFS. These native capabilities operate on volumes (block devices), but have no understanding of the database topology. However, they are pre-requisites for both PDB Snapshot Copy and EM Snap Clone.
  2. Database layer capabilities to leverage the capabilities of #1: This is where PDB Snapshot Copy figures. It leverages the COW capabilities (#1) of the storage layer. It offers command line APIs to clone PDB’s.
  3. A management application that provides workflow capabilities to leverage the capabilities of #2 or #1: This is where Enterprise Manager 12c Snap Clone figures. Wherever there are database layer abstractions (APIs) available to clone such as dNFS or PDB Snapshot, it tries to use #2. In cases where it is not available, such as 10g or 11g (in non-dNFS node) database versions, it can directly interact with the storage layer capabilities (#1) and uses additional discovery and registration methods to map the databases to the volumes. As a part of the workflow, it can also enable Self-Service capabilities and REST APIs. It can also enable quota, chargeback and lineage tracking.
When should I use EMCLI versus Deployment Procedures?

Saw a question recently on EMCLI versus deployment procedures and when you would use one over the other, particularly since the 12.1.0.4 release allows jython scripting mode. Well, yet again, the answer is “It depends”. 🙂 It is very context sensitive, so based on the actions you wish to perform you choose one over the other.

Using EMCLI allows greater flexibility and interactivity and it can be easier to use for the more typical tasks like stopping or starting targets, creating blackouts etc. Using deployment procedures for more complex procedures allows you to use the traceability in the EM. They are also asynchronous, and it is easy to create workflows with different steps. There really isn’t a recommendation for one over the other, though. You should be using both, depending on the specific case and taking advantage of each method for that specific case:

  • Deployment procedures can be more oriented to provisioning and patching. This type of automation should be used for more complex procedures like updates, rolling patches, upgrades and so on.
  • Other flows may be more interactive and shorter. For these it is better to use EMCLI programmatically.

There is two other differences though. Firstly, since deployment procedures can be executed via the user interface, they support role based access. As a result, you can model designer and operator roles for different classes of users. And secondly, deployment procedures support locking of variable values. This isn’t available via EMCLI. Each person who will execute the EMCLI scripts needs their own copy of the script, which they can then modify before execution. From a security perspective, this mode of execution needs to be chosen wisely.

Why is Microsoft AD authentication not allowing me to login to the console?

I followed the instructions on this link. Now I can browse the objects in the WebLogic console and query users against AD, but the AD authentication for the EM12c console isn’t working. What’s wrong?

The answer is that particular video is outdated, if you’re running anything later than 12.1.0.2. There is a more efficient, less error prone way to configure EM for AD authentication using the “emctl config auth ad” command, documented here. You still need to know the information mentioned in the YouTube video but performing the “emctl config auth ad” command will prevent you from having to manually enter the information in WLS.

How do I add a PDB as an entity in Chargeback?

If you have a lot of entities to search through, you may want to select a PDB to add as an entity in the Chargeback application. The problem is you can’t search via a Target Type of “Pluggable Database” or even “Container Database”. Instead the way to do this is to deselect the Target Type of “All” and then select “Database Instance”, as shown below:

chargeback_CDB

You can the select the CDB from the list of databases, and all the PDB’s that are part of that CDB will be auto-discovered as children.

Leave a Reply

Your email address will not be published. Required fields are marked *