Tag Archives: configure

Setup and Install the Oracle EBS Integrated SOA Gateway for R12.2.x

https://blogs.oracle.com/ebusinesssuiteintegration
1317697.1Functional Diagram of the Integrated SOA Gateway in Oracle e-Business Suite

Registering the Integrated SOA Gateway included in the Oracle E-Business Suite R12.2.x instances is actually reasonably simple, but the documents make it sound much worse than it really is, simply by being several hundred pages of documentation.

The reason to do this is to expose the RESTful services interface for EBS so that other web applications can do useful things, such as check usernames for validity, lookup business process (workflow) statuses, and even query for completion of processes, such as concurrent programs.  The built-in library of accessable Services is quite vast and enables lots of interconnectivity with other applications.

This is also useful if you happen to be extending the application using the Mobile Application Framework, which allows you to build custom applications for mobile devices that access all the various EBS functionalities.

References:
NOTE:1311068.1 – Installing Oracle E-Business Suite Integrated SOA Gateway, Release 12.2
NOTE:1317697.1 – Oracle E-Business Suite Integrated SOA Gateway Troubleshooting Guide, Release 12.2

Before commencing, have the following prepared:
Unlock the ASADMIN (FND_USER) account and set the password so that it can login without a change password challenge (no expiry. required.
APPS password
Weblogic password
IP Address of ApplTier Host
Ports for ApplTier Host (both base port and WLS console – e.g. 8000 7001)
Your base port is the one in your usual EBS URL and the WLS console URL can be determined via Oracle Application Manager in the Site Map link for Weblogic Administration.
Services will be interrupted by bounce twice (2X) during installation.
Installation takes about 45 minutes to complete.

====================================  Start of SOA Integration Steps
#Register new Internal SOA Gateway Configuration

itsrv33m [/export/home/dbausr/oradev] ant -f $JAVA_TOP/oracle/apps/fnd/txk/util/txkSoaConfigUtility.xml
Buildfile: $COMMON_TOP/java/classes/oracle/apps/fnd/txk/util/txkSoaConfigUtility.xml
checkenvset:
getServerDetails:
[input] Enter Oracle WebLogic Server Administration Console URL (host:port) :
[FQWLSHostname:port]
[input] Enter Oracle WebLogic Server Admin User Name :  [weblogic]
getWLSAdminPasswordUnix:
echoON:
[input] Enter the password for user weblogic :
echoOFF:
getWLSAdminPasswordWindows:
getPasswordUnix:
echoON:
[input] Enter the password for user apps :
echoOFF:
getPasswordWindows:
getASADMINUser:
[input] Enter the ASADMIN user name :  [ASADMIN]
getASADMINPasswordUnix:
echoON:
[input] Enter the password for user ASADMIN :
echoOFF:
getASADMINPasswordWindows:
getSOAServerDetails:
[input] Enter SOA Server  Hostname : (hostname.domain)
[FQEBShostname]
itsrv36m.mwd.h2o
[input] Enter External URL of SOA Suite SOA Managed Server (protocol://managed_server_hostname:managed_server_port) :
http://%5BFQEBShostname%5D:%5Bport%5D

[input] Enter Internal URL of SOA Suite SOA Managed Server (protocol://managed_server_hostname:managed_server_port) :
http://%5BFQEBShostname%5D:%5Bport%5D

[input] Enter External URL of SOA Suite Admin Server (protocol://admin_server_hostname:admin_server_port) :
http://%5BFQWLSHostname:port%5D

commonArgs:
checkRequiredJars:
getDbcFile:
ValidateASADMINConnection:
getJDBCURL:
addASADMINToFNDVault:
[echo] ********************************************************************
[echo]                  Adding/Updating ASADMIN user in fnd_vault
[echo] ********************************************************************
[echo] Connecting to the EBS database using below properties
[echo] User: apps
[echo] JDBC Url: jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(LOAD_BALANCE=YES)(FAILOVER=YES)(ADDRESS=(PROTOCOL=tcp)(HOST=[FQhostname])(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=[$ORACLE_SID])))
[sql] Executing commands
[sql] 0 rows affected
[sql] 1 of 1 SQL statements executed successfully
[echo] Sucessfully Added/Updated ASADMIN in fnd_vault
createUserCredUpdationScript:
executeUserCredUpdationUnix:
[exec]
[exec] CLASSPATH=$CLASSPATH
[exec]
[exec] Initializing WebLogic Scripting Tool (WLST) …
[exec]
[exec] Welcome to WebLogic Server Administration Scripting Shell
[exec]
[exec] Type help() for help on available commands
[exec]
[exec]
[exec] Connecting to server using username:weblogic url:[SOAhost:port]
[exec]
[exec] Connecting to t3://[SOAhost:port] with userid weblogic …
[exec] Successfully connected to Admin Server ‘AdminServer’ that belongs to domain ‘EBS_domain_[ORACLE_SID]’.
[exec]
[exec] Warning: An insecure protocol was used to connect to the
[exec] server. To ensure on-the-wire security, the SSL port or
[exec] Admin port should be used instead.
[exec]
[exec] Creating user ASADMIN
[exec] Sucessfully created user ASADMIN
[delete] Deleting: $INST_TOP/logs/appl/rgf/TXK/updateuser_02_November_2016_08_17_38.py
executeUserCredUpdationWindows:
updateWLSuser:
updateSoaContextVariables:
[echo]  Updating Context Variable s_soa_external_url
[echo]  Updating Context Variable s_soa_internal_url
[echo]  Updating Context Variable s_soa_admin_url
runAutoconfigUnix:
[echo]  Running Autoconfig
[exec] Enter the APPS user password:
[exec]
[exec] The log file for this session is located at: $INST_TOP/admin/log/[session#]/adconfig.log
[exec]
[exec] AutoConfig is configuring the Applications environment…
[exec]
[exec] AutoConfig will consider the custom templates if present.
[exec]     Using CONFIG_HOME location     : $INST_TOP
[exec]     Classpath                   :
[exec]
[exec]     Using Context file          : $CONTEXT_FILE
[exec]
[exec] Context Value Management will now update the Context file
[exec]
[exec]     Updating Context file…COMPLETED
[exec]
[exec]     Attempting upload of Context file and templates to database…COMPLETED
[exec]
[exec] Configuring templates from all of the product tops…
[exec]     Configuring AD_TOP……..COMPLETED
[exec]     Configuring FND_TOP…….COMPLETED
[exec]     Configuring ICX_TOP…….COMPLETED
[exec]     Configuring MSC_TOP…….COMPLETED
[exec]     Configuring IEO_TOP…….COMPLETED
[exec]     Configuring BIS_TOP…….COMPLETED
[exec]     Configuring CZ_TOP……..COMPLETED
[exec]     Configuring AMS_TOP…….COMPLETED
[exec]     Configuring CCT_TOP…….COMPLETED
[exec]     Configuring WSH_TOP…….COMPLETED
[exec]     Configuring CLN_TOP…….COMPLETED
[exec]     Configuring OKE_TOP…….COMPLETED
[exec]     Configuring OKL_TOP…….COMPLETED
[exec]     Configuring OKS_TOP…….COMPLETED
[exec]     Configuring CSF_TOP…….COMPLETED
[exec]     Configuring IBY_TOP…….COMPLETED
[exec]     Configuring JTF_TOP…….COMPLETED
[exec]     Configuring MWA_TOP…….COMPLETED
[exec]     Configuring CN_TOP……..COMPLETED
[exec]     Configuring CSI_TOP…….COMPLETED
[exec]     Configuring WIP_TOP…….COMPLETED
[exec]     Configuring CSE_TOP…….COMPLETED
[exec]     Configuring EAM_TOP…….COMPLETED
[exec]     Configuring GMF_TOP…….COMPLETED
[exec]     Configuring PON_TOP…….COMPLETED
[exec]     Configuring FTE_TOP…….COMPLETED
[exec]     Configuring ONT_TOP…….COMPLETED
[exec]     Configuring AR_TOP……..COMPLETED
[exec]     Configuring AHL_TOP…….COMPLETED
[exec]     Configuring IES_TOP…….COMPLETED
[exec]     Configuring OZF_TOP…….COMPLETED
[exec]     Configuring CSD_TOP…….COMPLETED
[exec]     Configuring IGC_TOP…….COMPLETED
[exec]
[exec] AutoConfig completed successfully.
runAutoconfigWindows:
setEBSProfiles:
[echo]  Updating Profile  FND_SERVER_DESKTOP_USER
[java] Nov 02, 2016 8:21:24 AM oracle.apps.fnd.txk.util.TXKFMWGenericConfigUtility readPasswordFromStdin
[java] INFO: Enter APPS Password:
[echo]  Updating Profile FND_SERVER_SEC
[java] Nov 02, 2016 8:21:26 AM oracle.apps.fnd.txk.util.TXKFMWGenericConfigUtility readPasswordFromStdin
[java] INFO: Enter APPS Password:
[echo]  Updating Profile FND_SERVER_IP_SEC
[java] Nov 02, 2016 8:21:28 AM oracle.apps.fnd.txk.util.TXKFMWGenericConfigUtility readPasswordFromStdin
[java] INFO: Enter APPS Password:
[echo]  Updating Profile FND_SQLNET_ACCESS
[java] Nov 02, 2016 8:21:29 AM oracle.apps.fnd.txk.util.TXKFMWGenericConfigUtility readPasswordFromStdin
[java] INFO: Enter APPS Password:

ebsConfigForSOA:

BUILD SUCCESSFUL
Total time: 6 minutes 36 seconds
# Verify new Profile Option Settings
SQL Statement which produced this data:
/* Formatted on 11/17/2016 7:07:54 AM (QP5 v5.300) */
SELECT n.user_profile_option_name              NAME,
TO_CHAR (v.last_update_date, ‘DD-MON-RR’)”Last Updated”,
DECODE (v.level_id,
10001, ‘Site’,
10002, ‘Application’,
10003, ‘Responsibility’,
10004, ‘User’,
10005, ‘Server’,
10007, ‘SERVRESP’,
v.level_id)
LEVEL_SET,
DECODE (TO_CHAR (v.level_id),
‘10001’, ”,
‘10002’, app.application_short_name,
‘10003’, rsp.responsibility_key,
‘10005’, svr.node_name,
‘10006’, org.name,
‘10004’, usr.user_name,
‘10007’, v.LEVEL_VALUE2,
‘UnDef’)
“CONTEXT”,
v.profile_option_value                  VALUE
FROM fnd_profile_options      p,
fnd_profile_option_values v,
fnd_profile_options_tl   n,
fnd_user                 usr,
fnd_application          app,
fnd_responsibility       rsp,
fnd_nodes                svr,
hr_operating_units       org
WHERE     p.profile_option_id = v.profile_option_id(+)
AND p.profile_option_name = n.profile_option_name
AND UPPER (p.profile_option_name) IN (‘FND_SERVER_DESKTOP_USER’,
‘FND_SERVER_SEC’,
‘FND_SERVER_IP_SEC’,
‘FND_SQLNET_ACCESS’)
AND n.language = ‘US’
/* Use for Friendly PONs e.g. MO: Security Option
AND UPPER (n.user_profile_option_name) =
UPPER (”)
*/
AND usr.user_id(+) = v.level_value
AND rsp.application_id(+) = v.level_value_application_id
AND rsp.responsibility_id(+) = v.level_value
AND app.application_id(+) = v.level_value
AND svr.node_id(+) = v.level_value
AND org.organization_id(+) = v.level_value
ORDER BY v.last_update_date DESC;

NAME|Last Updated|LEVEL_SET|CONTEXT|VALUE
FND: Desktop Nodes allowed|02-NOV-16|User|ASADMIN|[FQhostname]

NAME|Last Updated|LEVEL_SET|CONTEXT|VALUE
SQLNet Access|02-NOV-16|Site||ALLOW_RESTRICTED

NAME|Last Updated|LEVEL_SET|CONTEXT|VALUE
FND: Validate IP address|02-NOV-16|Site||D

NAME|Last Updated|LEVEL_SET|CONTEXT|VALUE
FND: Validate User Type|02-NOV-16|Site||D

# Bounce certain services (minimizes downtime – can also bounce everything)
cd $ADMIN_SCRIPTS_HOME

admanagedsrvctl.sh stop oafm_server1
admanagedsrvctl.sh start oafm_server1
admanagedsrvctl.sh stop oacore_server1
admanagedsrvctl.sh start oacore_server1
[etc for any other oacore servers]

#Verify registered payload Class ID (ensures payload can be accessed)
SQL Statement which produced this data:
SELECT class_id
FROM fnd_irep_classes
WHERE     UPPER (irep_name) LIKE ‘%EBIZHOMEPAGESERVICE%’
AND class_type = ‘SERVICEBEAN’;

CLASS_ID
[a Number]

#Try downloading the payload for a specific function (Class ID discovered above)
XSD.zip DEV2 URL:  http://%5ByourEBSURL:port%5D/webservices/isgagent/?generatexsd=%5Bthe above number]
XSD.zip

# Configure the ISG BPEL Payload for use by SOA Suite
ant -f $JAVA_TOP/oracle/apps/fnd/bpel/util/txk_integration_packager.xml \ -DIntegration=isg  -DFMWNodeName=itsrv33m.mwd.h2o -DFMWIpAddress=[MT or Virtual host IP]
[echo] Bpel Payload is archived at $INST_TOP/logs/appl/rgf/TXK/EBS_BPEL_payload.zip

# Verify the “new” SOA Node is registred (MWD is just re-using the built in SOA)
SQL Statement which produced this data:
SELECT node_name, server_address, server_id
FROM fnd_nodes
WHERE UPPER(node_name) in(‘[hostname]’);

NODE_NAME|SERVER_ADDRESS|SERVER_ID
[hostname]|[IP address]|3E3B399AEB80184EE0548A507414599D22425228221243006566902023757213

# A Fix for HPUX, if needed, add set +u to the line right after #!/bin/sh
# vi $FMW_HOME/user_projects/domains/EBS_domain_$TWO_TASK/bin/setDomainEnv.sh

. $FMW_HOME/user_projects/domains/EBS_domain_$TWO_TASK/bin/setDomainEnv.sh

# Warning: the following command will immediately shutdown and restart the WLS Managed Services
ant -f $JAVA_TOP/oracle/apps/fnd/txk/util/txkISGConfigurator.xml ebsSetup

# Change default NAME=APPS connection to NAME=ASADMIN in WLS Admin Console.
# (you want to do this to support APPS password changes in the future – the ASADMIN
# password does not have to be disclosed to Developers once the setup is completed – just
# grant the Integrated SOA Gateway Role and Responsibility to users that need to deploy
# various services.

Data Sources -> OAEADatasource -> Configuration -> Connection Pool
[Lock & Edit]
Modify Properties user=APPS -> user=ASADMIN
Enter ASADMIN password in both password fields
[Save] -> [Activate Changes]

If the ASADMIN password is changed in the target EBS instance, then all of the following steps need to be re-executed in order to register the change with SOA:

# Clean out the prior OAEADatasource connections and definitions
Login to WLS Administration Console.
Services -> Data Sources -> [Lock & Edit] -> Select OAEADatasource -> [Delete]
Security Realms -> myrealm -> Providers -> Select IsgAuthenticator -> [Delete]
[Activate Changes]

$] cd $DOMAIN_HOME/config/jdbc
$] rm OAEADatasource-*-jdbc.xml

Repeat the SOA Integration steps again.

Otherwise, attempting REST deployments will receive an error:
Error
java.lang.SecurityException: User: ASADMIN~~[ORACLE_SID], failed to be authenticated.

Advertisements

Oracle DataGuard and Standby Database Archive Logs

Users see your wonderful DataGuard implementation like this:

Simple Oracle Dataguard Architecture
Simple Oracle Dataguard Architecture courtesy of https://appsdbatraining.files.wordpress.com

And yet, you know the actual picture looks more like this:

A map of Oracle DataGuard Architecture components
A map of Oracle DataGuard Architecture components

High-availability – the concept behind it makes every DBA shudder because every time it seems you deal with one element and have it protected, there’s another underlying component that also needs protection and redudancy, or else your solution is still insufficient.

Real Application Clusters (RAC) covers individual database host failures but is sensitive to failure of the storage subsystem or the network interconnections between the hosts.

Recovery Manager (RMAN) is your vital tool to keeping track of what’s backed up and where is it.  And its catalog of recovery information could reside locally in copies of the controlfiles, or centrally in another database.  Depends on your backup strategies, really.  Are you using SAN-based backups (snaps, virtual images, deduplicated block replication) or off-site methods that would have to be shipped back to start recovery?

But the typical first-time setup scenario, is you use the OEM-based jiffy whizbang method to setup your new DataGuard environment at the recommendation of one of the steps int the Maximum Availability Advisor (MAA), and everything’s up and running nicely.  You schedule a new weekly full backup, plus daily incremental backup as Oracle recommended practices prescribe, and notice everything’s running smoothly.

Except on your standby database, the archivelogs are piling up and not being deleted automatically.  What’s next?

This thread was a basic discussion in the Oracle Community forums of the topic:

https://community.oracle.com/thread/2388130?start=0&tstart=0

This is a typical RMAN-based configuration:

On Primary

RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;

On Standby ( Depends upon where backup is preformed )

RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO NONE;

Or

RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY;

/* if Standby Where Backups Are Not Performed  */

Source:

Data Guard Concepts and Administration 12c

http://docs.oracle.com/database/121/SBYDB/toc.htm

12 Using RMAN to Back Up and Restore FilesRMAN Configurations at the Primary Database
12.3.4 RMAN Configurations at a Standby Where Backups Are Not Performed

The following RMAN configurations are recommended at a standby database where backups are not done:

  1. Connect RMAN to the standby database as target, and to the recovery catalog.
  2. Enable automatic deletion of archived logs once they are applied at the standby database (this is also applicable to all terminal databases when the cascading or far sync instance features are in use):
  3. CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY;

 

** However, that doesn’t really take into consideration what might happen if a final archivelog before switchover of roles doesn’t quite make it on the standby (for whatever reason, it gets corrupted during playback or something similar which results in a Database Needs More Recovery error.)

Based upon:

12.3.3 RMAN Configurations at a Standby Database Where Backups are Performed

The following RMAN configurations are recommended at a standby database where backups are done:

  1. Connect RMAN to the standby database (where backups are performed) as target, and to the recovery catalog.
  2. Enable automatic backup of the control file and the server parameter file:

3.  RMAN > CONFIGURE CONTROLFILE AUTOBACKUP ON;

  1. Skip backing up data files for which there already exists a valid backup with the same checkpoint:

5.  RMAN > CONFIGURE BACKUP OPTIMIZATION ON;

  1. Configure the tape channels to create backups as required by media management software:

7.  RMAN > CONFIGURE CHANNEL DEVICE TYPE SBT PARMS ‘<channel parameters>’;

  1. Because the archived logs are backed up at the standby database, Oracle recommends that you configure the BACKED UP option for the log deletion policy:

9.  RMAN > CONFIGURE ARCHIVELOG DELETION POLICY BACKED UP n TIMES TO [DEVICE TYPE SBT];

 

I came up with the configuration of:

 

On Standby ( Depends upon where backup is preformed )

# If no DataGuard is present (single DB host):

# Ensure daily RMAN backup job is being executed in OEM or via cron.

RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 1 TIMES TO DISK;

 

And setup a 2nd backup set for the Standby Host DB.  This puts the backups into the defined Fast Recovery Area and manages both the backups and archivelog retention in the same mountpoint.

 

Each has its pros and cons depending on the scenario.You need to lay out your entire architecture scheme including backup solutions and play out the various scenarios that you’re required to cover as far as your Quality of Service (QOS) guarantee to your end-user population.

And of course, if you’re using the advanced cross-WAN FarSync DataGuard implementation architecture (wherein there’s a separate Failover Archive Log (FAL) standby database whose sole purpose in life is to cache archivelogs in case the data replication stream is too much for WAN bandwidth to handle in real-time.) this all still applies because the FAL server is basically just another standby target which needs managing just as much as any regular LAN-based full DataGuard standby instance (it’s just missing the big datafiles and handles all the archivelog traffic.)  You’ll just have even more servers and services involved in keeping the whole thing running (like your Global Names Service servers and databases, which might also be RAC and DataGuard protected, or your Single-Sign On authentication services, or even the OEM Cloud Control OMS itself orchestrating all of that.)

 

Changing ORACLE_BASE in Oracle 11gR2 (11.2.0.3.4) Database

During a routine installation, I managed to mis-type the filesystem path for the ORACLE_BASE during execution of the Oracle Universal Installer (./runInstaller).

[nb: ORACLE_BASE by normal definition should be a standard starting filesystem mountpoint under which all other instance-specific data/files for this ORACLE_HOME would be found. Typically contains your diagnostic logs, Fast Recovery Area files, all configuration tool logs, and any Flashback checkpoint saves.

$ORACLE_BASE/diag/.

./asm
./clients
./crs
./diagtool
./lsnrctl
./netcman
./ofm
./rdbms
./tnslsnr

$ORACLE_BASE/admin/<SID>/.

./adump          # Audit data./dpdump       # Data Pump related
./pfile               # init.ora files generated by config tools

–end of note]

Since the service account (oracle) had filesystem permissions to do so, it went ahead and put all of the flashback recovery, diagnostics, and audit trail files (and my backup controlfiles) into the incorrectly named directory.  The database itself was running, but how to correct this without starting all over again?

Start with backing up your init.ora configuration from spfile to pfile format:

SQL> create pfile from spfile;

File created.

(this defaults to $ORACLE_HOME/dbs/init.ora)

Then shutdown services:

SQL> shutdown immediate;

Database closed.

SQL> exit;

#oracle> lsnrctl stop

Now go find all the places you’ll need to modify/correct the ORACLE_BASE filepath declarations:

$ORACLE_HOME/dbs/init<SID>.ora

$ORACLE_HOME/network/admin (or $TNS_ADMIN)

  • listener.ora: ADR_BASE_LISTENER
  • sqlnet.ora: ADR_BASE
    (Note: these two are auto-generated using netca – the Oracle Net Configuration Assistant, if you execute that after making the database and environment-side changes.

$ORACLE_HOME/inventory/ContentsXML/oraclehomeproperties.xml : ORACLE_BASE

All finished editing? Start everything back up:

#oracle> lsnrctl start

SQL> startup pfile=?/dbs/init<SID>.ora  — to use revised settings

SQL> create spfile from pfile;       — copy new settings to spfile

SQL> shutdown immediate;

SQL> startup;                                — uses spfile instead

Now future installs using dbca, dbua and netca should recognize your defined/modified/corrected ORACLE_BASE.