Subscribe: SOA@Oracle BPEL & ESB
Added By: Feedage Forager Feedage Grade B rated
Language: English
data  drop public  drop  java  mgmt  oracle  print  public synonym  public  server  soa  synonym mgmt  synonym  weblogic 
Rate this Feed
Rating: 2.2 starRating: 2.2 starRate this feedRate this feedRate this feed
Rate this feed 1 starRate this feed 2 starRate this feed 3 starRate this feed 4 starRate this feed 5 star

Comments (0)

Feed Details and Statistics Feed Statistics
Preview: SOA@Oracle BPEL & ESB

SOA@Oracle SCA, BPEL, BPM & Service Bus

This blog is all about Oracle SOA related products; SCA, OSB, BPEL, BPM, Rules, Workflow.

Updated: 2017-07-18T16:49:14.357+02:00


Changing SOA properties via WLST


Hereby a script to change some properties for SOA Suite. These are some generic settings such as:soa-infraAuditLevelGlobalTxMaxRetryDisableCompositeSensorsDisableSpringSESensorsmediatorAuditLevelbpelAuditLevelSyncMaxWaitTime Recovery Schedule Configimport;import;import java.util.HashMap;import java.util.Map;import java.util.Set;import;import;import;import;import;import;import;import;import;connect('weblogic', 'Welcome1', 't3://myhost:7001')domainRuntime()## soa-infra#SOAInfraConfigobj = ObjectName(',name=soa-infra,type=SoaInfraConfig,Application=soa-infra')# Off, Production and DevelopmentSOAattribute = Attribute('AuditLevel', 'Production')mbs.setAttribute(SOAInfraConfigobj, SOAattribute)print '*** soa-infra: set AuditLevel', mbs.getAttribute(SOAInfraConfigobj, 'AuditLevel')SOAattribute = Attribute('GlobalTxMaxRetry', 0)mbs.setAttribute(SOAInfraConfigobj, SOAattribute)print '*** soa-infra: set GlobalTxMaxRetry', mbs.getAttribute(SOAInfraConfigobj, 'GlobalTxMaxRetry')SOAattribute = Attribute('DisableCompositeSensors', true)mbs.setAttribute(SOAInfraConfigobj, SOAattribute)print '*** soa-infra: set DisableCompositeSensors', mbs.getAttribute(SOAInfraConfigobj, 'DisableCompositeSensors')SOAattribute = Attribute('DisableSpringSESensors', true)mbs.setAttribute(SOAInfraConfigobj, SOAattribute)print '*** soa-infra: set DisableSpringSESensors', mbs.getAttribute(SOAInfraConfigobj, 'DisableSpringSESensors')## Mediator#SOAInfraConfigobj = ObjectName(',name=mediator,type=MediatorConfig,Application=soa-infra')SOAattribute = Attribute('AuditLevel', 'Inherit')mbs.setAttribute(SOAInfraConfigobj, SOAattribute)print '*** mediator: set AuditLevel', mbs.getAttribute(SOAInfraConfigobj, 'AuditLevel')## BPEL#SOAInfraConfigobj = ObjectName(',name=bpel,type=BPELConfig,Application=soa-infra')SOAattribute = Attribute('SyncMaxWaitTime', 120)mbs.setAttribute(SOAInfraConfigobj, SOAattribute)print '*** bpel: set SyncMaxWaitTime', mbs.getAttribute(SOAInfraConfigobj, 'SyncMaxWaitTime')# AuditLevel#   off: 0#   inherit: 1#   minimal: 2#   production: 3#   development: 4#   onerror: 5SOAattribute = Attribute('AuditLevel', 'production')mbs.setAttribute(SOAInfraConfigobj, SOAattribute)print '*** bpel: set AuditLevel', mbs.getAttribute(SOAInfraConfigobj, 'AuditLevel') = ObjectName(',name=bpel,type=BPELConfig,Application=soa-infra')  = mbs.getAttribute(SOAInfraConfigobj, 'RecoveryConfig')rec_keySet = rec_config_obj.getCompositeType().keySet()rec_keys = rec_keySet.toArray()rec_keyitems = [ rec_key for rec_key in rec_keys ] = rec_config_obj.get('ClusterConfig')rec_recurrr_obj = rec_config_obj.get('RecurringScheduleConfig')rec_startup_obj = rec_config_obj.get('StartupScheduleConfig')## StartupScheduleConfig#cnt = 0# java.util.Collections.UnmodifiableSetkeySet = rec_startup_obj.getCompositeType().keySet()# arraykeys = keySet.toArray()# listkeyitems = [ key for key in keys ]# arrayvalues = rec_startup_obj.getAll(keyitems)for key in keys:  if key == 'maxMessageRaiseSize':    values[cnt] = 0    print '*** bpel: set RecurringScheduleConfig:maxMessageRaiseSize ' + key + ' to value ' + str(values[cnt])  cnt = cnt + = CompositeDataSupport(rec_startup_obj.getCompositeType(), keyitems, values)## RecurringScheduleConfig[...]

Oracle Fusion Middleware patchset 7, the release notes


As of April 2013, patchset 6 is out for the whole Oracle Fusion Middleware stack. It is always hard to find the release notes on the Oracle Website. To many clicks. Here are the releae notes of Weblogic, SOA Suite, Service Bus, AIA and JDeveloper. Note thate PS6 refers to version

Release Notes:
Here is an overview on the new features:

APEX: Running multiple version on single Weblogic Server


Sometimes you would like to have multiple versions of APEX running on one Weblogic Server, or Weblogic Cluster. For example, you would like to run APEX version 4.0 and version 4.2 along each other. To configure this is rather simple and straight forward. The trick is to use the various WAR files; apex.war and images.war under a different name and use plan files to manipulate the root and image directories.The following actions should be carried out:make sure you have different WAR files of the APEX application in a single directory on your Admin server:$ cd /data/deploy$ ls -1apex.4.0.warapex.4.2.warimages.4.0.warimages.4.2.warCreate a plan directory to store your plan-files to overule the WEB properties$ mkdir -p /data/user_projects/domains/APEX/plan/apex$ ls -1plan-images.4.0.xmlplan-images.4.2.xmlplan.4.0.xmlplan.4.2.xmlMake sure you have these files in this directory. Here is an example of the APEX plan-images file, to create your own plan file:plan-images.4.2.xml   apex.war                  apex-images-root          apex-images-42              images.4.2.war    war          weblogic-web-app      WEB-INF/weblogic.xml              apex-images-root        /weblogic-web-app/context-root              /data/tmp/apex Here is an example of the APEX plan file:plan.4.2.xml    apex.4.2.war                  apex-root          apex-42                      apex-config          /data/configuration/4.2              apex.4.2.war    war          weblogic-web-app     

