Disclaimer : This blog space does not necessarily reflect my views/ideas on the technology and beyond doubt, never reflects the views of my employer.

Friday, October 25, 2013

The successStatusType must be of success type and not equal to null - SOA Suite 11.1.1.7 Upgrade

problem:

After upgrading current 11.1.1.4 environment to 11.1.1.7, observed below errors in SOA server Logs. This error comes every time while starting of each of the SOA managed servers.


 <Error> <oracle.sdp.messaging.engine> <SDP-25088> <Unable to refresh the driver locator cache, due to the following error:
Exception Description: The method [setSuccessStatusType] on the object is throwing an exception.
Argument: [null]
Internal Exception: java.lang.reflect.InvocationTargetException
Target Invocation Exception: java.lang.IllegalArgumentException: The successStatusType must be of success type and not equal to null
Mapping: oracle.toplink.mappings.TransformationMapping[successStatusType]
Descriptor: RelationalDescriptor(oracle.sdpinternal.messaging.AddressImpl --> [DatabaseTable(ADDRESS)])>
 <Warning> <oracle.toplink.default> <BEA-000000> <
Exception [TOPLINK-106] (Oracle TopLink - 11g Release 1 (11.1.1.6.0) (Build 111018)): oracle.toplink.exceptions.DescriptorException
Exception Description: The method [setSuccessStatusType] on the object is throwing an exception.
Argument: [null]
Internal Exception: java.lang.reflect.InvocationTargetException
Target Invocation Exception: java.lang.IllegalArgumentException: The successStatusType must be of success type and not equal to null
Mapping: oracle.toplink.mappings.TransformationMapping[successStatusType]
Descriptor: RelationalDescriptor(oracle.sdpinternal.messaging.AddressImpl --> [DatabaseTable(ADDRESS)])


Similar errors are observed when User Messaging Service option is accessed.

a. Login to the Enterprise Manager.
b. From the left hand tree expand 'User Messaging Service' and select 'usermessagingserver (ServerName)'.
c. In the right hand pane select 'User Messaging Service' drop down and then 'Message Status'.
d. We get the same error on the em console and in the logs.

Cause:

In ORASDPM database, we can find that for all the rows, the success_status column is null.

select count(*) from address where success_status is null

Solution:

Execute following SQL Commands in your ORASDPM database.

SQL> conn _ORASDPM/:   -- Connect ORASDPM database of your environment
SQL> update address set success_status='DELIVERY_TO_GATEWAY_SUCCESS' where success_status is null;
SQL> commit;


Restart managed SOA Servers and this error shoud no longer exist.


API Reference @ http://docs.oracle.com/cd/E29542_01/apirefs.1111/e14011/index.html?oracle/sdp/messaging/Address.html. Look for Enum StatusType; apparently, it cannot have the null value.


Hope this helps

Cheers
Nirav

Enterprise Manager performance very slow after upgrading WLS/SOA Suite to 11.1.1.7

After upgrading the SOA Suite 11.1.1.4 cluster server to 11.1.1.7 (PS6), it is observed that the em Enterprise Manager Console (em console) is loading very slow and sometimes takes more than 120 seconds. Sometimes, trying to access any composite link will time out and leads to em home page again. In short, Fusion Middleware Control UI performance goes unpredictable in upgraded environment.

Log Files may show following statement:
ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'] WARN emd.targets setContents.101 - Label Servlet/JSP By Server - Request Processing Time (since startup) (ms) very long. Has been truncated.

< Error > < oracle.adfinternal.view.faces.config.rich.RegistrationConfigurator > < BEA-000000 > < ADF_FACES-60096:Server Exception during PPR, #2
java.net.SocketException: Socket closed
< BEA-001153 >

Cause: 
As the number of fmwc monitored targets increases, the login times on em console goes up as well. fmwc discovery is always performed as part of login.  Time delay or Time out is expected because EM discovery MBeans need to be invoked for every target.

Solution:

Oracle has provided solution to this problem under Oracle Support RaV Note "How to Enable Discovery Cache To Avoid Long Delay During Login To Fusion Middleware Control (Doc ID 1423893.1)".

Solution is to cache the discovery results in the servlet context and use it for subsequent logins. This discovery result will be shared by all the fmwc users. This will still require the entire discovery to be done at least once. If the initial login is slow due to discovery of large number of targets, changes in this note will not reduce the initial login delay.
  • If the caching is enabled, fmwc will use the cached discovery results.
  • The default setting is "not use the cached results"

However, this solution is applicable only to version 11.1.1.2.0 to 11.1.1.6.0.  If you are on pre-11.1.1.6 environment, please install the patch 13251077. Then follow the steps below.

If you are on 11.1.1.6 or on 11.1.1.7,  Patch installation is not required as it is already part of 11.1.1.6+ version.





