Tag Archives: error

R12.2 eBusiness Suite EBS – During ADOP phase = prepare data dictionary corruption missing parent

Adop-PrepareDuring an online patching session with ADOP, when the prepare phase checks the data dictionary integrity, you receive the following error:

R12.2 eBusiness Suite EBS – During ADOP phase = prepare data dictionary corruption missing parent:
Verifying data dictionary.
[UNEXPECTED]Data dictionary corrupted:
[UNEXPECTED]Data dictionary corruption – missing parent
1416131 ORA$BASE APPS BPA_GUIDED_PICKING SYNONYM
1416121 ORA$BASE APPS CO_CLIPPERSHIP_INTERFACE SYNONYM
1416132 ORA$BASE APPS BPA_PRINT_GUIDED_PICK_LABELS SYNONYM
1416128 ORA$BASE APPS GEM_ESIG_INQUIRY_CORE SYNONYM
[UNEXPECTED]Data dictionary corruption detected. Provide details to
[UNEXPECTED]Oracle Support and ask for a bug to be opened against the
[UNEXPECTED]Online Patching component of Oracle Application Install.

[STATEMENT] Please run adopscanlog utility, using the command

“adopscanlog -latest=yes”

Issue:

The corruption is detected with the $AD_TOP/sql/ADZDDBCC.sql scriptis executed just prior to setting up the ADOP session.  This is also a mandatory check performed during pre-upgrade readiness checking for R12.2 upgrades.

Solution:

There is a rudimentary, but effective script supplied in $AD_TOP/patch/115/sql named adzddmpfix.sql (and a number of other adzd___ named scripts that address other data dictionary issues, such as the common TimeZone timestamp issues (Doc ID 2017686.1))

This script is run as SYS and requires all middle-tier services to be shutdown because it’s rebuilding all of the APPS synonyms for objects and recompiling afterwards.

sqlplus “/ as sysdba” @$AD_TOP/patch/115/sql/adzddmpfix.sql

REM $Header: adzddmpfix.sql 120.0.12020000.3 2015/09/14 10:10:32 sstomar noship$
REM dbdrv: none
REM +======================================================================+
REM | Copyright (c) 2005, 2015 Oracle and/or its affiliates. |
REM | All rights reserved. |
REM | Version 12.0.0 |
REM +======================================================================+
REM | FILENAME
REM | adzddmpfix.sql
REM |
REM | DESCRIPTION
REM | Warning: this script is an experimental workaround to the Oracle
REM | Database data Dictionary “missing parent” corruption described in
REM | Bug 20627866. This bug currently has no other known fix, but this
REM | script will repair the problem sufficiently to allow adop to continue
REM | executing.
REM |
REM | Warning: You must be connected as SYSDBA with application services
REM | shutdown to run this script
REM | Usage:
REM | sqlplus / as sysdba
REM | @adzddmpfix.sql
REM |
REM |
REM +=======================================================================+

Sample output:

SQL> @adzddmpfix.sql
“—- Fixing Data Dictionary Corruptions (missing parent) —-”

4 rows deleted.

Commit complete.

System altered.

“—- Compiling invalids —-”

Don’t forget to re-run the $AD_TOP/sql/ADZDDBCC.sql script to identify whether the data dictionary corruption is still present afterwards.

 

Advertisement

How To Get Those Customizations to Work Correctly with Oracle EBS R12.2 Editioning (EBR)

Oracle e-Business Suite R12.2 Overview of Edition-Based Redefinition (EBR) in 11gR2 databases.
Oracle e-Business Suite R12.2 Overview of Edition-Based Redefinition (EBR) in 11gR2 databases.

Scenario:
Creating a new view based upon the AP.AP_SUPPLIERS table to reside in a new XXCUSTOMSCHEMA.

If you attempt the simple:

create or replace force view XXCUSTOMSCHEMA.AP_SUPPLIER_NEW_V
as
SELECT *
FROM ap.ap_suppliers ;

It works, but your data and table definition may change whenever patching editions are in-play.

If you attempt to just reference the editioned object instead:

create or replace force view XXCUSTOMSCHEMA.AP_SUPPLIER_NEW_V
as
SELECT *
FROM ap.ap_suppliers# /* or the preferred apps.ap_suppliers synonym */

You will receive the ominous ORA-38818: illegal reference to editioned object error message.

What’s missing? The XXCUSTOMSCHEMA isn’t recognized as an edition-friendly schema by Oracle’s e-Business Suite (nor the database), yet.

Create your XXCUSTOMSCHEMA in the usual way:

create user XXCUSTOMSCHEMA
identified by (password)
default tablespace USERS
temporary tablepace TEMP
profile DEFAULT
account UNLOCK;

/* as APPS user */

exec FND_ORACLE_USER_PKG.LOAD_ROW(‘XXCUSTOMSCHEMA’, ‘CUSTOM’, ‘INVALID’, NULL, ‘N’, ‘B’);

/* as SYSTEM user */

alter session set current_schema=APPS;
exec AD_ZD_PREP.ENABLE_CUSTOM_USER(‘XXCUSTOMSCHEMA’);

/* Create your SELECT grants to the editioned objects as APPS user */

grant select on ap.ap_suppliers#  to XXCUSTOMSCHEMA;

/* OR if you’re running newer than 12.2.5…the editioning security will cause hundreds of invalid editioned object stubs that need re-compilation unless you instead use */

exec AD_ZD.grant_privs(‘SELECT’, ‘AP_SUPPLIERS’, ‘XXCUSTOMSCHEMA’,X_GRANT_TO_TABLE=>TRUE)

PL/SQL procedure successfully completed.

SQL> exec AD_ZD.revoke_privs(‘SELECT’,’AP_SUPPLIERS’,’XXCUSTOMSCHEMA’);

/* Create your custom view referencing the APPS synonym – which points to the editioned object */

create or replace force view XXCUSTOMSCHEMA.AP_SUPPLIER_NEW_V
as
SELECT *
FROM apps.ap_suppliers ;

This is the same process when creating procedures and functions with the usual caveat that unless it’s a 12c database, you cannot create materialized views on the editioned objects.

For the 11gR2 EBS users, you would stick with the existing non-editioned table object reference:

CREATE MATERIALIZED VIEW APPS.XXAP_SUPPLIER_NEW_MV
(
vendor_id,
vendor_name
)
AS
SELECT aps.vendor_id, aps.vendor_name
FROM ap.ap_suppliers aps;

/* The owning schema for the materialized view must have CREATE TABLE, VIEW AND INDEX privileges on the destination tablespace */

R12.2 adop phase fs_clone fails because it can’t copy a file.