Review: Oracle SOA Suite 11g Administration Handbook


While Packt Publishing is almost ready to publish their 1000th title. They will celebrate this with an  the event. As the mentioned on their site:"Packt would like you to join them in celebrating this milestone with a surprise gift. Revisit Packt’s website between the 28th and 30th of September to redeem your gift, or sign up for an account with us now to receive a notification email.Packt supports many of the Open Source projects covered by its books through a project royalty donation, which has contributed over $400,000 to Open Source projects. As part of the 1000th book celebration Packt is allocating $30,000 to share between projects and authors."I had the opportunity to review the new administration handbook of the Oracle SOA Suite 11g. Here are my comments on this book.The book is filling a gap in the Oracle SOA world. This book is really focusing on administration and monitoring of the SOA11g environment. The book is not a summary of the Oracle Manuals with some screen shots based on an example application, but it gives you also different best practises, idea's, and good examples on maintaining your environment. The chapter on tuning your SOA11g environment is very good! It covers O/S, application server, database and the various component within the SOA Suite.I missing only a good script in the chapter on maintaining  your SOA instances. The examples are based on the de supplied scripts of Oracle, but those script do not purge all the data.[...]

Extreme performance boost on OSB11g and CLOB objects


When using the JCA DbAdpater in the Oracle Service Bus (OSB11g) normal operations running fine. Most of us using the DbAdapter for simple DML actions (Select/Insert/Update/Delete).

There is a huge performance degradation when you read LOB objects from the DbAdapter. When reading a CLOB from a table, and this CLOB contains a document of 3MB, we saw that the OSB server consumes 100% CPU for a long time.
This results in time-outs, broken-pipe, connection lostd and all those kind of messages. First of all you look into your own environment to find this issue;
  • Is the server configured correctly
  • Is the network up and running
  • Is the query correct
  • Is the Proxy service programmed in the correct way
I found out that this huge CPU consuming action is a bug (!) that exists from patch set #2 ( Only for this release a patch was created. The fix was not put into the code of the next patch sets.

To summarize; make sure you have patch for your OSB environement for bug 1294800 (PS2) or 14630697 (PS5)  or ask Oracle Support for a backport for you release.

WLST Script changing logfile location


While I was migrating Forms6i to Forms11g patch set #5, the configuration tool of Forms11g is a bit strict. In the silent install it is not possible to set de locations of the log files. Here is the script that will set new filename locations of all the Managed Servers and Admin Server in the domain. It also set the filename location of all the ODL usage:## ${ORACLE_HOME}/common/bin/ [domain-name] [admin-server-url] [password]#import osimport sysimport tracebackimport getoptloggingEnabled=True# rotationType="none", "bySize", "byTime"# logFileSeverity="Trace", "Debug", "Info", "Notice", "Warning"# rotateLogOnStartup=False, TruerotationType="none"logFileSeverity="Warning"rotateLogOnStartup=Truedef editMode(): edit() startEdit() def editActivate(): save() activate(block="true") def updateLog(domain_name, logMB, logType): print "**** Start updateLog()" fileName = "" if logType == "Access": logMB.setLoggingEnabled(loggingEnabled) fileName = "/data/logs/" + domain_name + "/" + logMB.getName() + "_access.log" elif logType == "Server": fileName = "/data/logs/" + domain_name + "/" + logMB.getName() + ".log" elif logType == "Datasource": fileName = "/data/logs/" + domain_name + "/" + logMB.getName() + "_datasource.log" elif logType == "Domain": logMB.setLogFileSeverity(logFileSeverity) fileName = "/data/logs/" + domain_name + "/" + domain_name + ".log" print "**** " + logType + " " + fileName logMB.setFileName(fileName) logMB.setRotationType(rotationType) logMB.setRotateLogOnStartup(rotateLogOnStartup) print "**** Finished updateLog()" def changeLogPath(domain_name): print "**** Start changeLogPath()" domainConfig() editMode() logMB = getMBean("/Log/" + domain_name) updateLog(domain_name, logMB, logType="Domain") editActivate() servers = cmo.getServers() editMode() for server in servers: serverName = server.getName() logMB = getMBean("/Servers/" + serverName + "/Log/" + serverName) updateLog(domain_name, logMB, "Server") httpLogMB = getMBean("/Servers/" + serverName + "/WebServer/" + serverName + "/WebServerLog/" + serverName) updateLog(domain_name, httpLogMB, "Access") DSLogMB = getMBean("/Servers/" + serverName + "/DataSource/" + serverName + "/DataSourceLogFile/" + serverName) updateLog(domain_name, DSLogMB, "Datasource") editActivate() print "**** Finished changeLogPath()"def usage(): print "Usage" print "./ $1"def parse_input(): print "***** Start parse_input()" domain_name = sys.argv[1] admin_server = sys.argv[2] admin_password = sys.argv[3] return domain_name, admin_server, admin_password print "***** Start parse_input()" # Connectionsettingsdef connectToServer(username, password, adminurl): print "***** Start connectToServer()" connect(username, password, adminurl) print "***** Finished connectToServer()"#Definition to disconnect from a serverdef disconnectFromServer(): print "***** Start disconnectFromServer()" disconnect() print "***** Finished disconnectFromServer()" exit()def changeODLPath(domain_name): print "***** Start changeODLPath()" domainConfig() managedServers=cmo.getServers() #Get Runtime for our server for managedServer in managedServers: sname=managedServer.getName() path = "/Servers/" + sname cd(path) print "***** Changing server: " + sname lh = listLogHandlers(target=sname) for l in lh: lname = l.get("name") lprops = l.get("properties") removeprops=[] for prop in lprops: if prop.get("name") == "maxFileSize": removeprops.append("maxFileSize") elif prop.get("name") == "maxLogSize": removeprops.append("maxLogSize") odlfile = "/data/logs/" + domain_name + "/" + sname + "-" + lname + "-diagnostic.log" configureLogHandler(target=sname, name=lname, path=odlfile,removeProperty=removeprops) print "***** Finished changeODLPath()"def main(domain_name,[...]