1.  Open Enterprise Manager Console. On the left panel, navigate to Weblogic Domain --> . Right click and from the context Menu select the option "System MBean Browser". 




2. Access the MBean Propery in the tree at Application Defined MBeans --> emosms.props --> Server: Your_Admin_Server_Name_Here --> Application:em --> properties --> emoms.properties. Then on top of theright hand panel expand the option Show MBean Information", it should look something like below:

emoms.props:Location=AdminServer,name=emoms.properties,type=Properties,Application=em


3.  On Right Panel, Select tab Operations, click on setProperty




4.  Enter following three key-value pair one by one and Invoke the setProeprty() operation.




# Enable caching of  Discovery data and use it for other subsequent users.
# Values=true/false Default=false
Key:    oracle.sysman.emas.discovery.wls.FMW_DISCOVERY_USE_CACHED_RESULTS
Value: true
# If caching of discovery data is true, this parameter indicates how long the discovery data
# from cache should be used before requiring a fresh discovery.
# Time value is in milliseconds. Default is 7200000 milliseconds.
Key:    oracle.sysman.emas.discovery.wls.FMW_DISCOVERY_MAX_CACHE_AGE
Value: 7200000 
# If caching of discovery data is true, a user logs in and a discovery session is in progress,
# this parameter indicates how long the user can wait for current discovery to complete.
# After this wait time is elapsed and discovery is still not finished: If there is already data
# in cache it will be used, else the user will launch a new discovery session.
# Time value is in milliseconds. Default is 10000 milliseconds.
Key:    oracle.sysman.emas.discovery.wls.FMW_DISCOVERY_MAX_WAIT_TIME
Value: 10000 

We can go to Attributes Tab and verify that the new properties are available under Properties option.
5.   Once Values are set,  Refresh the Farm. You can now observe the difference in em page performance. If newly added components or their changed values are not getting reflected on em console, then also we should use the option to Refresh the Farm.


Now, login again to the em console and performance improvement should be observed while accessing components on the home page.

Issue with above solution:

As caching is enabled and Cache Age is set to 7200000 , it is possible that 
  1. When one of the managed server nodes are restarted, the status of the recently started managed server and its components are not displayed with the correct status till cache age is expired. This happens when you are working on the same browser screen. One can avoid this by opening em console in a different browser. 
  2. New Application deployment made through wlst/ant scripts or using JDev are not reflected on the em console till cache age expires.
In such cases, solution is to reset the values of the caching properties as required for the specific environment. It is possible that we may decrease the Cache Age value but may keep the Max Wait Time values somewhere >6500. Also, there is one more property "oracle.sysman.core.model.host.cacheAliveTime" exists for the same MBean. We can tweek its values to improve em screen perofrmance. You might also want to increase the value for "oracle.sysman.emRep.dbConn.statementCacheSize" in case of bigger cluster environments.

The solution steps can also be executed with the WLST scripting. More information on wlst commands, please go through the Oracle Support Doc ID 1423893.1. Please note that you cannot Refresh Farm using WLST script and manual refresh is required. 


Hope this helps

Cheers
Nirav

Thursday, October 24, 2013

Connecting Oracle SQL Developer 3.2 To MS SQL Server 2008 R2

First, if you are using older version of SQL Developer like 3.0 or earlier, and database older than SQL Server 2008, you can also try the steps from the video as Oracle has recommended @ http://www.oracle.com/technetwork/developer-tools/sql-developer/sql-server-connection-viewlet-swf-089886.html.



So, how to create a SQL Server  2008 R2 connection in SQL Developer 3.2.20.09.

Download required Jar Files:

  1.  Go to http://msdn.microsoft.com/en-US/data/aa937724.aspx and download Microsoft JDBC Driver 4.0 for SQL Server. You will get the file sqljdbc_4.0.2206.100_enu.tar.gz. Extract the archive to sqljdbc_4.0.2206.100_enu.  You can find sqljdbc4.jar in the folder.
  2. Go to http://jtds.sourceforge.net/  and download Download jtds-1.3.1-dist.zip (551.2 kB).   You will get jtds-1.3.1.jar file.

Configure the SQL Developer:

First, in SQL Developer, Open menu Tools --> Preferences. From the dialogue box, select Database --> Third Party JDBC Drivers. Click on Add Entry and add sqljdbc4.jar file into the Driver Path.


Second,  Copy the jdts-1.3.1.jar file into the folder /jlib folder.  jTDS, being a type 4 driver, does not need any special installation. Just drop the jar file into your application's classpath and you're done.

Restart your SQL Developer, Select New Connection option and now you can see the SQL Server Tab in the option.



Configure your database details and test the connection.

Hope this helps,

Cheers

Nirav

