Saturday, May 29, 2010

Migrating BPEL instances from one Oracle BPEL Process Manager 10g environment to another

We were cutting over to a new Oracle SOA Suite infrastructure (i.e., retiring the first instance, and cutting over to a new one).

Even though the codebase deployed on both environments were identical, the development team wanted all instances migrated as well. (The primary reason was that they were already overruling the BPEL instance title and inserting order and customer numbers there.)

Migrating BPEL instances:

1. Purge all instances via the BPEL Console on the new instance (via the “Purge all instances” button).

2. Shutdown both SOA Suite midtiers.

3. Export the following tables from the old dehydration store and import it into the new one (using standard ‘exp’ and ‘imp’ database utilities):

ORABPEL.CUBE_INSTANCE
ORABPEL.CUBE_SCOPE
ORABPEL.AUDIT_DETAILS
ORABPEL.AUDIT_TRAIL

4. Run the following query on both dehydration store databases, and note the next_range value:

SELECT next_range FROM orabpel.id_range;

5. Select the largest of the two values, we’ll denote it as XYZ.

6. Run the following update statements on the new dehydration store database:

UPDATE orabpel.id_range SET next_range = XYZ + 10000 WHERE range_name = ‘cikey’;

UPDATE orabpel.cube_instance SET state = 9;
COMMIT;

That’s it. This effectively migrates all instances from the old environment to the new.

Things to note:
  • These instructions are applicable to Oracle SOA Suite 10g (10.1.3.x).
  • Updating the next_range value requires a restart of the midtier.
  • The steps above intentionally force all instances to be “stale”.
  • Backup your tables in the new instance before executing the instructions above just in case.

Applicable Versions:
  • Oracle SOA Suite 10g (10.1.3.x)
Ahmed Aboulnaga

Sunday, May 9, 2010

How to become an Oracle SOA Architect Certified Expert

I just took and passed the Oracle SOA Foundations, Adoption and Implementation exam (1Z0-114). The exam is actually acquired from BEA, and is a combination of both the BEA SOA Foundations and BEA SOA Adoption and Implementation exams. Passing the exam grants you an OCE (Oracle Certified Expert) as an Oracle SOA Architect.


Certification Details
    Certification:              Oracle SOA Architect Certified Expert (OCE)
    Exam:                       Oracle SOA Foundations, Adoption and Implementation
    Time:                        120 minutes
    Cost:                         $195
    Passing score:            66%
    Number of questions:  78
 

Study Material
    BEA White Paper Domain Model For SOA

Preparation Time
You will need 20 hours (or more, depending on your current knowledge).

Sample Questions
    BEA SOA Adoption & Implementation Mock Exam
    Oracle SOA Foundations, Adoption and Implementation Sample Questions 
    Sample questions for IBM SOA Test 664/665
    IBM SOA Fundamentals (000-664 Exam)
 

Degree of Difficulty
Oracle certification exams are not usually easy, but this provides recognition and credibility to the certification.

Based on the scale below, if you have extensive architecture, design, and implementation experience in SOA and related technologies, the exam is slightly above average in difficulty (straight black line). If you are a SOA developer with little architecting experience, the exam may be on the difficult end (dotted black line).
Around a third of the exam focuses on explicit technical questions (e.g., a Service Directory provides the ability to discover existing services). The second third involves concepts surrounding the BEA Domain Model (see Study Material). The last third focuses on story-board scenarios, and asks questions in areas such as canonical design, SOA benefits, cost justifications, architectural decisions, process approaches, roadmap prioritization, SOA adoption challenges, and more. 

Preparing for the Exam

1. Read the study material and know it by heart.
 
2. You should understand and know how to explain each of the following:
  • BPEL, service composition, orchestration, composite applications, service reuse.
  • ESB, VETO, transformation, routing.
  • Fine-grained vs. coarse-grained services.
  • XA protocol, compensating transactions, idempotent operations.
  • Calling/exchange paradigms: asynchronous, synchronous, callback, polling, fan-out, callout, uni-directional, bi-directional, fork/join.
  • Terminology: Web services, portlets, WSDL, XML, UDDI, WSRP, JSR, AJAX, HTTP, SSL, SOAP, EDA, JMS, SAML, SLA, canonicals, adapters.
  • WS-* specifications: WS-ReliableMessaging, WS-Policy, WS-Coordination, WS-Security, WS-Trust, WS-Addressing.
  • Products: Service Registry, Service Bus, Policy Directory, BAM, Web Services Manager. 
3. Go through the BEA SOA Adoption & Implementation Mock Exam and Oracle SOA Foundations, Adoption and Implementation Sample Questions.

4. Leverage your SOA architecture and implementation experience. 