OEM12c Patchset install: Updated cleanup script


I have updated my script to force a clean-up of de repository of OEM12c with the latest patch set. There were some new roles and synonyms introduced. The old script of OEM12c is here, new one is here, logon as sys user with sysdba priveliges:delete from SCHEMA_VERSION_REGISTRY where COMP_NAME='Metadata Services';delete from SCHEMA_VERSION_REGISTRY where COMP_NAME='Authorization Policy Manager';delete from SCHEMA_VERSION_REGISTRY where COMP_NAME='Oracle Platform Security Services';commit;drop user SYSMAN cascade;drop user SYSMAN_MDS cascade;drop user MGMT_VIEW cascade;drop user SYSMAN_RO cascade;drop user SYSMAN_OPSS cascade;drop user BIP cascade;drop user SYSMAN_APM cascade;drop role MGMT_USER;drop role MGMT_ECM_VIEW;drop public synonym SMP_EMD_TARGET_OBJ_ARRAY;drop public synonym SMP_EMD_TARGET_OBJ;drop public synonym SMP_EMD_STRING_ARRAY_ARRAY;drop public synonym SMP_EMD_STRING_ARRAY;drop public synonym SMP_EMD_NVPAIR_ARRAY;drop public synonym SMP_EMD_NVPAIR;drop public synonym SMP_EMD_INTEGER_ARRAY_ARRAY;drop public synonym SMP_EMD_INTEGER_ARRAY;drop public synonym SMP_EMD_DELETE_REC_ARRAY;drop public synonym SMP_EMD_AVAIL_OBJ;drop public synonym SETEMVIEWUSERCONTEXT;drop public synonym MGMT_VIEW_UTIL;drop public synonym MGMT_USER;drop public synonym MGMT_TYPE_PROPERTIES;drop public synonym MGMT_TARGET_PROPERTIES;drop public synonym MGMT_TARGET_MEMBERSHIPS;drop public synonym MGMT_TARGET_BLACKOUTS;drop public synonym MGMT_TARGETS;drop public synonym MGMT_TARGET;drop public synonym MGMT_STRING_METRIC_HISTORY;drop public synonym MGMT_SEVERITY_OBJ;drop public synonym MGMT_SEVERITY_ARRAY;drop public synonym MGMT_SEVERITY;drop public synonym MGMT_PREFERENCES;drop public synonym MGMT_PAF_PROCS_LATEST;drop public synonym MGMT_PAF_JOBS;drop public synonym MGMT_PAF$STATES;drop public synonym MGMT_PAF$PROCEDURES;drop public synonym MGMT_PAF$INSTANCES;drop public synonym MGMT_PAF$APPLICATIONS;drop public synonym MGMT_NAME_VALUES;drop public synonym MGMT_NAME_VALUE;drop public synonym MGMT_METRIC_THRESHOLDS;drop public synonym MGMT_METRIC_ERRORS;drop public synonym MGMT_METRIC_COLLECTIONS;drop public synonym MGMT_METRICS_RAW;drop public synonym MGMT_METRICS_COMPOSITE_KEYS;drop public synonym MGMT_METRICS_1HOUR;drop public synonym MGMT_METRICS_1DAY;drop public synonym MGMT_METRICS;drop public synonym MGMT_MESSAGES;drop public synonym MGMT_LONG_TEXT;drop public synonym MGMT_LOG;drop public synonym MGMT_JOB_TARGET;drop public synonym MGMT_JOB_SCHEDULE;drop public synonym MGMT_JOB_PARAMETER;drop public synonym MGMT_JOB_OUTPUT;drop public synonym MGMT_JOB_EXEC_SUMMARY;drop public synonym MGMT_JOB_EXECUTION;drop public synonym MGMT_JOB_EXECPLAN;drop public synonym MGMT_JOBS;drop public synonym MGMT_JOB;drop public synonym MGMT_IP_TGT_GUID_ARRAY;drop public synonym MGMT_GUID_OBJ;drop public synonym MGMT_GUID_ARRAY;drop public synonym MGMT_GLOBAL;drop public synonym MGMT_DELTA_VALUES;drop public synonym MGMT_DELTA_VALUE;drop public synonym MGMT_DELTA_ID_VALUES;drop public synonym MGMT_DELTA_IDS;drop public synonym MGMT_DELTA_ENTRY_VALUES;drop public synonym MGMT_DELTA_ENTRY;drop public synonym MGMT_DELTA;drop public synonym MGMT_CURRENT_SEVERITY;drop public synonym MGMT_CURRENT_METRIC_ERRORS;drop public synonym MGMT_CURRENT_METRICS;drop public synonym MGMT_CURRENT_AVAILABILITY;drop public synonym MGMT_CREDENTIAL;drop public synonym MGMT_COLLECTION_PROPERTIES;drop public synonym MGMT_AVAILABILITY;drop public synonym MGMT_AS_ECM_UTIL;drop public synonym MGMT_ADMIN;drop public synonym MGMT$WEBSPHERE_MODULES;drop public synonym MGMT$WEBSPHERE_JDBCDATASOURCE;drop public synonym MGMT$WEBSPHERE_APPLICATION;drop public synonym MGMT$WEBLOGIC_SERVER;drop public synonym MGMT$WEBLOGIC_MODULES;drop public synonym MGMT$WEBLOGIC_JDBCDATASOURCE;drop public synonym MGMT$WEBLOGIC_APPLICATION;drop public synonym MGMT$WEBCACHE_TO_OHS_ROUTING;drop public synonym MGMT$WEBCACHE_SITEMAPPINGS;drop pub[...]

Review: Do more with SOA Integration