Friday, April 8, 2011

How to serch composites for BPEL process defined index values in soa suite 11g


Problem:

I have migrated my 10g BPEL processes to 11g. Few BPEL processes, based on input values they receive, sets the 1 to 6 index values. For a process where instance volume is higher/large, it is easy to search the instance using the index value. In 10g, I used to search on BPEL Console --> Instances tab, using "Index/Custom Key" text box. But as soon as I went to 11g, I found there is no option on em(Enterprise Manager) console to search BPEL instance using index.


After research, I found out that in 11g Oracle has not provided option to serach BPEL instance using those indexes. You can search for composites using composite indexes, but not the BPEL instances using BPEL process defined indexes. However, the values are still being stored in CI_INDEXS table under soainfra database schema.


Some simple but very useful 10g functionality is omitted even after the release of 11.1.1.4 release.


solution:

Simplest way, fire a query and get the instance ID from the ci_indexes table. But wait, it is not that easy. Let us see what exactly happens there.


I have a composite TestCompsite1. My bpel process TestHelloWorld is part of the composite TestComposite1. During execution, the bpel process setting values in ci_indexes table, say index_1 = "OracleWorld".

You can search the ci_indexes table using below query

select * from ci_indexes where index_1 like 'OracleWorld' (Add more OR conditions as you may want to search on other index keys)


You will get bpel instance number as cikey column value. But you cannot search using that output on em console as it only allows you to search based on the compsoite instance number of composite instance index values. The solution is below query, join ci_indexes with cube_instance


select a.cmpst_id cube_composite_id, a.cikey cube_cikey, b.cikey index_cikey
from cube_instance a, ci_indexes b
where a.cikey = b.cikey
and index_1 like 'OracleWorld'



the column value of cube_composite_id is what exactly you will search on em console for. This will open composite. If you have multiple bpel execution, then enable "show Instance ID" option. Use the index_cikey column value to reach the correct bpel instance.




I thought this would be easy when I saw values in ci_indexes table, but it required to look further in soainfra db. For simplicity, one may like to wrap this query in report to make the life easier.


Hope this will help


Cheers

Nirav

Tuesday, August 11, 2009

List of SOA Suite versions and patch numbers

The page is http://www.oracle.com/technology/products/soa/soasuite/collateral/downloads.html is available on OTN describes the all the versions 10.1.3.x and 11gR1.

All the versions for SOA Suite, related patch numbers and those details are available on the page.

Take a tour of that page...

Monday, August 10, 2009

TNSListener not starting after re-installation of Oracle Database XE 10g

In certain cases we need to install the Database XE again. Specially when I am installing a new SOA Suite server. While uninstalling the XE, if any of your XE services are UP, your re-installation gives problem with TNSListener service startup.

you can do this,
1) Delete any of the following services if they exist in your Control Panel -> Administrative Tools -> Services.
  • OracleServiceXE
  • OracleMTSRecoveryService
  • OracleXEClrAgent
  • OracleXETNSListener
To delete the service type "sc delete [service_name]" on your command prompt.

2) Go to Registry, and delete any reference to your XE database. You can search on the folder name where XE was installed, mostly "oraclexe" to get all the references.

Now, reboot your system and then install XE again. The installation should be fine now and TNSListener service should work properly.

Cheers

Friday, July 24, 2009

FTP Adapter failed to archive the files

JDev n SOA Suite 10134.

The reason that FTP Adapter failes to archive the files may be absense of archive directory or lack of privileges to write in that directory.

In such cases,
1) Check the logs at domain.log
2) SOA Suite in case of failure of archiving to given directory, archives the file at SOA_HOME/j2ee/home/fileftp/defaultArchive/
3) the file name will be stored with a suffix of hostname_domain_processname_version_timestamp format.


Cheers

Wednesday, July 22, 2009

Upgrade to SOA Suite 11g, will I go for that quickly?

Hiii there,

It has been an opportunity for me now to start writing again in my blog with SOA Suite 11g release.

I have already installed SOA Suite 11g successfully and created few processes on that, but that gave me a thought that why I should upgrade from 10.1.3.4 to 11g quickly ?