Oracle Links 
For more information about the certification and the exam, check out:
    http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=284
    http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=41&p_exam_id=1Z0_114


My Opinions
The exam assumes architecture level experience within the SOA space. 

For example, what role does BAM (Business Activity Monitoring) play in your enterprise? What is the best way to push data to BAM? How does this, if at all, impact your main operational process? Unless you have architected the usage of and/or implemented BAM, you may not know. If you can answer these questions, then you should be able to answer one of the BAM related questions in the exam.

Being a perfectionist, I noticed a few grammatical errors in the exam, missing periods, double quotes not closed, etc., but nothing that would impact your understanding of the question.

Final thoughts:
  • Follow what I mentioned in "Preparing for the Exam". This will give you what you need to cover 75% of the exam.
  • Questions are not technical in nature. For example, you will not find questions that ask "What is the request security token structure in WS-Trust?" You will most likely encounter questions such as "Company X currently has services on a legacy system and want to migrate them off. What should they do?"
  • Go through the mock exams.
  • Know the BEA White Paper Domain Model For SOA by heart. If you would like the summary and study notes I made from this white paper, then contact me and I'll be happy to share it.
  • The IBM mock exams I listed above have a few questions that are similar to those that appear in the exam, so going through them will probably firm up your concepts. 
Good luck!

Tuesday, May 4, 2010

Not able to create new database connection: FNDSECURITY_APPL_LOGIN_FAILED

We were recently handed over a cloned E-Business Suite 11.5.10.2 instance running on Solaris 64-bit. We just applied the April 2010 CPU patches, and reran AutoConfig (via ‘adautocfg.sh’) (long story) but ran into some funky behavior when trying to hit any of the login pages.

Problem:
  1. Navigating to http://hostname:8000/OA_HTML/AppsLocalLogin.jsp returned an HTTP-500 error
  2. Navigating to http://hostname:8000/oa_servlets/AppsLogin returned a blank page (i.e., empty white page)
  3. Navigating to http://hostname:8000/servlets/weboam/oam/oamLogin (OAM) returned an HTTP-500 error
No errors were showing up in either the Apache “error_logs” or “mod_jserv.log”.

After enabling Jserv debugging, the following showed up in “mod_serv.log” when trying to access the Oracle Applications Manager login page:

[04/05/2010 09:49:03:180] (ERROR) ajp12: Servlet Error: java.lang.ExceptionInInitializerError: null
[04/05/2010 09:49:03:181] (ERROR) an error returned handling request via protocol “ajpv12″
[04/05/2010 09:49:03:181] (ERROR) balance: 25521 internal servlet error in server hostname:20521
[04/05/2010 09:49:03:182] (ERROR) an error returned handling request via protocol “balance”

Not much help since we couldn’t find much info on the “ExceptionInInitializationError” exception.

Investigation:

Fortunately, JVM logging was enabled and there were JVM standard out (e.g., OACoreGroup.0.stdout) and standard error logs (e.g., OACoreGroup.0.stderr) in $IAS_ORACLE_HOME/Apache/Jserv/logs/jvm.

The errors showed:

Exception in static block of jtf.cache.appsimpl.AppsCacheLogger. Stack trace is: oracle.apps.fnd.common.AppsException: oracle.apps.fnd.common.PoolException: Not able to create new database connection: FNDSECURITY_APPL_LOGIN_FAILED
at oracle.apps.fnd.profiles.Profiles.getProfileOption(Profiles.java:1509)
at oracle.apps.fnd.profiles.Profiles.getProfile(Profiles.java:362)

Solution:

The GUEST password in the .dbc files in $FND_TOP/secure were not the same as what was in the context file.

The GUEST password in <hostname>_<sid>.dbc was:
GUEST_USER_PWD=GUEST/GUEST

The GUEST password in the context file $APPL_TOP/admin/<sid>_<hostname>.xml was:
<oa_user type=”GUEST”>
<username oa_va=”s_guest_user”>GUEST</username>
<password oa_var=”s_guest_pass”>ORACLE</password>
</oa_user>

If the context file one was incorrect, we would have had to correct it and rerun AutoConfig, otherwise we would have had to just adjust the .dbc file and restart the app.

To confirm which password was correct, we ran the following SQL as user “apps”:

SELECT fnd_web_sec.validate_login(‘GUEST’, ‘ORACLE’) FROM dual;

This returned a “Y” which indicated that our .dbc file was the problem.

Fixed it, restarted the app, and we were good to go.


Applicable Versions:
  • Oracle E-Business Suite 11i (11.5.10.2)
References:
  • Oracle Support Note 458064.1

Ahmed Aboulnaga