Publishing books related to Oracle SOA technology contains a broad spectrum of products, tools and technologies. Packt Publishing is trying to fill this spectrum with al kinds of books. But buying all these books is expensive, even if you buy only the e-book version.One of the books the published is a Best-Of book. It takes the best chapters from the following books.BPEL cookbookSOA Approach to IntegrationService Oriented Architecture: An Integration BlueprintBuilding SOA-Based Composite Applications Using NetBeans IDE 6Oracle SOA Suite Developer's GuideWS-BPEL 2.0 for SOA Composite Applications with Oracle SOA Suite 11gOracle Modernization SolutionsSOA GovernanceYou can view the book here.So what do I think of the book? I think it is a good starter. It gives you an overview of the complete SOA spectrum. What I like in this book is the theory on the concepts of SOA. A big part of the book is all about the concepts, patterns and models that can be used for various SOA Technologies (BPEL  / Service Bus / Governance). The theory is supported with best practices on the implementation (best-practise). While this book is not full end-2-end walk in the park on SOA technology, it explains in detail the concepts on SOA. Only if you want to deep-dive into a part of the SOA technology, you should read that particular book.One other thing I miss in this book, is the Oracle Service Bus. Pack published this year a book on this; Oracle Service Bus 11g Development CookbookMy tips for Packt; Give this (e)book for free when you buy one of these other books. Based on this book, you will probably buy another one.[...]

Major Memory en CPU improvement on OFM


The last few weeks we had some strange behaviour on our Oracle Fusion Middleware stack. This was first related to two different SOA 11g production clusters. One 2-node cluster and one 4-node cluster. Both environments run into a Java out-of-memory.While he have running this production environments for a long time, we thought we have tuned this very well; on database as on application server. As I spoke earlier on Java Garbage collection on, and on tuning the SOA Suite 11g; first thought, it had to do the the applications we made; Composites, Custom Java Classes, Services. Is something changed in the meantime? We also thought it had to do with the amount of data we are processing, is there more data processed than normal? Something changed in the database? The network? The physical storage? All of them were not changed, looking in the program code; we did not find anything special.We tried to analyse the a heap dump, digged into log files, Oracle Support Bug Database and many-many-other-things. I stared a long time to this## A fatal error has been detected by the Java Runtime Environment:## java.lang.OutOfMemoryError: requested 32756 bytes for ChunkPool::allocate. Out of swap space?#The I was triggered by a bug in the Oracle/Sun Java; . For some reason I downloaded the latest Java 1.6 SDK and applied this on one managed server on one the SOA 11g Suite.The result was amazing!Less CPULess Heap usageNormal garbage collectionsWe applied this on our SOA 11g Suite clusters and had no issues.We see this difference also on de Oracle Service Bus (!).  My advise, roll out Java 1.6.0 build 30 (or later) on your existing production environments, SOA Suite, WebCenter, ServiceBus, etc!Here are the results of our instance running without Java 1.6.0_b30 and at the bottom with Java 1.6.0_b30. And see the incredible difference. I did not show the CPU graphs with the garbage collections, but those are also different.Java Heap Before applying Java 1.6.0 Build 30Java Heap After applying Java 1.6.0 Build 30[...]

Oracle Fusion Middleware PS5 is out


A short article, but Oracle Fusion Middleware patchset #5 is out! Now downloadble via:

Oracle Partner Event: Málaga 2012 Edition


In the first half of February 2012, I joined the Oracle Partner Event in Málaga, Spain. This event is organized by Oracle for all partners and special guests. The goal of this event is to learn from each other, between the participators as well with Oracle. We also get the latests information on the Oracle product strategy. The event is split into workshops and presentation sessions. The first two days is all about Oracle strategy, product updates and customers cases. While the last two days the workshops are being executed on SOA Suite, WebCenter and Weblogic.My goal was to see and talk to my (ex)Oracle colleagues, Development and to get the latest info of the SOA Suite product stack and Weblogic Server. Apart from this networking is key during all these sessions, so I did a lot of chat with the participators to share experience, issues and any other business that comes along. My focus is off-course Oracle Fusion Middleware and everything that is related to SOA/BPM. Here are some teasers.Weblogic 12c Weblogic 12c was announced at Oracle Open World in 2011, and can already be downloaded already. In this session we got in-depth information on all the new features that is currently available and what will come in the next releases.Java EE 6Simplified DeploymentIntegrated Traffic Management (Exalogic)Enhanced HA and Disaster RecoveryHigher Performance (that is default with new releases ;-) )Transactions can also be stored in database Seamless Upgrade (!)Support for Exalogic Support for Oracle Public Cloud SOA Suite StrategyEverybody in the SOA community was excited on the SOA and BPM sessions, new features of the upcoming releases where presented. We had sessions on the new PS5 patch set and what will come in the 12c edition, both for SOA and BPM.Enterprise Manager is improved fault analysisTesting BPEL processes from JDeveloperCopy/Paste in JDeveloper of BPEL activitiesImproved purging (see also purging document with PS5 enhancements)DBAdapter supports coherenceDebugging of BPEL processes TemplatingAll consoles integrated in EM (SOA / BPM / OSB)Single IDE for all SOA products...many many more... OverallI am not able to give any details on which functionality comes in which release or even when Oracle will release it. That was the only disappointment of this event, they will not give any dates. I think this will not change in a next event ;-)Oracle Social NetworkThis presentation and demo, is off course running in the Cloud, but in this 'product' Oracle integrates a messaging system, with artifacts. In this case Siebel CRM was integrated with Oracle Social Network in such way that everybody can join the conversation; documents can be added, shared, annotations can be made and approvals are send back to Siebel CRM. Everything via social media on any device. This demo shows that business can me made via social media. Except this social media is not run publicly to everybody but in your own organization.Apart of all the workshops, the global and parallel sessions, there was also time to relax. Oracle organized a dinner with live Andalusian music. We went to a traditional Spanish bodega were we had tapas and drinks. Here is a video to taste the atmosphere. allowFullScreen='true' webkitallowfullscreen='true' mozallowfullscreen='true' width='320' height='266' src='' FRAMEBORDER='0' />Here are also some pictures that I have made during this event, this gives you a small impression. The Weblogic 12c session from Maciej Gruszka from Oracle Product Development. Simone Geib from SOA Product Development during her session on PS5 and 12c. Join the social networks of SOA Suite from Oracle Development. The old castle of Malaga.At the central square in Malage, with colorful houses. [...]