Complexity leading to fragility
Complex Systems Integration (Courtesy of: https://www.mulesoft.com/resources/esb/business-process-integration)

Oracle…sometimes blinding in complexity, and a foreshadowing of what happens when a system becomes so complex that it becomes fragile.

This is what the screen session looks like:

adnodemgrctl.sh: check the logfile /u01/oradev/fs1/inst/apps/DEV2_itsrv33m/logs/appl/admin/log/adnodemgrctl.txt for more information …
[UNEXPECTED]fs_clone has failed.
[STATEMENT] Please run adopscanlog utility, using the command
“adopscanlog -latest=yes”
to get the list of the log files along with snippet of the error message corresponding to each log file.
adop exiting with status = 2 (Fail)

Here is what it looks like in the adop.log

[EVENT]     Performing CLONE steps.
[PROCEDURE] [START 2016/11/08 08:20:19] CLONE Patch File System from Run File System
[PROCEDURE] Calling: /u01/oradev/fs2/EBSapps/appl/ad/12.0.0/patch/115/bin/txkADOPPreparePhaseSynchronize.pl
[EVENT]     Log: /u01/oradev/fs_ne/EBSapps/log/adop/25/20161108_081645/fs_clone/itsrv33m
[UNEXPECTED]Error occurred running “perl /u01/oradev/fs2/EBSapps/appl/ad/12.0.0/patch/115/bin/txkADOPPreparePhaseSynchronize.pl -contextfile=/u01/oradev/fs2/inst/apps/DEV2_itsrv33m/appl/admin/DEV2_itsrv33m.xml -patchcontextfile=/u01/oradev/fs1/inst/apps/DEV2_itsrv33m/appl/admin/DEV2_itsrv33m.xml -promptmsg=hide -console=off -mode=create -sync_mode=copy -sessionid=25 -timestamp=20161108_081645 -outdir=/u01/oradev/fs_ne/EBSapps/log/adop/25/20161108_081645/fs_clone/itsrv33m”
[UNEXPECTED]occurred during CLONE Patch File System from Run File System, running command: “perl /u01/oradev/fs2/EBSapps/appl/ad/12.0.0/patch/115/bin/txkADOPPreparePhaseSynchronize.pl -contextfile=/u01/oradev/fs2/inst/apps/DEV2_itsrv33m/appl/admin/DEV2_itsrv33m.xml -patchcontextfile=/u01/oradev/fs1/inst/apps/DEV2_itsrv33m/appl/admin/DEV2_itsrv33m.xml -promptmsg=hide -console=off -mode=create -sync_mode=copy -sessionid=25 -timestamp=20161108_081645 -outdir=/u01/oradev/fs_ne/EBSapps/log/adop/25/20161108_081645/fs_clone/itsrv33m”.
[EVENT]     Releasing managed server ports.
[PROCEDURE] [START 2016/11/08 08:30:55] Releasing ports
[STATEMENT] Calling task: “Releasing ports on itsrv33m”; script: “/u01/oradev/fs2/inst/apps/DEV2_itsrv33m/admin/install/txkCloneAcquirePort.pl”; args: ” -option=close -server=itsrv33m.mwd.h2o -ports=5570,7015,7615,7415,7215,7216,7217,7815,6114,6214,10013 -log=/u01/oradev/fs_ne/EBSapps/log/adop/25/20161108_081645/fs_clone/itsrv33m/txkCloneAcquirePort.log”
[PROCEDURE] [START 2016/11/08 08:30:56] Releasing ports on itsrv33m
[PROCEDURE] Calling: /u01/oradev/fs2/inst/apps/DEV2_itsrv33m/admin/install/txkCloneAcquirePort.pl
[EVENT]     Log: /u01/oradev/fs_ne/EBSapps/log/adop/25/20161108_081645/fs_clone/itsrv33m/txkCloneAcquirePort.log
[PROCEDURE] [END   2016/11/08 08:30:57] Releasing ports on itsrv33m
[PROCEDURE] [END   2016/11/08 08:30:57] Releasing ports

How cryptic!  Looks complicated.  This system happens to have AD/TXK.Delta.8, so the logs related to adop are all being centralized under the session # (in this case “25”.)

Diving deep into the log subdirectories:

/u01/oradev/fs_ne/EBSapps/log/adop/25/20161108_081645/fs_clone/itsrv33m/TXK_SYNC_create/txkADOPPreparePhaseSynchronize.log

================================
Inside copyComnUtil()…
================================

Directory /u01/oradev/fs1/EBSapps/comn already exists.
Removing the directory: /u01/oradev/fs1/EBSapps/comn/util

Copying the directory
———————
SOURCE : /u01/oradev/fs2/EBSapps/comn/util
TARGET : /u01/oradev/fs1/EBSapps/comn/util

Execute SYSTEM command : cp -rH  /u01/oradev/fs2/EBSapps/comn/util /u01/oradev/fs1/EBSapps/comn/util
EXIT STATUS: 1
Copied /u01/oradev/fs2/EBSapps/comn/util into /u01/oradev/fs1/EBSapps/comn/utilLOG FILE: /u01/oradev/fs_ne/EBSapps/log/adop/25/20161108_081645/fs_clone/itsrv33m/TXK_SYNC_create/cp_rH.out

<snip>
======================================
Inside copyCloneLogsToFSNE()…
======================================

Creating the directory: /u01/oradev/fs_ne/EBSapps/log/adop/25/20161108_081645/fs_clone/itsrv33m/TXK_SYNC_create/fsclone_apply

Copying the directory
———————
SOURCE : /u01/oradev/fs2/inst/apps/DEV2_itsrv33m/admin/log/clone
TARGET : /u01/oradev/fs_ne/EBSapps/log/adop/25/20161108_081645/fs_clone/itsrv33m/TXK_SYNC_create/fsclone_apply

/u01/oradev/fs2/EBSapps/comn/adopclone_itsrv33m/bin/adclone.pl did not go through successfully.
LOG DIRECTORY: /u01/oradev/fs_ne/EBSapps/log/adop/25/20161108_081645/fs_clone/itsrv33m/TXK_SYNC_create/fsclone_apply.
*******FATAL ERROR*******
PROGRAM : (/u01/oradev/fs2/EBSapps/appl/ad/12.0.0/patch/115/bin/txkADOPPreparePhaseSynchronize.pl)
TIME    : Tue Nov  8 08:30:55 2016
FUNCTION: main::runFSCloneApply [ Level 1 ]
ERRORMSG: /u01/oradev/fs2/EBSapps/comn/adopclone_itsrv33m/bin/adclone.pl did not go through successfully.

/u01/oradev/fs_ne/EBSapps/log/adop/25/20161108_081645/fs_clone/itsrv33m/TXK_SYNC_create/fsclone_apply/FSCloneApplyAppsTier_11080821.log

(One innocuous, but annoying file, owned by someone other than applmgr, and happened to be 600 (user read/write only):)

Done copying /u01/oradev/fs2/EBSapps/appl/wms to /u01/oradev/fs1/EBSapps/appl/wms/
Copying /u01/oradev/fs2/EBSapps/appl/gmf to /u01/oradev/fs1/EBSapps/appl/gmf/
WARNING:
.end std out.
cp: cannot open /u01/oradev/fs2/EBSapps/appl/mwd/12.0.0/sql/MWDPOLPO.xsl: Permission denied

.end err out.
WARNING: Copying of /u01/oradev/fs2/EBSapps/appl/mwd failed
ERROR: Copying failed, so stopping all the parallel threads
Done copying /u01/oradev/fs2/EBSapps/appl/okc to /u01/oradev/fs1/EBSapps/appl/okc/
WARNING: Copying of /u01/oradev/fs2/EBSapps/appl/okc failed
Done copying /u01/oradev/fs2/EBSapps/comn/java/classes/oracle/apps/pqh to /u01/oradev/fs1/EBSapps/comn/java/classes/oracle/apps/pqh/
WARNING: Copying of /u01/oradev/fs2/EBSapps/comn/java/classes/oracle/apps/pqh failed
Done copying /u01/oradev/fs2/EBSapps/appl/gmf to /u01/oradev/fs1/EBSapps/appl/gmf/
WARNING: Copying of /u01/oradev/fs2/EBSapps/appl/gmf failed
Done copying /u01/oradev/fs2/EBSapps/comn/java/classes/oracle/apps/ies to /u01/oradev/fs1/EBSapps/comn/java/classes/oracle/apps/ies/
WARNING: Copying of /u01/oradev/fs2/EBSapps/comn/java/classes/oracle/apps/ies failed
Done copying /u01/oradev/fs2/EBSapps/appl/msc to /u01/oradev/fs1/EBSapps/appl/msc/
WARNING: Copying of /u01/oradev/fs2/EBSapps/appl/msc failed
Done copying /u01/oradev/fs2/EBSapps/appl/ams to /u01/oradev/fs1/EBSapps/appl/ams/
WARNING: Copying of /u01/oradev/fs2/EBSapps/appl/ams failed
Done copying /u01/oradev/fs2/EBSapps/appl/cs to /u01/oradev/fs1/EBSapps/appl/cs/
WARNING: Copying of /u01/oradev/fs2/EBSapps/appl/cs failed
START: Inside exitClone….
Updating status INCOMPLETE for ApplyApplTop
START: Updating status INCOMPLETE for action ApplyApplTop
END: Updated status INCOMPLETE for action ApplyApplTop

One file.  A single file.  Could have been a hidden file. Could have been anywhere in the entire AppsTier filesystem.  This one file stopped ADOP cold from performing.  This happened to be phase=fs_clone, but could have been a patching session, or a post-clone config (adcfgclone.pl) session.

Remove the file, and:

The fs_clone phase completed successfully.
adop exiting with status = 0 (Success)

Complexity leads to unintentional fragility.

ORA-24247: network access denied by access control list (ACL) Demantra

When attempting to execute a new
ORA-29273: HTTP request failed
ORA-24247: network access denied by access control list (ACL)
ORA-06512: at “SYS.UTL_HTTP”, line 1491
ORA-06512: at “DEMANTRA_INTG.AU_TRIGGERWORKFLOW”, line 17
ORA-06512: at “DEMANTRA_INTG.XXDM_UPDATE_CONTAINER_DATA”, line 228
ORA-06512: at “DEMANTRA_INTG.XXDM_BUILD_CONTAINER”, line 344
ORA-06512: at line 1
Starting Demantra: Hardware. LOG. JAVA Compatibility ACL / SYS_GRANTS. SYNC WKS. Setup MAIL (Doc ID 1372253.1)
Here is an example of Demantra installed directory where the sql files located:
C:\Program Files (x86)\Oracle Demantra 12.2.4.1\Demand Planner\Database Objects\Oracle Server\admin
SYS_GRANTS
SYS_GRANTS.SQL or ACL error

Have you met this error on db_exception_log? ~ This is how you can fix it!:

29273 : ORA-29273: HTTP request failed
ORA-06512: at “”SYS.UTL_HTTP””, line 1817

ORA-24247: network access denied by access control list (ACL)”

SYS_GRANTS.sql performs the following:
– Adds EXECUTE privileges to access DBMS_CRYPTO (UPGRADE_PASSWORDS): Provides the highest level of user password encryption.

– Adds EXECUTE privileges to access DBMS_LOCK: Provides as SLEEP operation for improved concurrency.

– Adds EXECUTE privileges to access V_$PARAMETER so that Oracle Demantra can better adapt to your database configuration.

– (10g only) Adds GRANT privileges to access the package UTL_HTTP, which enables Oracle Demantra to send notification messages to the application server and engine.

– (11g only) Adds an ACL to enable HTTP communications for Oracle Demantra to send notification messages to the application server and engine.

Find it in Demantra_Folder\Demand Planner\Database Objects\Oracle Server\admin
or directly in the root of the Demantra installation package.


Please also verify you have the correct data in

SQL> select * from sys_params where lower(pname) like ‘%url%’;

You need to run this script manually after installing or upgrading Demantra only if you did not specify a database user with full SYSDBA privileges when running the Installer.
1. !! Login AS sys, WITH sysdba privileges:
2. C:\> cd DEMANTRA_INSTALL_DIRECTORY
3. C:\DEMANTRA_INSTALL_DIRECTORY> sqlplus SYS@SERVER as sysdba@sys_grants.sql DM_SCHEMA_USER ACL_for_WebServerURL ACL_for_EngineServerURL
Example execution:
C:\DEMANTRA_INSTALL_DIRECTORY> sqlplus SYS@SERVER as sysdba@sys_grants.sql DM_SCHEMA_USER ‘/sys/acls/demantra.xml’ ‘ /sys/acls/demantra.xml’
OR by Default: if you are not sure, they will be created if they do not exist, or updated in /sys/acls/demantra.xml:
SQL> @sys_grants.sql DM_USER ACL_DEFAULT ACL_DEFAULT;
General Checks:
— select * from dba_network_acls;
— select * from dba_network_acl_privileges;
Check also in sys_params or Business Modeler
— AppServerURL and
— EngineServerURL
— select * from sys_params where lower(pname) like ‘%url%’;
Check:
— SQL> select * from DBA_tab_privs where grantee = ‘DEMANTRA’ ; — (dem schema)
Be sure from system user run if needed entry for APPS user against demantra.xml in dba_network_acl_privileges table: BEGIN DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE ( ‘/sys/acls/demantra.xml’, ‘APPS’,TRUE,’connect’); COMMIT; END;
—Also check entry for UTL_HTTP table for the query – select * from DBA_tab_privs where grantee = ‘DEMANTRA’ ;
Check
For failed login problem to Collaborator Workbench, check if sys_grants is needed to be applied again:
1. SQL> select distinct encryption_type from user_id; — This should return a single value like “SHA-1”
2. SQL> select encryption.get_highest_desc() from dual; — This should return the same value returned in step (1).
If the result of (1) is “SHA-1” but the return of (2) is something else, then you need to fix your sys_grants.

 

References:

Document: 454369.1 Roles and Privileges that are granted to the Demantra database during the install process
Document: 730883.1 Additional Database Privilege needed for Demantra Schema when Running on Oracle 11g Database
Document: 1064995.1 Additional Configurations needed when Running Demantra on Oracle 11g Databases
Oracle Demantra Installation Guide for Release 7.3 Document: 825082.1

Mommy, What’s a 404? Level3 Takes over Your DNS Lookup

An ancient hieroglyph of a Page Not Found error - 404
An ancient hieroglyph of a Page Not Found error – 404

One day, there will no longer be any unknown sites, addresses, or anything of the kind thanks to modern technological advances in how we look things up.  That little Address bar became the gateway to all sorts of inventive ideas of how to make our lives easier, simpler, more useful. Instead of remembering arcane website addresses, or before that, actual IP addresses, we’d have browser plugin helpers for our search engines to convert any text in that address bar to searchable terms for our favorite Google, Bing, Yahoo, Ask, DuckDuckGo, whatever engine to look it up for us.

BuyThisDomainAndMakeMeRich.com
BuyThisDomainAndMakeMeRich.com

Enterprising (sort of) domain campers tried to out-think our mistakes and pre-register every variant of a misspelled or syntactically-incorrect website address out there and re-direct them to their own domain-for-sale pages to generate income.

Mozilla thought ahead and offered it’s version of simpler language “friendly” 404 pages to describe in regular words what happened.

Firefox's Can't Find an Address Page (a dressed up-404 screen)
There is nothing to see here. Move along.

Easier, and easier. Less to remember every day. Your mind is becoming a blank page, open to whatever creative thought you can imagine, unhampered by useless memorized facts and figures.   Just type in whatever words you can remember describing what it is you were looking for, and presto, your browser (or Siri, or Cordera, or whatever) provides you with a nice list of places you meant to actually visit.

Thanks to some more inventive programmers, and some back-channel deals with the global service providers that actually lookup and translate the addresses to physical computers out there in the Cloud, you won’t have to be bothered with those pesky 404- errors ever again (unless you actually try typing in an invalid public IP address, in which case your browser search engine will take over and try to look that up.)

searchguide.level3.com 404 name lookup
Welcome to searchguide.level3.com – no more 404’s ever. Even if you wanted them.

Presenting searchguide.level3.com (operated by Yahoo! no less) which has partnered with several of the global domain name service (DNS) providers to re-direct those disappointing address-not-available lookups to its own pages providing you with nice (we knew you were actually trying to lookup using a search engine, so here’s our nice results list, including sponsored advertising ala AdChoice.)

Now, even your worst mistakes in typing can generate income for someone else.  Who’d have thought? Yea, Skynet/Genisys!

While it’s probably a matter of time before 90% of the well-known DNS service companies monetize their DNS services, leaving it up to you to either re-configure manual resolv.conf files pointing to non- monetized lookups, or at least switching to Google’s Public DNS (which tracks you everywhere you click anyway – 8.8.8.8 and 8.8.4.4) or any of the ones that still remain https://vpsboard.com/topic/2542-level3-public-dns-servers-search-engine-redirect/

Eventually, we’ll probably see the AltInternet end up creating its own subterranean DNS similar to what Tor still does.

All about R12 Oracle Home Inventories

The inventories are used by the Oracle Universal Installer (ORACLE_HOME)/oui (by reference, rapidwiz installers, too) and opatch utilities.
If they are not correct for the host you are working on, the utilities may abort with all sorts of errors.
The Oracle Universal Installer can also be used to re-create the inventory, or attach a pre-existing Oracle Home.
Formatted in XML syntax, all tags either end on a single line, or have a beginning and end tag associated with each entry.
Learning the actual structure of the file can be useful when dealing with non-Production environments when you’re upgrading and downgrading components, and need to roll-back certain changes, or are experimenting with modifying the filesystem layout. This way, if the inventory has minor errors (such as when the IDX numbers get out-of-sequence due to removed components, or you have to roll-back an OEM Agent upgrade to a plugin), you will have an idea where to correct the file to make your OUI happy again.

Useful references:
Master Note For Cloning Oracle Database Server ORACLE_HOME’s Using the Oracle Universal Installer (OUI) (Doc ID 1154613.1) https://support.oracle.com/epmos/faces/DocContentDisplay?id=1154613.1
How to Create a Clean oraInventory in Release 12 using the ouicli.pl utility (Doc ID 834894.1) – https://support.oracle.com/epmos/faces/DocContentDisplay?id=834894.1R12.0 / R12.1 : How To Create, Update or Rebuild The Central Inventory For Oracle Applications E-Business Suite ? (Doc ID 742477.1) https://support.oracle.com/epmos/faces/DocContentDisplay?id=742477.1

All () references refer to your unique environment’s actual physical filesystem locations – e.g. (ORACLE_BASE) might be /u01/app/oracle on your host.

## Master location files indicating which inventory is being used (can be manually modified to re-point to older legacy homes that are not multi-home aware)

## an 11g and older Middle-tier home locator
$> cat /etc/oraInst.loc
#Oracle Installer Location File Location
#Wed Dec 01 07:15:54 EST 2010
inst_group=oinstall
inventory_loc=(INST_TOP)/admin/oraInventory

## an 11g and older Database-tier home locator
$> cat /etc/oraInst.loc
inventory_loc=(DB_ORACLE_HOME)admin/oui/(ENV_ID)/oraInventory

## a 12c home locator – will be maintained in-parallel with the 11i version for now – multiple entries delimited by colons
$> cat /etc/oragchomelist

(ORACLE_BASE)/core/12.1.0.4.0:(ORACLE_BASE)/agent_inst

## A main R12 Middle-tier inventory, with a 12.1.0.4.0 OEM Agent
## located in (inventory_loc)/ContentsXML/inventory.xml
#Notes:
# REMOVED=”T” – means ignore this during reading of the inventory
# IDX=(n)     – a unique number assigned (preferably sequentially, but not required to be in numerical sequence in the file)
# HOME NAME=  – a unique name (without spaces or special characters) – there are specific naming formats are required by RapidClone for R12 components and should not be changed, the non-R12 labels are less strict.
# Note that the 12c entries begin to include version information for each individual sub-component (REF_HOME_LOC)

$> cat inventory.xml
<?xml version=”1.0″ standalone=”yes” ?>
<!– Copyright (c) 1999, 2013, Oracle and/or its affiliates.
All rights reserved. –>
<!– Do not modify the contents of this file by hand. –>
<INVENTORY>
<VERSION_INFO>
<SAVED_WITH>11.1.0.12.0</SAVED_WITH>
<MINIMUM_VER>2.1.0.6.0</MINIMUM_VER>
</VERSION_INFO>
<HOME_LIST>
<HOME NAME=”OracleHome3″ LOC=”(ORACLE_BASE)/tech_st/10.1.2″ TYPE=”O” IDX=”4″/>
<HOME NAME=”OracleHome1″ LOC=”(INST_TOP)/ora/10.1.3″ TYPE=”O” IDX=”1″/>
<HOME NAME=”OracleHome2″ LOC=”(ORACLE_BASE)/tech_st/10.1.3″ TYPE=”O” IDX=”2″/>
<HOME NAME=”OH742297619″ LOC=”(ORACLE_BASE)/Middleware/oracle_common” TYPE=”O” IDX=”12″>
<REFHOMELIST>
<REFHOME LOC=”(ORACLE_BASE)/Middleware/as_1″/>
</REFHOMELIST>
</HOME>
<HOME NAME=”OH1912350525″ LOC=”(ORACLE_BASE)/Middleware/as_1″ TYPE=”O” IDX=”13″>
<DEPHOMELIST>
<DEPHOME LOC=”(ORACLE_BASE)/Middleware/oracle_common”/>
</DEPHOMELIST>
</HOME>
<HOME NAME=”agent12c2″ LOC=”(ORACLE_BASE)/core/12.1.0.4.0″ TYPE=”O” IDX=”14″>
<REFHOMELIST>
<REFHOME LOC=”(ORACLE_BASE)/sbin”/>
<REFHOME LOC=”(ORACLE_BASE)/plugins/oracle.tugbu.outl.discovery.plugin_12.1.0.2.0″/>
<REFHOME LOC=”(ORACLE_BASE)/plugins/oracle.tugbu.oet.discovery.plugin_12.1.0.3.0″/>
<REFHOME LOC=”(ORACLE_BASE)/plugins/oracle.sysman.xa.discovery.plugin_12.1.0.6.0″/>
<REFHOME LOC=”(ORACLE_BASE)/plugins/oracle.sysman.emfa.discovery.plugin_12.1.0.6.0″/>
<REFHOME LOC=”(ORACLE_BASE)/plugins/oracle.sysman.oh.discovery.plugin_12.1.0.4.0″/>
<REFHOME LOC=”(ORACLE_BASE)/plugins/oracle.sysman.emas.discovery.plugin_12.1.0.6.0″/>
<REFHOME LOC=”(ORACLE_BASE)/plugins/oracle.sysman.emas.agent.plugin_12.1.0.6.0″/>
<REFHOME LOC=”(ORACLE_BASE)/plugins/oracle.sysman.oh.agent.plugin_12.1.0.4.0″/>
<REFHOME LOC=”(ORACLE_BASE)/plugins/oracle.sysman.db.discovery.plugin_12.1.0.7.0″/>
<REFHOME LOC=”(ORACLE_BASE)/plugins/oracle.sysman.db.agent.plugin_12.1.0.7.0″/>
</REFHOMELIST>
</HOME>
<HOME NAME=”sbin12c2″ LOC=”(ORACLE_BASE)/sbin” TYPE=”O” IDX=”2″>
<DEPHOMELIST>
<DEPHOME LOC=”(ORACLE_BASE)/core/12.1.0.4.0″/>
</DEPHOMELIST>
</HOME>
<HOME NAME=”OraHome4″ LOC=”(ORACLE_BASE)/plugins/oracle.tugbu.outl.discovery.plugin_12.1.0.2.0″ TYPE=”O” IDX=”7″>
<DEPHOMELIST>
<DEPHOME LOC=”(ORACLE_BASE)/core/12.1.0.4.0″/>
</DEPHOMELIST>
</HOME>
<HOME NAME=”OraHome1″ LOC=”(ORACLE_BASE)/plugins/oracle.tugbu.oet.discovery.plugin_12.1.0.3.0″ TYPE=”O” IDX=”3″>
<DEPHOMELIST>
<DEPHOME LOC=”(ORACLE_BASE)/core/12.1.0.4.0″/>
</DEPHOMELIST>
</HOME>
<HOME NAME=”OraHome2″ LOC=”(ORACLE_BASE)/plugins/oracle.sysman.xa.discovery.plugin_12.1.0.6.0″ TYPE=”O” IDX=”4″>
<DEPHOMELIST>
<DEPHOME LOC=”(ORACLE_BASE)/core/12.1.0.4.0″/>
</DEPHOMELIST>
</HOME>
<HOME NAME=”OraHome3″ LOC=”(ORACLE_BASE)/plugins/oracle.sysman.emfa.discovery.plugin_12.1.0.6.0″ TYPE=”O” IDX=”5″>
<DEPHOMELIST>
<DEPHOME LOC=”(ORACLE_BASE)/core/12.1.0.4.0″/>
</DEPHOMELIST>
</HOME>
<HOME NAME=”OraHome5″ LOC=”(ORACLE_BASE)/plugins/oracle.sysman.oh.discovery.plugin_12.1.0.4.0″ TYPE=”O” IDX=”9″>
<DEPHOMELIST>
<DEPHOME LOC=”(ORACLE_BASE)/core/12.1.0.4.0″/>
</DEPHOMELIST>
</HOME>
<HOME NAME=”OraHome6″ LOC=”(ORACLE_BASE)/plugins/oracle.sysman.emas.discovery.plugin_12.1.0.6.0″ TYPE=”O” IDX=”8″>
<DEPHOMELIST>
<DEPHOME LOC=”(ORACLE_BASE)/core/12.1.0.4.0″/>
</DEPHOMELIST>
</HOME>
<HOME NAME=”OraHome11″ LOC=”(ORACLE_BASE)/plugins/oracle.sysman.emas.agent.plugin_12.1.0.6.0″ TYPE=”O” IDX=”18″>
<DEPHOMELIST>
<DEPHOME LOC=”(ORACLE_BASE)/core/12.1.0.4.0″/>
</DEPHOMELIST>
</HOME>
<HOME NAME=”OraHome12″ LOC=”(ORACLE_BASE)/plugins/oracle.sysman.oh.agent.plugin_12.1.0.4.0″ TYPE=”O” IDX=”19″>
<DEPHOMELIST>
<DEPHOME LOC=”(ORACLE_BASE)/core/12.1.0.4.0″/>
</DEPHOMELIST>
</HOME>
<HOME NAME=”OraHome7″ LOC=”(ORACLE_BASE)/plugins/oracle.sysman.db.discovery.plugin_12.1.0.7.0″ TYPE=”O” IDX=”15″>
<DEPHOMELIST>
<DEPHOME LOC=”(ORACLE_BASE)/core/12.1.0.4.0″/>
</DEPHOMELIST>
</HOME>
<HOME NAME=”OraHome8″ LOC=”(ORACLE_BASE)/plugins/oracle.sysman.db.agent.plugin_12.1.0.7.0″ TYPE=”O” IDX=”10″>
<DEPHOMELIST>
<DEPHOME LOC=”(ORACLE_BASE)/core/12.1.0.4.0″/>
</DEPHOMELIST>
</HOME>
<HOME NAME=”OraHome4″ LOC=”(ORACLE_BASE)/plugins/oracle.apps.ebs.discovery.plugin_12.1.0.1.0″ TYPE=”O” IDX=”6″ REMOVED=”T”/>
<HOME NAME=”agent12c1″ LOC=”(ORACLE_BASE)/core/12.1.0.3.0″ TYPE=”O” IDX=”1″ REMOVED=”T”/>
<HOME NAME=”OraHome6″ LOC=”(ORACLE_BASE)/plugins/oracle.sysman.oh.agent.plugin_12.1.0.3.0″ TYPE=”O” IDX=”11″ REMOVED=”T”/>
<HOME NAME=”OraHome9″ LOC=”(ORACLE_BASE)/plugins/oracle.sysman.db.discovery.plugin_12.1.0.6.0″ TYPE=”O” IDX=”16″ REMOVED=”T”/>
<HOME NAME=”OraHome10″ LOC=”(ORACLE_BASE)/plugins/oracle.sysman.db.agent.plugin_12.1.0.6.0″ TYPE=”O” IDX=”17″ REMOVED=”T”/>
</HOME_LIST>
<COMPOSITEHOME_LIST>
</COMPOSITEHOME_LIST>
</INVENTORY>

## The main Database-Tier inventory for an 11g R12 database host, with a 12.1.0.4.0 OEM Agent
## located in (inventory_loc)/ContentsXML/inventory.xml

$> cat inventory.xml
<?xml version=”1.0″ standalone=”yes” ?>
<!– Copyright (c) 1999, 2013, Oracle and/or its affiliates.
All rights reserved. –>
<!– Do not modify the contents of this file by hand. –>
<INVENTORY>
<VERSION_INFO>
<SAVED_WITH>11.1.0.12.0</SAVED_WITH>
<MINIMUM_VER>2.1.0.6.0</MINIMUM_VER>
</VERSION_INFO>
<HOME_LIST>
<HOME NAME=”(ORACLE_SID)_DB__(ORACLE_SID_LOWERCASE)_db_tech_st_11_2_0″ LOC=”(ORACLE_HOME)” TYPE=”O” IDX=”1″/>
<HOME NAME=”agent12c1″ LOC=”(ORACLE_BASE)/core/12.1.0.4.0″ TYPE=”O” IDX=”2″>
<REFHOMELIST>
<REFHOME LOC=”(ORACLE_BASE)/sbin”/>
<REFHOME LOC=”(ORACLE_BASE)/plugins/oracle.sysman.xa.discovery.plugin_12.1.0.6.0″/>
<REFHOME LOC=”(ORACLE_BASE)/plugins/oracle.sysman.emfa.discovery.plugin_12.1.0.6.0″/>
<REFHOME LOC=”(ORACLE_BASE)/plugins/oracle.apps.ebs.discovery.plugin_12.1.0.4.0″/>
<REFHOME LOC=”(ORACLE_BASE)/plugins/oracle.tugbu.outl.discovery.plugin_12.1.0.2.0″/>
<REFHOME LOC=”(ORACLE_BASE)/plugins/oracle.sysman.db.discovery.plugin_12.1.0.7.0″/>
<REFHOME LOC=”(ORACLE_BASE)/plugins/oracle.tugbu.oet.discovery.plugin_12.1.0.3.0″/>
<REFHOME LOC=”(ORACLE_BASE)/plugins/oracle.sysman.emas.discovery.plugin_12.1.0.6.0″/>
<REFHOME LOC=”(ORACLE_BASE)/plugins/oracle.sysman.oh.discovery.plugin_12.1.0.4.0″/>
<REFHOME LOC=”(ORACLE_BASE)/plugins/oracle.sysman.oh.agent.plugin_12.1.0.4.0″/>
<REFHOME LOC=”(ORACLE_BASE)/plugins/oracle.sysman.db.agent.plugin_12.1.0.7.0″/>
<REFHOME LOC=”(ORACLE_BASE)/plugins/oracle.apps.ebs.agent.plugin_12.1.0.4.0″/>
</REFHOMELIST>
</HOME>
<HOME NAME=”sbin12c1″ LOC=”(ORACLE_BASE)/sbin” TYPE=”O” IDX=”3″>
<DEPHOMELIST>
<DEPHOME LOC=”(ORACLE_BASE)/core/12.1.0.4.0″/>
</DEPHOMELIST>
</HOME>
<HOME NAME=”OraHome1″ LOC=”(ORACLE_BASE)/plugins/oracle.sysman.xa.discovery.plugin_12.1.0.6.0″ TYPE=”O” IDX=”4″>
<DEPHOMELIST>
<DEPHOME LOC=”(ORACLE_BASE)/core/12.1.0.4.0″/>
</DEPHOMELIST>
</HOME>
<HOME NAME=”OraHome2″ LOC=”(ORACLE_BASE)/plugins/oracle.sysman.emfa.discovery.plugin_12.1.0.6.0″ TYPE=”O” IDX=”5″>
<DEPHOMELIST>
<DEPHOME LOC=”(ORACLE_BASE)/core/12.1.0.4.0″/>
</DEPHOMELIST>
</HOME>
<HOME NAME=”OraHome3″ LOC=”(ORACLE_BASE)/plugins/oracle.apps.ebs.discovery.plugin_12.1.0.4.0″ TYPE=”O” IDX=”6″>
<DEPHOMELIST>
<DEPHOME LOC=”(ORACLE_BASE)/core/12.1.0.4.0″/>
</DEPHOMELIST>
</HOME>
<HOME NAME=”OraHome4″ LOC=”(ORACLE_BASE)/plugins/oracle.tugbu.outl.discovery.plugin_12.1.0.2.0″ TYPE=”O” IDX=”7″>
<DEPHOMELIST>
<DEPHOME LOC=”(ORACLE_BASE)/core/12.1.0.4.0″/>
</DEPHOMELIST>
</HOME>
<HOME NAME=”OraHome6″ LOC=”(ORACLE_BASE)/plugins/oracle.sysman.db.discovery.plugin_12.1.0.7.0″ TYPE=”O” IDX=”13″>
<DEPHOMELIST>
<DEPHOME LOC=”(ORACLE_BASE)/core/12.1.0.4.0″/>
</DEPHOMELIST>
</HOME>
<HOME NAME=”OraHome7″ LOC=”(ORACLE_BASE)/plugins/oracle.tugbu.oet.discovery.plugin_12.1.0.3.0″ TYPE=”O” IDX=”9″>
<DEPHOMELIST>
<DEPHOME LOC=”(ORACLE_BASE)/core/12.1.0.4.0″/>
</DEPHOMELIST>
</HOME>
<HOME NAME=”OraHome8″ LOC=”(ORACLE_BASE)/plugins/oracle.sysman.emas.discovery.plugin_12.1.0.6.0″ TYPE=”O” IDX=”10″>
<DEPHOMELIST>
<DEPHOME LOC=”(ORACLE_BASE)/core/12.1.0.4.0″/>
</DEPHOMELIST>
</HOME>
<HOME NAME=”OraHome9″ LOC=”(ORACLE_BASE)/plugins/oracle.sysman.oh.discovery.plugin_12.1.0.4.0″ TYPE=”O” IDX=”11″>
<DEPHOMELIST>
<DEPHOME LOC=”(ORACLE_BASE)/core/12.1.0.4.0″/>
</DEPHOMELIST>
</HOME>
<HOME NAME=”OraHome10″ LOC=”(ORACLE_BASE)/plugins/oracle.sysman.oh.agent.plugin_12.1.0.4.0″ TYPE=”O” IDX=”12″>
<DEPHOMELIST>
<DEPHOME LOC=”(ORACLE_BASE)/core/12.1.0.4.0″/>
</DEPHOMELIST>
</HOME>
<HOME NAME=”OraHome11″ LOC=”(ORACLE_BASE)/plugins/oracle.sysman.db.agent.plugin_12.1.0.7.0″ TYPE=”O” IDX=”14″>
<DEPHOMELIST>
<DEPHOME LOC=”(ORACLE_BASE)/core/12.1.0.4.0″/>
</DEPHOMELIST>
</HOME>
<HOME NAME=”OraHome5″ LOC=”(ORACLE_BASE)/plugins/oracle.apps.ebs.agent.plugin_12.1.0.4.0″ TYPE=”O” IDX=”8″>
<DEPHOMELIST>
<DEPHOME LOC=”(ORACLE_BASE)/core/12.1.0.4.0″/>
</DEPHOMELIST>
</HOME>
</HOME_LIST>
<COMPOSITEHOME_LIST>
</COMPOSITEHOME_LIST>
</INVENTORY>

@Oracle R12 EBS HTTP Server Error Child Could Not Open Sslmutex Lockfile

HTTP Server Error “Child Could Not Open Sslmutex Lockfile” (Doc ID 562624.1) addresses a non-critical, but annoying issue (because it tends to fill up the $INST_TOP/logs/ora/10.1.3/Apache directory with big error logs every day – every mouse click on a OA Framework page generates an error entry).

mod_ossl: Child could not open SSLMutex lockfile /apps/oracle/oas/10.1.3.1/Apache/Apache/logs/ssl_mutex.10549 (System error follows)
System: No such file or directory (errno: 2)

And sort of randomly, your HTTP service will show “Stop” on the adapcctl.sh status screen. But it’s probably still actually running (the processes still show up when ps -ef | grep httpd – and the OA Framework still seems to be responding).

applmgr@myhostname$> $SCRIPT_TOP/adapcctl.sh status

You are running adapcctl.sh version 120.7.12010000.2
Checking status of OPMN managed Oracle HTTP Server (OHS) instance ...
Processes in Instance: ENV_ID.myhostname
---------------------------------+--------------------+---------+---------
ias-component                    | process-type       |     pid | status 
---------------------------------+--------------------+---------+---------
OC4JGroup:default_group          | OC4J:oafm          |   16788 | Alive  
OC4JGroup:default_group          | OC4J:forms         |   16709 | Alive  
OC4JGroup:default_group          | OC4J:oacore        |   21689 | Alive  
HTTP_Server                      | HTTP_Server        |   16494 | Stop

OEM will show the HTTP service as being down, even though the pages are probably still responding:

R12 EBS OEM AMS monitor HTTP Service down screenshot
R12 EBS OEM AMS monitor HTTP Service down screenshot

Implementation for e-Business Suite R12 is relatively easy (just modify 2 configuration files and bounce Apache), but making sure the changes stick after AutoConfig runs means you do need to learn about the configuration templates in $FND_TOP/admin/templates.

These are the skeletal files used during AutoConfig (adautocfg.sh) that regenerate all those files used to control the middleware and database software configuration.  These are the files you that contain warning headers written into each and every one of them warning you not to make direct changes to the configuration file itself like:

# ###############################################################
#
# This file is automatically generated by AutoConfig.  It will be read and
# overwritten.  If you were instructed to edit this file, or if you are not
# able to use the settings created by AutoConfig, refer to Metalink Note
# 387859.1 for assistance.
#
# ###############################################################
)