I think it is not wise to make hurry and move to 11g platform. Few reasons for that may be,

  • Moving to 11g platform can require substantial change or upgrade to your current 10.1.3.x infrastructure.
  • It was certainly easy to migrate from 10.1.3 to 10.1.3.1 to 10.1.3.3 (many would have faced lot of isses mvoing to 10133) to 10.1.3.4, but 11g is a change of application server, and Java Container. JRockit(i.e. BEA's JDK) and weblogic server (server container) had certainly been the best available in the market in BEA era, and they must be understand well before we really go for upgrade. There are more logging options and more then that a lot more configuration files (a bunch of .xml) to be understood with weblogic server domains(like instance in SOA Suite).
  • Fusion Middleware 11g Platform can bring substantial benefits if understood properly and implemented in right direction. So, it is not suggestable that just in order to upgrade SOA Suite, we upgrade our production servers. FMW 11g platform can bring your web applications, integration components, portal and document control components together in unified Developer studio. A good upgrade policy can save lots of bucks but still gives organization a bunch of new dimensions to do the business. Like, today organizations wants to close their multiple E-Business Suite instances just to have one single unique E-Business 12 version(preferably on-demand) and get a new life in their business, similarly platform FMW 11g can add new life in the organization if implemented with thoughtful design.
  • We still can go for only SOA Suite Upgrade. But remember SOA Suite 11g has many new good features like composite application concept, Entity creation concepts in BPEL projects, Business Rules component as a part of your composite application project, send notification activity, Oralce ESB as new component Median. So, you may want to plan and upgarde your current SOA Suite processes with some exciting new features before you deploy them to your SOA Suite 11g production server.
How about having Devlopment SOA Suite 11g server in parallel to your current 1013 SOA Suite development server. That would be really a good idea as it will help to understand the new functionality easily and will give us a chance to test new version for stability, performance and deployment perspective.

If you want to upgrade, please remember that
  • Upgarde can be carried out on all the SOA Suite Release 10.1.3.x release.
  • For current SOA Suite 10.1.2, we first need to upgrade to 10.1.3 and then to upgrade to 11g.

More details on 11g Upgrade is available at OTN, find supported upgrade points here and find here the details how to upgrade.

Have a Happy Upgrade,

Cheers,

Nirav

Wednesday, December 17, 2008

"Activities" tab in BPEL PM 10133 shows exceptions

I agree that working with SOA Suite 10133 with Basic installation and configuration based on Olite keeps you busy searching for solutions to the issues you face.

On my Vista Enterprise I installed 10131 basic installation and applied the patch for 10133. Also completed the post-installation task. When I opened my BPEL Console, as I expected I could not see the flow in the instances. But the problem which annoyed me a lot was with the "Activities" tab.

I assured that all my BPEL and ESB processes were still working fine. But when I clicked on "Activities" tab after installation I got the screen with the exception message as below

Oracle BPEL Process Manager Full Cycle

An unexpected error has occurred while executing your request. This is most likely related to a defect in the Oracle BPEL Process Manager product. We apologize you can post the error to the OTN forum and we will get back to you as soon as possible.

Attachments:

Build Information:

*****************************************************************************

Oracle BPEL Server version 10.1.3.3.0

Build: 0

Build time: Fri Jun 15 06:05:31 PDT 2007

Build type: release

Source tag: PCBPEL_10.1.3.3.0_GENERIC_070615.0525

Exception Message:
http://javax.servlet.ServletException
Cannot find work items.
An attempt to fetch the work items using the where condition "" from the datastore has failed. The exception reported is: ODBC S1002 invalid column number
Please check that the machine hosting the datasource is physically connected to the network. Otherwise, check that the datasource connection parameters (user/password) is currently valid.
sql statement: SELECT * FROM admin_list_wi WHERE ci_domain_ref = 0


Exception Trace:

javax.servlet.ServletException: Cannot find work items.
An attempt to fetch the work items using the where condition "" from the datastore has failed. The exception reported is: ODBC S1002 invalid column number
Please check that the machine hosting the datasource is physically connected to the network. Otherwise, check that the datasource connection parameters (user/password) is currently valid.
sql statement: SELECT * FROM admin_list_wi WHERE ci_domain_ref = 0

...


The solution I got was to re-run the scripts to the post-installation of 10133 patch. I could find that wi-fault table and three other views were missing from the database though they were there in the scripts.

Thanks Sash for pointing this out. You can find more information @ http://forums.oracle.com/forums/thread.jspa?threadID=837295&tstart=0.

Cheers

Nirav

Monday, December 1, 2008

Generating Remote and Binding Exception in Oracle BPEL

I was testing Remote exception and Binding exception for my sample BPEL Process and thought to put the post here.

My BPEL process "exceptionRB" looks like below and calls another BPEL Process "Hello1".


To create the Remote and Binding exception I played with the "Hello1" BPEL Process.
  1. To generate Remote Exception, turn the process state of "Hello1" process to "OFF" from manage tab on BPEL console (The exception description would be that the process state is OFF). Or undeploy the "Hello1" process (exception : cannot read the WSDL).
  2. To check Binding Exception, remove the operation "process" in "Hello1" which is called by BPEL process "exceptionRB". In my case I have change the operaion "process" to "process2" and redeployed the BPEL Process "Hello1".(Exception message would be "No such operation.")


Hope this will be helpful.

Cheers

Nirav