AQAdapter: Reset your datasource


Using the AQ Adapter in a cluster environment, can cost you a lot of temporary tablespace. When you use AQ for dequeuing events and process them further with OSB or SOA Suite, there is always a connection to the database.This connection is waiting for messages to appear on the Queue (it is subscribed). From middleware perspective everything works fine, data is being dequeued and your proxy-service or composite is running.But at database level, the session is consuming tablespace. This is the temporary tablespace, so far so good. But if you use this on heavy load for a long time, the temporary space will grow to hundreds of mega or even gigabytes.To determine how much temp space your sessions are using, you can execute the following SQL:SELECT u.tablespace, ROUND(((u.blocks*p.value)/1024/1024),2)||'M' "SIZE", s.sid||','||s.serial# SID_SERIAL, s.username, s.program, s.machine, s.logon_time, Q.NAME, s.eventFROM sys.v_$session s, sys.v_$sort_usage u, sys.v_$parameter p, sys.dba_queues qWHERE = 'db_block_size'AND a.saddr = b.session_addrAND a.username = 'SCOTT'AND a.p1text = 'queue id'AND a.p1 = q.qidORDER BY a.machine, u.blocks;I try to solve this by playing with the AQAdapter settings and de XA-datasource behind it. Non of them fixed the issue. The only way I solved it was by resetting the data-source. On the Internet I find a nice article from Edwin Biemond and refined his script into one I prefer. This is the result:## Usage:## $ORACLE_HOME/common/bin/ ## based on:# Crontab:# 10 1 * * 6 /bin/bash -x /opt/weblogic/Middleware/Oracle_OSB/common/bin/ weblogic t@ctwl4cc t3://l2-mslaccadm02:7201 MslDQXaDS >>/data/logs/resetdatasource.log 2>&1#import sysimport tracebackimport timeimport datetimeprint 'Started at: ' + str( = Parse command line paramteres#adminUser = sys.argv[1]adminPassword = sys.argv[2]adminUrl = sys.argv[3]datasourceNames = String(sys.argv[4]).split(",")connect(adminUser, adminPassword, adminUrl)domainRuntime()drs = ObjectName("com.bea:Name=DomainRuntimeService,");domainconfig = mbs.getAttribute(drs, "DomainConfiguration");servers = mbs.getAttribute(domainconfig, "Servers");## Loop over serversfor server in servers: serverName = mbs.getAttribute(server, 'Name') if serverName == "AdminServer": print 'Server: ' + serverName + ' skipped!' else: print 'Server: ' + serverName dsBean = ObjectName('com.bea:ServerRuntime=' + serverName + ',Name=' + serverName + ',Location=' + serverName + ',Type=JDBCServiceRuntime') if dsBean is None: print 'not found' else: datasourceObjects = mbs.getAttribute(dsBean, 'JDBCDataSourceRuntimeMBeans') # # Loop over datasources for datasourceObject in datasourceObjects: if datasourceObject is None: print 'datasource not found' else: dsName = mbs.getAttribute(datasourceObject,'Name') # # Loop over datasource to be reset for datasourceName in datasourceNames: if dsName == datasourceName: print ' Reset: ' + dsName try: mbs.invoke(datasourceObject, 'reset', None, None) except Exception, err: print 'print_exc():' traceback.print_exc(file=sys.stdout) print print 'print_exc(1):' traceback.print_exc(limit=1, file=sys.stdout) else: print ' Skipped: ' + dsNamen2 = 'Duration: ' + str(n2 - n1)print 'Fini[...]

Oracle Service Bus Cookbook


Former Oracle collegueus and business parnerts wrote a nice cok book on the usages of Oracle Service Bus. The book is full of examples and guide you through the working and usage of the Oracle Service Bus. The is very technical of useful for developers who just ant to start the OSB. Experienced developers will use this book for the complete examples on the different technologies using OSB, such as JMS, EJB.When you use this book, it is expected that you understand the concepts of XML, XLST, WSDL, WebServices, JMS and SOAP and basic knowledge of SQL. This is not explained in the book. Which is a advantage! Refer to the w3schools for such things. You can obtain it via Packt Publishing.Some subjects I miss in the book; best practice on execption handing, throtteling, deployment.The examples in the book are based Oracle Service Bus patch set #3, but can also be used on top of patch set #4. This release is already available since august 2010. Why didn't' the authors use this version? I expect that the examples in the book can also be applied on the upcoming patch set release #5.[...]

Meet me @ Oracle Partner Event Partner Community Forum – February 7th & 8th 2012, Malaga Spain


I will join the OPN Forum in Malaga Spain, on February 7th & 8th 2012. If you want to join just click on the link: In this event you will meet other fellows on related stuff on Weblogic 12c, BPM, SOA, ADF and Webcenter.learn how to sell the value of Fusion Middleware by combining SOA, BPM, WebCenter and WebLogic solutionsmeet with Oracle SOA, BPM, WebCenter and WebLogic Product Managementexchange knowledge and have access to competitive intelligencelearn from successful SOA, BPM, WebCenter and WebLogic implementationslearn about WebCenter Sites and WebLogic12cnetwork within the Oracle SOA & BPM Partner Community, the Oracle WebCenter Partner Community and the Oracle WebLogic Partner Community[...]

OWSM: Loading private and public certifcates


As written in my blog article on SSL, handling certificates is not easy. One of the goals I had was to load a public and private certificate into a JKS key-store. With tools such as keytool and openssl, this is not possible. After struggeling a few hours, I managed to fix this. This is how I did it.

You have two files, one public key and one private key; vijfhuizen_pub.pem, vijfhuizen_prv.pem. Based on these files, you can load the keystore as follows:
  • Convert the keys into DER format.
  • Load the DER files into a new keystore via Java.
openssl x509 -in vijfhuizen-pub.pem -inform PEM -out vijfhuizen-pub.crt -outform DER

openssl pkcs8 -topk8 -nocrypt -in vijfhuizen-prv.pem -inform PEM -out vijfhuizen-prv.crt -outform DER

java ImportKey -prikey vijfhuizen-prv.crt -signed vijfhuizen-pub.crt -alias vijfhuizen -keypass changeit -store vijfhuizen.jks