## Execute on every R12 MT server running HTTP/web services – Apache downtime required during change.
# Stop Apache
$SCRIPT_TOP/adapcctl.sh stop

#  Before change
applmgr@myhostname $> cd $INST_TOP/ora/10.1.3/Apache/Apache/conf
applmgr@myhostname $> grep mutex *

ssl.conf:SSLMutex  file:/ptcharmk/inst/apps/${ENV_ID}/logs/ora/10.1.3/Apache/ssl_mutex

# Append a line to the existing custom template
echo -e “\nAcceptMutex pthread\n” >> $FND_TOP/admin/template/custom_conf_1013.tmp

# Modify the existing SSL template (doesn’t seem to have a custom include on this one)
vi $FND_TOP/admin/template/ssl_conf_1013.tmp
=============

Comment:  # SSLMutex  file:${INST_TOP}/logs/ora/10.1.3/Apache/ssl_mutex
Insert:     SSLMutex sem

# Execute AutoConfig

$SCRIPT_TOP/adautocfg.sh -appspass=$APPS_PW

# Re-Start Apache
$SCRIPT_TOP/adapcctl.sh start

# After Change
applmgr@myhostname $> cd $INST_TOP/ora/10.1.3/Apache/Apache/conf
applmgr@myhostname $> grep -i utex $INST_TOP/ora/10.1.3/Apache/Apache/conf/*

custom.conf:AcceptMutex pthread
ssl.conf:# SSLMutex  file:${INST_TOP}/logs/ora/10.1.3/Apache/ssl_mutex
ssl.conf:SSLMutex  sem

# Confirm semaphore mode is activated

applmgr@myhostname $> grep -i mutex $INST_TOP/logs/ora/10.1.3/Apache/*
$INST_TOP/logs/ora/10.1.3/Apache/error_log.1437091200:[Fri Jul 17 11:58:14 2015] [notice] Accept mutex: pthread (Default: fcntl)
$INST_TOP/logs/ora/10.1.3/Apache/error_log.1437091200:[Fri Jul 17 12:12:12 2015] [notice] Accept mutex: pthread (Default: fcntl)

As mentioned in the MOS document (Doc ID 562624.1), you may need to use ipcs -a to view hanging semaphore processes after making this change, and use ipcrm -s to kill the hanging processes if Apache refuses to startup after making this change and a different issue causes Apache’s processes to hang.

ORA-06512 ‘DBSNMP.BSLN_INTERNAL’

Periodic Stats Gathering Fails in 11gR2 Oracle Database – found in alert.log: ORA-06512: at “DBSNMP.BSLN_INTERNAL”, line 2073

The Fix:

SQL> @?/rdbms/admin/catnsnmp.sql

SQL> @?/rdbms/admin/catsnmp.sql

Dbhk's Blog

Symptoms

1.  BSLN_MAINTAIN_STATS_JOB failed at every SUNDAY

2.  Alert messages got the following

Errors in file /opt/oracle/diag/rdbms/vstbpro/vstbpro1/trace/vstbpro1_j000_7796.trc:
ORA-12012: error on auto execute of job 11762
ORA-06502: PL/SQL: numeric or value error
ORA-06512: at “DBSNMP.BSLN_INTERNAL”, line 2073

3. Details of the trace file

Trace file /opt/oracle/diag/rdbms/vstbpro/vstbpro1/trace/vstbpro1_j000_7796.trc
Oracle Database 11g Release 11.1.0.7.0 – 64bit Production
With the Real Application Clusters option
ORACLE_HOME = /opt/oracle/product/11g
System name:    SunOS
Node name:      wvpdb09
Release:        5.10
Version:        Generic_138888-01
Machine:        sun4u
Instance name: vstbpro1
Redo thread mounted by this instance: 1
Oracle process number: 73
Unix process pid: 7796, image: oracle@wvpdb09 (J000)

*** 2010-04-11 15:00:04.639
*** SESSION ID:(1041.32020) 2010-04-11 15:00:04.639
*** CLIENT ID:() 2010-04-11 15:00:04.639
*** SERVICE NAME:(SYS$USERS) 2010-04-11 15:00:04.639
*** MODULE NAME:(DBMS_SCHEDULER) 2010-04-11 15:00:04.639
*** ACTION NAME:(BSLN_MAINTAIN_STATS_JOB) 2010-04-11 15:00:04.639

ORA-12012: error on auto execute of job 11762
ORA-06502: PL/SQL: numeric or value error
ORA-06512: at “DBSNMP.BSLN_INTERNAL”, line 2073
ORA-06512: at line 1

Cause

Table DBSNMP.BSLN_BASELINES contains…

View original post 35 more words

Existing OEM 12c Agent Fails Startup and Resecure on Hostname Change

Had an issue where the hostname (on Oracle Enterprise Linux 5.9 – OEL 64-bit) happened to have an incorrect hostname and alias when I had already installed the OEM 12c (12.1.0.3) Agent. Thus the OMS repository targets were all named incorrectly, even though the Agent was secured and registered. (This was a new database host).

In the $AGENT_HOME/sysman/log/emagent.nohup log was the following:

— EMState agent
—– Sat Mar 1 10:42:22 2014::10437::Auto tuning the agent at time Sat Mar 1
10:42:22 2014 —–
—– Sat Mar 1 10:42:23 2014::10437::Finished auto tuning the agent at time Sat Mar 1 10:42:23 2014 —–
—– Sat Mar 1 10:42:23 2014::10437::Launching the JVM with following options: -Xmx128M -server -Djava.security.egd=file:///dev/./urandom -Dsun.lang.ClassLoader.allowArraySyntax=true -XX:+UseLinuxPosixThreadCPUClocks -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+UseCompressedOops —–
—– Sat Mar 1 10:42:23 2014::10491::Time elapsed between Launch of Watchdog process and execing EMAgent is 2 secs —–
—– Sat Mar 1 10:42:23 2014::10437::Agent Launched with PID 10491 at time Sat Mar 1 10:42:23 2014 —–
2014-03-01 10:42:23,962 [1:main] WARN – Missing filename for log handler ‘wsm’
2014-03-01 10:42:23,971 [1:main] WARN – Missing filename for log handler ‘opss’
2014-03-01 10:42:23,972 [1:main] WARN – Missing filename for log handler ‘opsscfg’
OMS decided to shutdown the agent because of the following reason sent from OMS: EM_PLUGIN_MISMATCH_AND_AGENT_NOT_YET_MANAGED
—– Sat Mar 1 10:42:37 2014::10437::Checking status of EMAgent : 10491 —–
—– Sat Mar 1 10:42:37 2014::10437::EMAgent exited at Sat Mar 1 10:42:37 2014 with return value 0. —–
—– Sat Mar 1 10:42:37 2014::10437::EMAgent was shutdown normally. —–

./emctl secure agent

./emctl start agent

Resulted in the same repeating failures.

Removed the Target Host and Agent from OEM 12c OMS

(Target -> Hosts -> (select host) -> [Remove], and then,

Setup -> Manage Cloud Control -> Agents -> (click on Agent:(port)

Agent Menu (upper-left dropdown) -> Target Setup -> Remove Target)

Re-deployed using the faster method of silent Agent deployment (Bobby Curtis has this covered on http://dbasolved.com/2013/04/10/install-oem-agents-silently-in-any-environment )

Everything ready to proceed again.

When Your Oracle DataGuarded Database is Crashed (unintentionall)

It happens:  You have a 4-node DataGuarded Oracle 11gR2 database and your System Administrators need to take the boxes down for maintenance. But they don’t know that it’s protected under DataGuard, with Fast-start failover enabled (which automatically performs (via DG Observer) the switchover from Primary to Standby, switches roles, reconfigures listeners, and tries to keep everything 99.99995% available.)  So they use good old:

sqlplus “/ as sysdba”

SQL> shutdown immediate;

Database closed.

And now you need to start it back up.  But when your admins get to their familiar old prompt it burps out:

SQL> startup

Error: ORA-16825: multiple errors or warnings, including fast-start failover-related errors or warnings, detected for the database

Now there are a number of blogs which will walk you through the tedious steps of recovering this condition manually via DGMGRL and multiple control file and standby redo log restores to all the targets. But it was 1:00A local time and I didn’t want to spend the rest of the night crawling through these trying to get this beast back on its feet.

So, I returned to the never-ending exploratory world of what is contained in Oracle Enterprise Manager 12cR3 (12.1.0.3.0)  And (tada sound), OEM can handle it all for you relatively automatically.

To get your Primary DB back on-line (to avoid the complaints from the users who have been disconnected)

DGMGRL> connect SYS/<pwd>@<primaryDGDBtarget>

DGMGRL> disable fast_start failover force;

SQL> startup

Database opened.

Now that the Primary is back open and accessible, return to OEM OMS and visit:

Targets -> Database -> (your Primary DB)

Availability -> Data Guard Administration

There’s a text link at the bottom which reads

Additional Administration:

Verify Configuration

That’s your ticket back to green-arrows and healthy DG in 90% of the situations.  It will perform health-checks throughout your configuration, re-created standby redo logs, re-sychronizing disconnected standby databases, shipping archive logs whereever they are needed, repairing disrupted communications, restoring fast-start failover observers, and whatever else you have.

The other alternative is to simply Remove the existing failed Standby database (select, then [Remove] the existing standby database; then visit its host and delete the existing datafiles, redo, archive and tempfiles (you do not have to touch the TNSNAMES or Listener configurations – that will be re-created for you); then use [Add Standby Database] on the same screen to restore functionality (this is good as an if-all-else-fails, so this method of recovery).

Happy Guarding Data!

Western Digital My Book 111a This Media is Write Protected (Read Only)

Bought 3 of these Western Digital 3TB My Books from BandH.com because I wanted the core drives out of them (the $130 price per unit was less than buying the bare drives, so go figure…) They happened to be the Mac versions (p/n WDBAAG0030HCH-02 to be exact, Model 111a), which differ only by what software is pre-loaded on the maintenance partition (from here – http://support.wdc.com/product/download.asp?groupid=125&lang=en ).

Guts of a My Book 111a USB 3.0 External Enclosure
Guts of a My Book 111a USB 3.0 External Enclosure

Decided to re-use the flimsy, but working plastic enclosures for a left-over Seagate 750GB drive.  Connected everything and using the working sequence of power-plug first, power on using the little button, then plug in the USB connector.

Bink! The drive appears as a CD-ROM. A genuine read-only ROM drive.  Cool (not.) Can’t format it, partition it, wipe it, nothing.

Google’d all over the place, and everyone was unplug-this, it’s your OS, it’s a bad USB.  But I noticed in the Device Manager, I had a missing driver for a “TUSB3410 Boot Device”.  So took care of that by finding Texas Instrument’s original driver at: http://www.ti.com/product/tusb3410 – that cleared the yellow exclamation point.

Then tried the suggested “WD Quick Formatter” utility from the WD website but kept receiving the same “This Media is Write Protected” error and the utility ends in error and exits.  Hm…

On a hunch, I tried next the “WD SES Driver” – that installed fine, but didn’t change anything (and doesn’t hurt anything – it adds a specialised SCSI extension to allow access to some of the firmware features on the circuit board (LED controls, remote On/Off, etc.)

Finally, I tried the “WD Universal Firmware Updater for Windows” and it at first complained that there was a problem accessing the drive, but try:

  1. Use safely remove hardware to unplug the drive (click USB tray icon and Eject),
  2. Power down the drive using the button (hold for about 5 secs.),
  3. Unplug the USB cable,
  4. Unplug the power cord from the My Book,
  5. Re-connect the power cord,
  6. Press power button to turn it back on,
  7. Re-connect the USB cable and let the PC recognize the drive,
  8. Press [Retry]

And for whatever reason, it nicely reformatted the drive as NTFS and re-wrote the firmware back on the drive.  At that point, I was able to use standard Drive Management to re-format it back to FAT32 (what I needed), and everything is perfectly normal.

==== Addendum 11/13/2012 –

I’ve reused one of the My Book enclosures with an older smaller SATA drive (happens to be a Seagate) and was running into a problem that MANY buyers of the cheaper My Book external drives have been facing:

You plug it in, and try to start it, and the front LED just blinks.  You hold the reset button, and it still blinks.  You leave the power off for an hour, plug it back in, and it still just blinks.  Leave it overnight, and it powers on normally.  Turn it back off and try to restart it, and it just blinks again (no drive spin-up.) [Link to Western Digital’s Community Forum discussion on this topic: http://community.wdc.com/t5/External-Drives-for-Mac/WD-Elements-2TB-External-hard-drive-BLINKING-LIGHT-Problem/m-p/503802#M6647]

What did I just discover?

11/13/2012 – SOLVED (for the blinking light on power-on).  Okay this was a really dumb idea.  But all I did when I turned it off and it wouldn’t turn back on (unplugged everything and kept the power off for at least 30 minutes and still only got the blinking light.  I stuck the My Book in the freezer for 5 minutes.  (Yes…that’s what I just did.)

Just took it out, with a cold plastic case, plugged it in, and it powered on perfectly.

I have never had to refrigerate a USB hard drive controller to get it to reset, but this is a totally new one for me.