De Java Class has the following options:
java ImportKey

java ImportKey -alias alias -prikey file.der -signed cert.der -keypass pas1 -storepass pas2
java ImportKey -alias alias -prikey file.der -signed cert.der -keypass pas1 -store file.jks -storepass pas2


Store DER key and signed certificate into user's home key store, or into the key
store file specified by the STORE parameter.

The Java  code can be download here.

OSB: Deployment issues with DBAdapter


In normal circumstances changing the configuration of the DBAdapter should work. You create a JDBC datasource and create in the outbound connections of the DbAdpater a new JNDI entry. After saving your settings you should update the DBAdapter application and apply the changes. Normally you see:


Here is the issue I was struggeling with. I created a new JNDI entry in the DBAdapter, applied the changes, deployed the Plan.xml files, updated the DBAdapter. I saw that the managed servers did not picked up the new change or even the old entries.

After a while I fixed the issue. This was related due to the fact the DbAdapter was also targed to the AdminServer. So here are the steps to update or add new JNDI entries in the DbAdapter application or any other, AqAdapter or FileAdapter.
  1. Update/Add JNDI entry in your outbound connections of the Adapter.
  2. Save the changes.
  3. Bring down the Managed Servers.
  4. Update the Adapter application.
  5. Bring down the Admin Server.
  6. Copy the Plan.xml file of the Adapter to the managed servers.
  7. Start the AdminServer.
  8. Start the managed servers.
This solution is strange, because you expect that Weblogic should do this while the AdminServer and Managed Servers are running. But in my case this was a working solution.

To create and deploy your own Adapters can be found @Edwin Biemond's Blog.

OSB: AdminServer spinning 100% CPU


Sometimes for no reason, or I did not find a reason..., the AdminServer is spinning into 100% CPU. Communication is impossible; deployment is failing or take a long time (hours...), Console will not start, etc.

The log files of the AdminServer will not give you a hint on this behavior. It will tell you that memory is reaching 100%:

AdminServer.log: reaching out of memory

Kill the AdminServer process and starting the AdminServer again, will not solve the issue. After a time the AdminServer is at 100% and communication is not possible.

A solution that worked for a short time was:
kill AdminServer process
delete all files and directories from the AdminServer:

cd $WLS_DOMAIN/servers/
cp -rv AdminServer/security .
rm -rf AdminServer/*
mv security AdminServer

Start the AdminServer
This solution resulted taht teh AdminServer was up and running, I could connect to the Service Bus console and the normal console. But when I started a deployment of new services, the AdminServer spinned into 100%.

After searching the log files and investigating why this suddenly happened, it did not occur on other environments, I did something radical. I removed all the OSB artifacts that were installed on the the AdminServer.

stop AdminServer
stop all the managed servers

cd $WLS_DOMAIN/osb
rm -rf *
start AdminServer
Now the AdminServer is up and running very quickly. Due to the fact there are now services deployed.
Start a deployment of services to the AdminSerer
After deployment, start all the managed services.
This workarround works! The AdminServer is not spinning anymore, reacts fast on the consoles.

SOA 11g: Improved Memory and Garbage Consumption


There is a huge difference in memory consumption when you run SOA11g (PS4 in my case). The screens are based on a full-production clustered environment. One node is running with sub-optimal settings, while the other node is running optimal settings. A load-balancer is equally spreading the requests to the nodes.Running SOA 11g on VMWare, 1 CPU and 3GB memory, with the options:-Xms1280m-Xmx1280m-XX:MaxPermSize=512m-XX:+UseParallelGCRunning SOA 11g on VMWare, 1 CPU and 3GB memory, with the options:-Xms1280m-Xmx1280m-XX:MaxPermSize=512m-Xss256k-XX:+UseConcMarkSweepGC-XX:+UseParNewGC-XX:+CMSIncrementalMode-XX:+CMSIncrementalPacing The last XX options shows that the memory consumption is dramaticlly lower and garbage collection is lower but frequenter.[...]

Purging OSB Report data


Deleting report data generated by Oracle Service Bus (OSB) can be done via the Service Bus console. Make sure you have deployed the " Message Reporting Purger " application. By default the application is set to new, so it is not active. Inititially start this application for requests. Purging can done be done via the Console.If you want to purge the data directly in the database, execute the following SQL.delete from wli_qs_report_data rd where exists (   select 'x'   from wli_qs_report_attribute ra   where ra.msg_guid = rd.msg_guid   and ra.db_timestamp < trunc(sysdate) - 7 ); delete from wli_qs_report_attribute ra where ra.db_timestamp < trunc(sysdate) - 7; alter table wli_qs_report_data deallocate unused; alter table wli_qs_report_data enable row movement; alter table wli_qs_report_data shrink space compact; alter table wli_qs_report_attribute deallocate unused; alter table wli_qs_report_attribute enable row movement; alter table wli_qs_report_attribute shrink space compact;[...]

Tuning SOA 11g in a nutshell


Tuning SOA 11g can be done in a few quick steps, this will tackle most common performance issues at infrastructure level. On the other hand, most performance issues are in the application (composite) self. If you design a bad application, the application will not perform well.I did my tuning on the following subjects:JVM Memory JVM Garbage Collection Datasources Threads EJB Database JVM MemoryMake sure you have set the minimal and maximal heap size the same size. The size should be at least 1024MB.Make sure the maxpermsize parameter is set to at least 512MB. In most cases requests in the SOA world are relative small, this means you could shrink the size of the stack for one Java thread. Example:-server -Xms1280m -Xmx1280m -XX:MaxPermSize=512m -Xss128kJVM Garbage CollectionRunning your application server with one CPU, you would not expect enhanchments by setting garbage collection to parallel. On VMWare we saw some significant improvement when we set this option even the virtual machine has one CPU. I think it has to do with the hyper-visor and the ESX Server. Somehow the virtual machine benefits from the ESX environment. Example:-XX:-UseParallelGC -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSIncrementalMode -XX:+CMSIncrementalPacing  JMXSetting some JMX options will not improve the performance, but it gives you insight information on the Java VM. If you not using JROckit your could set the following options and use VisualVM to view the Java your JRockit Mission Control to get more information out of your Java VM. Data-sourcesUsing the correct settings for all the connections to your database is essential. The SOA Suite is using  a lot of data-sources, while the OSB is using one data-source for the reports. Measure your connections to the database while running a load test on your environment. Based on these measurements you can predict the correct configuration.The following table shows an example of the settings your should tune. Note that the values are based on my measurements on a particular system. These settings should be applied via the Weblogic Console or through Weblogic scripting. DatasourcesEDNDataSourceEDNLocalTxDataSourcemds-owsmmds-soaOraSDPMDataSourceSOADataSourceSOALocalTxDataSource Hostdb-hostdb-hostdb-hostdb-hostdb-hostdb-hostdb-host Port1521152115211521152115211521 SIDorclorclorclorclorclorclorcl TypeXAnon-XAnon-XAnon-XAnon-XAXAnon-XA Initial Capacity:1111122 Maximum Capacity:10101010102020 Capacity Increment:2222222 Statement Cache Size:10101010101010 Test Connections On ReserveTRUETRUETRUETRUETRUETRUETRUE Test Frequency:180180180180180180180 Seconds to Trust an Idle Pool Connection:30303030303030 Shrink Frequency:300300300300300300300 Connection Creation Retry Frequency:30303030303030 Inactive Connection Timeout:30303030303030 Maximum Waiting for Connection:2147483647214748364721474836472147483647214748364721474836472147483647 Connection Reserve Timeout: 30303030303030 Statement Timeout:-1-1-1-1-1-1-1 Enviroment Set XA Transaction Timeout:TRUETRUE XA Transaction Timeout:00 XA Retry Duration:300300 XA Retry Interval:6060 ThreadsDo not touch the default threading model of Weblogic, unless you know[...]

OSB using BLOB data with DBAdapter results in ora-2049


When you want to poll data in the OSB, you will use the DBAdapter. In a 4-node production cluster we saw some strange errors periodically. These errors came up in the log file of any of the application servers:Caused By: servicebus:/WSDL/EmailService/BusinessService/WijzigEmailStatus/wijzigStatus [ wijzigStatus_ptt::wijzigStatus(InputParameters,OutputParameters) ] - WSIF JCA Execute of operation 'wijzigStatus' failed due to: Stored procedure invocation error. Error while trying to prepare and execute the "schema/package/procedure" API. An error occurred while preparing and executing the "schema/package/procedure" API. Cause: java.sql.SQLSyntaxErrorException: ORA-02049: timeout: distributed transaction waiting for lock ORA-06512: at "schema/package", line 113 ORA-06512: at line 1 ; nested exception is:         BINDING.JCA-11811 Stored procedure invocation error. Error while trying to prepare and execute the "schema/package/procedure" API. An error occurred while preparing and executing the "schema/package/procedure" API.  Cause: java.sql.SQLSyntaxErrorException: ORA-02049: timeout: distributed transaction waiting for lock ORA-06512: at "schema/package", line 113 ORA-06512: at line 1  The DBAdapter was polling data from database, this was a TopLink definition based on four tables. The ProxyService that was started an in the request pipeline the message was routed , to the bussiness service. While in the response pipeline the one of these four tables was updated.The issue is related not related in high traffic on the system. It is all about using the DBAdapter/Toplink poller mechanism. The adapter is polling data and one of the columns is a BLOB column.If data in this column is large, the DbAdapter will take some time to process this information to the service. While the set records are locked other services wants to update this data. This will result in the Oracle error.To resolve this issue, large (blob) data should be processed as a stream in OSB. This can easily be done by enabling the 'Content Streaming' option for this (polling) proxy service.Remarks from development on this article:The exception in question is just a transaction timeout. That can be avoided by shrinking MaxTransactionSize on inbound so that the transaction started by DbAdapter polling is shorter shrinking MaxRaiseSize on inbound so that any transactions started by OSB will be shorter increasing transaction timeout If the problem is that inbound polling is locking a row for a long time that another process is trying to lock, that could be because inbound has configured distributed polling, where the records are locked on select.  The default behaviour is to only lock records on update, which should be independent of the time it takes to process the BLOB.My remarks:Shrinking the MaxTransactionSize to 1, could solve the issue, but if you need to handle ten-thousand or more messages with large binary data, the whole polling process will be slow. I am using the MaxTransactionSize with value 10.References: DbAdapter bulk read improvement Oracle Service Bus: Proxy Service Message Handling  Oracle RDBMS 11g: Error Codes [...]

SOA 11g PS3/PS4: Significant Purging Performance Improvement


Create the following index in the *_soainfra schema to improve the purging significantly. And with significant I mean SIGNIFICANT in upper-case :-). We have loads of instances too purge, +100K. The purging first took more than one hour. After applying the index it took minutes...


SOA Suite 11g: AQ a tuning tip


When you use AQ to dequeue message to the SOA Suite, keep in mind the maximum number of connections to your database.

A 4 node OSB cluster the does the dequeue and sends the messages to a 4 node SOA11g Cluster could lead that the SOA11g server will get stucked.

The server can get overloaded in the following situation:
  • When there are a lot of messages in the queue, for example 8000+ messages.
  • You stopped the SOA11g for maintaince 
  • You disabled the AQ-Proxy service in OSB.
When you start the SOA11g environment, you will notice that alle servers and their services/processes are running normally. But...

The issue is when you want to enable the AQ-Proxy service in OSB. This will lead that all OSB servers in the cluster will dequeue the messages and sends them to SOA11g.  SOA11g is trying to process all the services, but will fail at the end.

This is because it reach the maximum number of session in the database. This is not shown in the log files. The SOA11g log file says that the database "SOALocalTxDataSource" is suspended. This is not the case if you look in the Weblogic console (!). While the database alert log file says it reach the maximum session to the database.

This overloading can be solved by setting the maximum connections to the database for the datasources "SOALocalTxDataSource" and "SOADataSource".

In our case we have a 4-node cluster. This results in:
    ("SOALocalTxDataSource" -> Maximum Capacity * 4)
    ("SOADataSource" -> Maximum Capacity * 4)
If max capacity is 40, the total connections reach 320 sessions (!), when you enable the proxy service on OSB.

Make sure you can create enough sessions to your database.

Purging SOA Suite 11g, the Extreme Edition


Did you ever wondered how purging is working in SOA 11g? I tried to look into the scripts from PS1 until PS4. From PS3 they redesigned the concept and focussed on scheduling and parallel execution. My experiences are mixed; parallel execution is nice, but adding some indexes solves our performance issue with purging of 400K+ instances. A document is made to describe what the best purging approach is.It does not describe my approach :-). I think the PL/SQL packages are to complicated. This is due to the fact that the data model is not documented and does not contain (optional) foreign-keys. This makes the data model not efficient to understand if you have issues with it.We discovered, in our production environment, that not all instances where purged. It was not possible to force the purge script to delete all the instances. Discussing with Oracle, results that purging can be done, via Enterprise Manager (EM). With EM you can delete them..., only one-by-one. If you have 40K+ of instances, this is not the way to go.So, I dived into the various purging scripts from PS4 and try to understand them. I want a script that deletes ALL the instances older than X days. And yes, deleting all the instances, I could loose messages. So this is my current result; an SQLPlus script that can be executed at any time (scheduled with crontab or windows scheduler).spool soa11g_purge_script.logset echo onset verify onset timing on-- delete all instances older then 3 daysdefine days=3alter session set current_schema=kim1_soainfra;alter session set nls_date_format='yyyymmdd hh24mi';variable cur_datetime varchar2(13)exec select (sysdate - &days) into :cur_datetime from dual;prompt Purging data until:print cur_datetime---- Purge the MEDIATOR data-- delete from mediator_case_instance a where exists (select from mediator_instance b where = a.instance_id and b.created_time < to_date(:cur_datetime, 'yyyymmdd hh24mi'));delete from mediator_audit_document a where exists (select from mediator_instance b where = a.instance_id and b.created_time < to_date(:cur_datetime, 'yyyymmdd hh24mi'));delete from mediator_callback a where exists (select from mediator_instance b where = a.instance_id and b.created_time < to_date(:cur_datetime, 'yyyymmdd hh24mi'));delete from mediator_group_status a where exists (select from mediator_instance b where b.group_id = a.group_id and b.created_time < to_date(:cur_datetime, 'yyyymmdd hh24mi'));delete from mediator_payload where modify_date < to_date(:cur_datetime, 'yyyymmdd hh24mi'); delete from mediator_deferred_message where creation_date < to_date(:cur_datetime, 'yyyymmdd hh24mi'); delete from mediator_resequencer_message where creation_date < to_date(:cur_datetime, 'yyyymmdd hh24mi'); delete from mediator_case_detail where created_time < to_date(:cur_datetime, 'yyyymmdd hh24mi'); delete from mediator_correlation where creation_date < to_date(:cur_datetime, 'yyyymmdd hh24mi'); delete from mediator_instance where created_time < to_date(:cur_datetime, 'yyyymmdd hh24mi'); commit;---- Purge the BPEL data-- delete from headers_properties where modify_date < to_date(:cur_datetime, 'yyyymmdd hh24mi'); delete from ag_instance where creation_date < to_date(:cur_datetime, 'yyyymmdd hh24mi'); delete from audit_counter where ci_partition_[...]

Working with SSL certificates on Oracle Enterprise Gateway or OWSM


Working with SSL certificates is not common sense. Applying a new certificate on a server for outgoing messages is not a walk in the park. Do not think installing a client certificate on top of SSL configuration is easy.In this article I want to share you some useful statements that for creating SSL connection on the Oracle Application Server, this is the Weblogic Server. But can also be applied on others app servers.To create an outgoing SSL connection, you need the public certificate from the external party you want to connect. This can be obtained via your browser; enter the https://servername:443/query/end/point?WSDL in your browser.Click on the icon in the location bar to show the certificate. Now you can export this public certificate to a ".cer" file. This file you need to apply on your application server.On the application server, in my example a Java Application Server; such as Weblogic, the public certificate must be loaded into the "keystore". The keystore is a file that contains all the public certificates which you application server is using to connect to secure sites. To control your keystore, use the following statements;Notes: By default in java, the default keystore is named 'cacerts' and has the default password 'changeit'The cacerts file is located in your $JAVA_HOME/jre/lib/security directory. Make a copy of your cacerts file before making any changes.List all the public certificateskeytool -list -v -keystore ./cacerts -storepass changeitkeytool -list -v -alias -keystore ./cacerts -storepass changeitDelete a public certificate based on an alias:keytool -delete -alias -keystore ./cacerts -storepass changeitAdd a public certificate with an alias:keytool -import -alias -keystore ./cacerts -file public_thawte_com.cer -storepass changeitAdd a public certificate with an alias and trust all the CA's:keytool -import -v -trustcacerts -alias staatdernederlandenrootca -file staatdernederlandenrootca.crt -keystore ./cacerts -storepass changeitExport a public certificate from the keystore:keytool -export -alias -keystore ./cacerts -file public_thawte_com.cer -storepass changeitCertificates come in different formats; p7b, p12, pem and cer. Each format has its own purpose. In general, a p7b file contains only the public certificate. The p12 contains the public certificate and the private key. The p12 file is used to for exchanging client certificates.To convert file formats for your keystore, you should use OpenSSL. This is by default the best tool, available on any platform. The tool is command line based, but there is also various  GUI tools available. Converting a p7b file to p12 format:openssl pkcs7 -print_certs -in > the file: remove any chain certificates:-----BEGIN CERTIFICATE-----d2bmW4werweNSIdV7qXEntvJILc519AHJJDePHrT9SjavljmK0lTRfM1awv5n4355HUsvvi3c0AEsjypd3bIcm4fXY6IF34cuRVpb++fzASVO8Bwl3LOE9PqnHr9zIRtlv....MIIsE2zCCA8OgAwIBAgIEATFjtjANBgkqhkiG9w0BAQUFADBZMQswCQYDVQQGwwJORmh3IrH60ylbuqmeGRnJM8qYBHzVyOWAT2ruVhNKMcXD+TnUEU2QZDfmcnNKOIM-----END CERTIFICATE----openssl pkcs12 -export -in -inkey -out -name PEM format in to DER format:openssl x509 -in -inform PEM -out -outform DERAfter you have created you[...]