Wednesday, May 27, 2015

Erik Wahl Keynote - Collaborate 2015 in Las Vegas

Well known graffiti artist and business strategist Erik Wahl gave an outstanding performance during the opening keynote for Collaborate 2015 in Las Vegas. Having a creative mind, he encourages his audience to “break free from business as usual.” The talented artist provided an interactive performance where he spoke about the failure that led him to pursue his passion, and why creativity must be implemented in every aspect of what we do in order to succeed.

He began the keynote with a spectacular performance to U2’s “Beautiful Day”. As Wahl painted, we began to see a face, then glasses, and soon after we made the connection that it was a portrait of Bono. While the song continued and video played at the back of the stage, he continued to put the finishing touches on the painting. Turning to the crowd he began by asking, by a show of hands, how many people in the room could draw. As you’d can expect, in a room full of technical conference attendees, very few raised their hands. He explained why most adults do not see themselves as creative, and why it is necessary to think outside the box when it comes to strategy. He spoke about how all preschoolers can draw with confidence. They want to show you, they have passion, and they have pride in their work. As he said they are “dying to show you their creative energy.” But passion dries up at a young age, as we start favoring analytical and professional interests.

  “All children are artists. The problem is how to remain an artist once he grows up.”

Next Erik spoke about fear. He selected a member of the audience to play Fear Factor. He gave the volunteer an envelope. Wahl gave him two options: perform the instructions or pass the envelope on to one other person to perform the instructions. He chose to accept the challenge. When the volunteer opened the envelope the instructions read that the Bono painting was his to keep. Most people would have passed the challenge on, but as he demonstrated, sometimes risks are worth the reward. Wahl described fear as the acronym False Evidence Appearing Real. Fear is what cripples performance and hinders future progress. Wahl encouraged the audience to take a step away from our comfort zone and look at the future as a blank canvas. It is not always necessary to look at things in an analytical or practiced way. What really matters are the things that cannot be measured or justified. Relationships, passion, and ambition are examples of the driving forces for innovation and creativity of future organizations.

"If you are not afraid, you are not going strong enough." -Erik Wahl

During his second painting, Wahl created a portrait of Steve Jobs. He mentioned one of Jobs’ famous quotes, “Stay hungry, stay foolish.” He admitted to us, that as a child he was told he was messy and didn’t pay attention to detail. Listening to the critics, he gave up drawing and creativity for more and more “adult” activities. He began to memorize and regurgitate rehearsed responses in hopes of fitting into the standard model of excellence. He explained that as we approach adulthood, we are all taught to be increasingly analytical. While these skills are still necessary, they may no longer be sufficient in the competitive and inventive world we live in. After the disappointment of a failed business, Wahl was driven to create art at 30 years old. With his world turned upside down, he had lost what had defined him. He had, like many of us, tied his direct worth to his net worth, and once one of them was gone so was the other. He was encouraged to step away, go travel, and do some soul-searching. To him this meant to begin painting. He immediately felt the creativity unlocking the right side of his brain again. Additionally, he started to understand the best practices of business that he had struggled to understand before. Engaging both right and left sides allows the brain to function fully, using all its ability. Creativity is a practiced and disciplined skill that is extremely useful when being involved with teams, users groups, and other communities. Erik stated that many people say, “I don’t have a creative bone in my body.” They feel as though you are a creative person or you are analytical, but never both. Wahl explains that this is not the case. While society encourages individuals to become increasingly analytical, Wahl is encouraging people to use the right side of their brain and explore their creativity. Deep down we all have things that ignite passion and creativity in us; we have inspiration all around us. Our world is becoming increasingly competitive, with new ideas emerging which break outside of the comfort zone. Being innovative drives customer loyalty; with creativity comes unconventional solutions; with failure comes an opportunity to grow. Wahl motivated the audience to be confident, to be courageous, and to face the fear of failure.  He concluded with a final portrait of one of the most creative minds that ever lived, Albert Einstein. In his inspiring performance he reached out to each and every one of us to change the way we approach business, and to expand out of our comfort zone. With his energetic style and beautiful works of art, he captivated and motivated the audience to live life a little more creatively.




Tuesday, May 26, 2015

The low-cost approach to monitoring Oracle products and environments

There are many capable monitoring tools out there today on the market that provide true end-to-end monitoring and management of your Oracle infrastructure. The first product that comes to mind is Oracle Enterprise Manager 12c Cloud Control. It is definitely a must have for any Oracle shop and we highly recommend it.

Unfortunately, for the small or midsized company, the total cost of ownership of OEM may be prohibitive.

At Raastech, we've implemented a series of scripts at numerous customers that perform a reasonably adequate job in monitoring and managing the more important areas of Oracle WebLogic Server, Oracle SOA Suite, and the Oracle Database.
Monitoring 
Infrastructure monitoring and performance reports. 
Alerting 
Email alerts upon trigger of critical events occur or if predefined thresholds are exceeded. 
Management 
Full and incremental backups of middleware and database, log rotation, archiving, and purging.
Take a look at some of the emails that we send out. If you're looking for an extremely low-cost and basic solution for your Oracle environments, reach out to us and we can help.


Oracle WebLogic Server Status Report



Weekly Oracle Database Report



Oracle SOA Suite Component Instance Performance Report



RMAN Backup Report




 

Tuesday, May 12, 2015

BEA-382515: Callout to Java resulted in null exception

Problem:

Getting the following error testing an OSB 11g service in the OSB Console:
BEA-382515: Callout to java method "public static java.lang.String com.amway.common.XMLJSONConverter.convertXML2JSON(java.lang.String) throws java.lang.Exception" resulted in exception: null
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at stages.transform.runtime.JavaCalloutRuntimeStep$1.run(JavaCalloutRuntimeStep.java:183)

Analysis:

The osb_server1.out file also reports this error:
<May 12, 2015 4:55:32 PM EDT> <Error> <OSB Transform> <BEA-382515> <Callout to java method "public static java.lang.String com.amway.common.XMLJSONConverter.convertXML2JSON(java.lang.String) throws java.lang.Exception" resulted in exception: null
java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at stages.transform.runtime.JavaCalloutRuntimeStep$1.run(JavaCalloutRuntimeStep.java:183)
        Truncated. see log file for complete stacktrace
Caused By: java.lang.NoClassDefFoundError: nu/xom/Serializer
        at com.amway.common.XMLJSONConverter.convertXML2JSON(XMLJSONConverter.java:42)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        Truncated. see log file for complete stacktrace
>
As you can see, the class is not found for nu/xom/Serializer, which is a part of the xom.jar file.


Solution:

1. Copy xom-1.2.6.jar to the following folder:
$DOMAIN_HOME/soa_domain/lib/xom-1.2.6.jar
2. Bounce both osb_server1


Applicable Versions:
  • Oracle WebLogic Server 11g
  • Oracle Service Bus (OSB) 11g 

 

Monday, May 4, 2015

Version Uncontrolled @ COLLABORATE15

With another COLLABORATE complete and I have been back in the office I have taken the time to commit a lot to memory and added many tasks to research further into topics related to many of the presentations I attended. Over all I would have to say the the conference was successful from my perspective. I put more focus on the database, since even though I have skills in developing PL/SQL and doing simple database setups, my knowledge in database operations is not where I would like it. One of the key things to realize is that in most cases applications are using databases. Products under the Fusion Middleware label are no different. Moving forward I am looking to expand more into database performance as a way to improve Middleware performance focused around SOA Suite and OSB. While I was learning I also had a chance to share some of my experiences, and meet many people.

I would like to thank everyone who came to my presentation. "Version Uncontrolled ..." took some time to focus on a few version control technologies and concepts, and followed with workflows. The various workflows can be found on our company SlideShare or on the Raastech Library. In the future, I hope to be given the privilege of presenting again. I would like to thank all of the IOUG Directors for their time and effort in on this COLLABORATE as well as all the other efforts we don't see going on.


Friday, May 1, 2015

BEA-149205 Failed to initialize the application "Service Bus Framework Starter Application" due to OSB system user authentication failed

Problem:

Getting the following error when starting up the AdminServer on Oracle WebLogic Server 12c with Oracle Service Bus 12c installed:
####<Apr 20, 2015 11:44:21 PM EDT> <Error> <Deployer> <soahost1> <AdminServer> <[STANDBY] ExecuteThread: '5' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <236cd04a-cdd4-4c4c-bf1b-f4ca7b2fe3fe-00000004> <1429587861652> <BEA-149205> <Failed to initialize the application "Service Bus Framework Starter Application" due to error java.lang.RuntimeException: OSB system user authentication failed
java.lang.RuntimeException: OSB system user authentication failed
        at com.bea.wli.sb.security.SecurityModuleImpl.runAlsbPrivilegedAction(SecurityModuleImpl.java:345)
        at com.bea.wli.sb.security.SecurityModuleImpl.jndiBind(SecurityModuleImpl.java:415)
        at com.bea.alsb.platform.weblogic.WlsJNDIService.bind(WlsJNDIService.java:46)
        at com.bea.wli.sb.init.FrameworkStarter$ALSBClusterTimerJndiAccess.bindClusterTimer(FrameworkStarter.java:362)
        at com.bea.wli.timer.ClusterTimerService.initialize(ClusterTimerService.java:87)
        at com.bea.wli.sb.init.FrameworkStarter._preStart(FrameworkStarter.java:215)
        at com.bea.wli.sb.init.FrameworkStarter.access$000(FrameworkStarter.java:75)
        at com.bea.wli.sb.init.FrameworkStarter$1.run(FrameworkStarter.java:94)
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:146)
        at weblogic.security.Security.runAs(Security.java:61)


Solution:

1. Login to the WebLogic Server Administration Console

2. Navigate to Security Realms > myrealm > Users and Groups.

3. Click on "New" to create a new user using the following:
NAME: alsb-system-user 
PASSWORD: (any password) 
DESCRIPTION: The ALSB system user is a built-in system account which belongs to the ALSBSystem role. As such it has access to ALSBs internal artifacts. The password for this account is automatically changed when the admin server boots to prevent direct access to this account.
4. Save and restart the AdminServer.



Applicable Versions:
  • Oracle WebLogic Server 12c (12.1.3)
  • Oracle Service Bus (OSB) 12c 

 

Wednesday, April 22, 2015

The WebLogic Server 12c .PID file

One of the managed servers (wls_soa1) on our Oracle WebLogic Server 12c installation was showing a state of STARTING, but there was no process running on the Linux server:
 

Under the $DOMAIN_HOME/servers/wls_soa1/data/nodemanager folder, you will find multiple files:
oracle@soahost1:/u01/share/oracle/middleware/config/domains/soa_domain/servers/wls_soa1/data/nodemanager> ls -l
total 40 
-rw-r----- 1 oracle oinstall 174 Apr 14 22:14 boot.properties 
-rw-r----- 1 oracle oinstall 427 Apr 14 22:14 startup.properties 
-rw-r--r-- 1 oracle oinstall   6 Apr 22 14:41 wls_soa1.pid 
-rw-r----- 1 oracle oinstall  13 Apr 22 14:43 wls_soa1.state 
-rw-r----- 1 oracle oinstall  31 Mar 29 12:07 wls_soa1.url

The content of the .pid file will show RUNNING:
oracle@soahost1:/u01/share/oracle/middleware/config/domains/soa_domain/servers/wls_soa1/data/nodemanager> cat wls_soa1.state 
STARTING:N:N

Delete this .pid file:
oracle@soahost1:/u01/share/oracle/middleware/config/domains/soa_domain/servers/wls_soa1/data/nodemanager> rm wls_soa1.state

When you refresh the page on the WebLogic Admin Console, it will default to SHUTDOWN now:

Only after the console refresh will a new .pid file be created with the SHUTDOWN state:
oracle@soahost1:/u01/share/oracle/middleware/config/domains/soa_domain/servers/wls_soa1/data/nodemanager> cat wls_soa1.state 
SHUTDOWN:N:N



Applicable Versions:
  • Oracle WebLogic Server 12c (12.1.3) 

 

Friday, April 10, 2015

Incredibly Useful SQL Queries for Oracle SOA Suite 11g

These are the collection of the incredibly useful SQL queries for Oracle SOA Suite 11g. Parameters highlighted are customizable.

All SQL should should be executed as the <PREFIX>_SOAINFRA user.



Component avg/min/max performance

SELECT 'Mediator' type,
       SUBSTR(component_name, 1, INSTR(component_name,'/')-1) partition,
       SUBSTR(component_name, INSTR(component_name,'/')+1, INSTR(component_name,'!')-INSTR(component_name,'/')-1) component,
       DECODE(component_state, '0', 'Completed', '16', 'Stale', '2', 'Faulted', '4', 'Recovery Needed', '8', 'Running') state,
       TO_CHAR(AVG((TO_NUMBER(SUBSTR(TO_CHAR(updated_time-created_time),12,2))*60*60) + (TO_NUMBER(SUBSTR(TO_CHAR(updated_time-created_time),15,2))*60) + TO_NUMBER(SUBSTR(TO_CHAR(updated_time-created_time),18,4))),'999990.000') Avg,
       TO_CHAR(MIN((TO_NUMBER(SUBSTR(TO_CHAR(updated_time-created_time),12,2))*60*60) + (TO_NUMBER(SUBSTR(TO_CHAR(updated_time-created_time),15,2))*60) + TO_NUMBER(SUBSTR(TO_CHAR(updated_time-created_time),18,4))),'999990.000') Min,
       TO_CHAR(MAX((TO_NUMBER(SUBSTR(TO_CHAR(updated_time-created_time),12,2))*60*60) + (TO_NUMBER(SUBSTR(TO_CHAR(updated_time-created_time),15,2))*60) + TO_NUMBER(SUBSTR(TO_CHAR(updated_time-created_time),18,4))),'999990.000') Max,
       COUNT(1) count
FROM   mediator_instance
WHERE  created_time >= TO_DATE('2015-04-22 00:00', 'YYYY-MM-DD HH24:MI')
--AND    created_time <= TO_DATE('2013-07-03 23:59', 'YYYY-MM-DD HH24:MI')
GROUP BY component_name, component_state
UNION
SELECT 'BPEL' type,
       domain_name partition,
       component_name component,
       DECODE(state,'5','Completed','9','Stale','10','Faulted') State,
       TO_CHAR(AVG((TO_NUMBER(SUBSTR(TO_CHAR(MODIFY_DATE-CREATION_DATE),12,2))*60*60) + (TO_NUMBER(SUBSTR(TO_CHAR(MODIFY_DATE-CREATION_DATE),15,2))*60) + TO_NUMBER(SUBSTR(TO_CHAR(MODIFY_DATE-CREATION_DATE),18,4))),'999990.000') Avg,
       TO_CHAR(MIN((TO_NUMBER(SUBSTR(TO_CHAR(MODIFY_DATE-CREATION_DATE),12,2))*60*60) + (TO_NUMBER(SUBSTR(TO_CHAR(MODIFY_DATE-CREATION_DATE),15,2))*60) + TO_NUMBER(SUBSTR(TO_CHAR(MODIFY_DATE-CREATION_DATE),18,4))),'999990.000') Min,
       TO_CHAR(MAX((TO_NUMBER(SUBSTR(TO_CHAR(MODIFY_DATE-CREATION_DATE),12,2))*60*60) + (TO_NUMBER(SUBSTR(TO_CHAR(MODIFY_DATE-CREATION_DATE),15,2))*60) + TO_NUMBER(SUBSTR(TO_CHAR(MODIFY_DATE-CREATION_DATE),18,4))),'999990.000') Max,
       COUNT(1) count
FROM   cube_instance
WHERE  creation_date >= TO_DATE('2015-04-22 00:00', 'YYYY-MM-DD HH24:MI')
--AND    creation_date <= TO_DATE('2013-07-03 23:59', 'YYYY-MM-DD HH24:MI')
GROUP BY domain_name, component_name, state
ORDER BY 2, 3















Mediator avg/min/max performance

SELECT SUBSTR(component_name, 1, INSTR(component_name,'/')-1) partition,
       SUBSTR(component_name, INSTR(component_name,'/')+1, INSTR(component_name,'!')-INSTR(component_name,'/')-1) component,
       source_action_name action,
       DECODE(component_state, '0', 'Completed', '16', 'Stale', '2', 'Faulted', '4', 'Recovery Needed', '8', 'Running') state,
       TO_CHAR(AVG((TO_NUMBER(SUBSTR(TO_CHAR(updated_time-created_time),12,2))*60*60) + (TO_NUMBER(SUBSTR(TO_CHAR(updated_time-created_time),15,2))*60) + TO_NUMBER(SUBSTR(TO_CHAR(updated_time-created_time),18,4))),'999990.000') Avg,
       TO_CHAR(MIN((TO_NUMBER(SUBSTR(TO_CHAR(updated_time-created_time),12,2))*60*60) + (TO_NUMBER(SUBSTR(TO_CHAR(updated_time-created_time),15,2))*60) + TO_NUMBER(SUBSTR(TO_CHAR(updated_time-created_time),18,4))),'999990.000') Min,
       TO_CHAR(MAX((TO_NUMBER(SUBSTR(TO_CHAR(updated_time-created_time),12,2))*60*60) + (TO_NUMBER(SUBSTR(TO_CHAR(updated_time-created_time),15,2))*60) + TO_NUMBER(SUBSTR(TO_CHAR(updated_time-created_time),18,4))),'999990.000') Max,
       COUNT(1) count
FROM   mediator_instance
-- Last three hours
WHERE  created_time >= sysdate - 0.125
--AND    COMPONENT_NAME LIKE '%%'
GROUP BY component_name, source_action_name, component_state
ORDER BY component_name, source_action_name, component_state












BPEL avg/min/max performance

SELECT domain_name,
       component_name,
       DECODE(state,'5','Complete','9','Stale','10','Faulted') State,
       TO_CHAR(AVG((TO_NUMBER(SUBSTR(TO_CHAR(MODIFY_DATE-CREATION_DATE),12,2))*60*60) + (TO_NUMBER(SUBSTR(TO_CHAR(MODIFY_DATE-CREATION_DATE),15,2))*60) + TO_NUMBER(SUBSTR(TO_CHAR(MODIFY_DATE-CREATION_DATE),18,4))),'999990.000') Avg,
       TO_CHAR(MIN((TO_NUMBER(SUBSTR(TO_CHAR(MODIFY_DATE-CREATION_DATE),12,2))*60*60) + (TO_NUMBER(SUBSTR(TO_CHAR(MODIFY_DATE-CREATION_DATE),15,2))*60) + TO_NUMBER(SUBSTR(TO_CHAR(MODIFY_DATE-CREATION_DATE),18,4))),'999990.000') Min,
       TO_CHAR(MAX((TO_NUMBER(SUBSTR(TO_CHAR(MODIFY_DATE-CREATION_DATE),12,2))*60*60) + (TO_NUMBER(SUBSTR(TO_CHAR(MODIFY_DATE-CREATION_DATE),15,2))*60) + TO_NUMBER(SUBSTR(TO_CHAR(MODIFY_DATE-CREATION_DATE),18,4))),'999990.000') Max,
       COUNT(1) count
FROM   cube_instance
-- Last 3 hours
WHERE  CREATION_DATE >= sysdate - 0.125
--AND    COMPONENT_NAME LIKE '%%'
--AND    COMPOSITE_NAME LIKE '%%'
GROUP BY domain_name, component_name, state
ORDER BY component_name, state



Composite state count

SELECT SUBSTR(composite_dn, 1, INSTR(composite_dn,'/')-1) partition,
       SUBSTR(composite_dn, INSTR(composite_dn,'/')+1, INSTR(composite_dn,'!')-INSTR(composite_dn,'/')-1) component,
       DECODE(state,'1','Complete','0','Running','3','Faulted','32','Unknown','5','Recovery Needed','7','Recovery Needed','64','Stale') State,
       count(1) Count
FROM   composite_instance 
WHERE  composite_dn LIKE '%%'
GROUP BY SUBSTR(composite_dn, 1, INSTR(composite_dn,'/')-1),SUBSTR(composite_dn, INSTR(composite_dn,'/')+1, INSTR(composite_dn,'!')-INSTR(composite_dn,'/')-1),state
ORDER BY SUBSTR(composite_dn, 1, INSTR(composite_dn,'/')-1),SUBSTR(composite_dn, INSTR(composite_dn,'/')+1, INSTR(composite_dn,'!')-INSTR(composite_dn,'/')-1),state



Composite instances and state

SELECT id Instance,
       SUBSTR(composite_dn, 1, INSTR(composite_dn,'/')-1) partition,
       SUBSTR(composite_dn, INSTR(composite_dn,'/')+1, INSTR(composite_dn,'!')-INSTR(composite_dn,'/')-1) component,
       DECODE(state,'1','Complete','0','Running','3','Faulted','32','Unknown','5','Recovery Needed','7','Recovery Needed','64','Stale') State
FROM   composite_instance 
WHERE  composite_dn LIKE '%%'
--AND    state = 0 -- 0 = Running 1 = Completed 3 = Faulted 5&7 = Recovery Needed 32 = Unknown 64 = Stale
ORDER BY SUBSTR(composite_dn, 1, INSTR(composite_dn,'/')-1),SUBSTR(composite_dn, INSTR(composite_dn,'/')+1, INSTR(composite_dn,'!')-INSTR(composite_dn,'/')-1), state



Mediator state counts

SELECT n.partition,
       n.component,
       nvl(c.completed,0) Completed,
       nvl(f.failed,0) Failed,
       nvl(rn.Recovery_needed,0) Recovery_Needed,
       nvl(r.running,0) Running,
       nvl(s.stale,0) Stale,
       nvl(t.total,0) Total
FROM
(SELECT Unique SUBSTR(component_name, 1, INSTR(component_name,'/')-1) partition,
       SUBSTR(component_name, INSTR(component_name,'/')+1, INSTR(component_name,'!')-INSTR(component_name,'/')-1) component
 FROM mediator_instance) n,
(Select SUBSTR(component_name, 1, INSTR(component_name,'/')-1) partition,
       SUBSTR(component_name, INSTR(component_name,'/')+1, INSTR(component_name,'!')-INSTR(component_name,'/')-1) component,
       count(1) Completed
       from mediator_instance
       WHERE component_state = 0
       AND created_time >= sysdate - 0.125
       GROUP BY SUBSTR(component_name, 1, INSTR(component_name,'/')-1), SUBSTR(component_name, INSTR(component_name,'/')+1, INSTR(component_name,'!')-INSTR(component_name,'/')-1)) c ,
(Select SUBSTR(component_name, 1, INSTR(component_name,'/')-1) partition,
       SUBSTR(component_name, INSTR(component_name,'/')+1, INSTR(component_name,'!')-INSTR(component_name,'/')-1) component,
       count(1) Failed
       from mediator_instance
       WHERE component_state = 2
       AND created_time >= sysdate - 0.125
       GROUP BY SUBSTR(component_name, 1, INSTR(component_name,'/')-1), SUBSTR(component_name, INSTR(component_name,'/')+1, INSTR(component_name,'!')-INSTR(component_name,'/')-1)) f ,
(Select SUBSTR(component_name, 1, INSTR(component_name,'/')-1) partition,
       SUBSTR(component_name, INSTR(component_name,'/')+1, INSTR(component_name,'!')-INSTR(component_name,'/')-1) component,
       count(1) Recovery_Needed
       from mediator_instance
       WHERE component_state = 4
       AND created_time >= sysdate - 0.125
       GROUP BY SUBSTR(component_name, 1, INSTR(component_name,'/')-1), SUBSTR(component_name, INSTR(component_name,'/')+1, INSTR(component_name,'!')-INSTR(component_name,'/')-1)) rn ,
(Select SUBSTR(component_name, 1, INSTR(component_name,'/')-1) partition,
       SUBSTR(component_name, INSTR(component_name,'/')+1, INSTR(component_name,'!')-INSTR(component_name,'/')-1) component,
       count(1) Running
       from mediator_instance
       WHERE component_state = 8
       AND created_time >= sysdate - 0.125
       GROUP BY SUBSTR(component_name, 1, INSTR(component_name,'/')-1), SUBSTR(component_name, INSTR(component_name,'/')+1, INSTR(component_name,'!')-INSTR(component_name,'/')-1)) r ,
(Select SUBSTR(component_name, 1, INSTR(component_name,'/')-1) partition,
       SUBSTR(component_name, INSTR(component_name,'/')+1, INSTR(component_name,'!')-INSTR(component_name,'/')-1) component,
       count(1) Stale
       from mediator_instance
       WHERE component_state = 16
       AND created_time >= sysdate - 0.125
       GROUP BY SUBSTR(component_name, 1, INSTR(component_name,'/')-1), SUBSTR(component_name, INSTR(component_name,'/')+1, INSTR(component_name,'!')-INSTR(component_name,'/')-1)) s ,
(Select SUBSTR(component_name, 1, INSTR(component_name,'/')-1) partition,
       SUBSTR(component_name, INSTR(component_name,'/')+1, INSTR(component_name,'!')-INSTR(component_name,'/')-1) component,
       count(1) Total
       from mediator_instance
       WHERE created_time >= sysdate - 0.125
       GROUP BY SUBSTR(component_name, 1, INSTR(component_name,'/')-1), SUBSTR(component_name, INSTR(component_name,'/')+1, INSTR(component_name,'!')-INSTR(component_name,'/')-1)) t
where n.partition = c.partition(+)
AND   n.component = c.component(+)
AND   n.partition = f.partition(+)
AND   n.component = f.component(+)
AND   n.partition = rn.partition(+)
AND   n.component = rn.component(+)
AND   n.partition = r.partition(+)
AND   n.component = r.component(+)
AND   n.partition = s.partition(+)
AND   n.component = s.component(+)
AND   n.partition = t.partition(+)
AND   n.component = t.component(+)
Order by --failed desc,
         --completed desc,
         partition,
         component;



Faulted Mediator instances

SELECT composite_instance_id Instance_ID,
       SUBSTR(composite_dn, 1, INSTR(composite_dn,'/')-1) partition,
       SUBSTR(composite_dn, INSTR(composite_dn,'/')+1, INSTR(composite_dn,'!')-INSTR(composite_dn,'/')-1) component,
       error_message
FROM COMPOSITE_INSTANCE_FAULT where composite_instance_id in
(SELECT composite_instance_id 
 FROM mediator_instance 
 WHERE component_state = 2
 AND created_time >= sysdate - 0.125)



Faulted BPEL instances

 SELECT composite_instance_id Instance_ID,
       SUBSTR(composite_dn, 1, INSTR(composite_dn,'/')-1) partition,
       SUBSTR(composite_dn, INSTR(composite_dn,'/')+1, INSTR(composite_dn,'!')-INSTR(composite_dn,'/')-1) component,
       error_message
FROM COMPOSITE_INSTANCE_FAULT where composite_instance_id in
(SELECT cikey
 FROM cube_instance
 WHERE state = 10
 AND   creation_date >= sysdate - 0.125)



Mediator end-to-end Flows that took over 60 seconds

SELECT SUBSTR(component_name, 1, INSTR(component_name,'/')-1) partition,
       SUBSTR(component_name, INSTR(component_name,'/')+1, INSTR(component_name,'!')-INSTR(component_name,'/')-1) component,
       source_action_name action,
       DECODE(component_state, '0', 'Completed', '16', 'Stale', '2', 'Faulted', '4', 'Recovery Needed', '8', 'Running') state,
       COUNT(1) count,
       '60' seconds
FROM   mediator_instance
WHERE  TO_CHAR(composite_creation_date, 'YYYY-MM-DD HH24:MI') >= TO_CHAR(sysdate-0.125, 'YYYY-MM-DD HH24:MI')
AND    TO_CHAR(composite_creation_date, 'YYYY-MM-DD HH24:MI') <= TO_CHAR(sysdate, 'YYYY-MM-DD HH24:MI')
AND    parent_id IS NULL
AND    TO_NUMBER(TO_CHAR((TO_NUMBER(SUBSTR(TO_CHAR(updated_time-composite_creation_date),12,2))*60*60) + (TO_NUMBER(SUBSTR(TO_CHAR(updated_time-composite_creation_date),15,2))*60) + TO_NUMBER(SUBSTR(TO_CHAR(updated_time-composite_creation_date),18,4)),'999990.0')) > 60
GROUP BY component_name, source_action_name, component_state
ORDER BY component_name, source_action_name



Duration of time for Mediator reference calls

SELECT composite_instance_id,
       TO_CHAR(composite_creation_date, 'YYYY-MM-DD HH24:MI') creation_date,
       -- SUBSTR(component_name, 1, INSTR(component_name,'/')-1) partition,
       SUBSTR(component_name, INSTR(component_name,'/')+1, INSTR(component_name,'!')-INSTR(component_name,'/')-1) component,
       -- source_action_name action,
       DECODE(component_state, '0', 'Completed', '16', 'Stale', '2', 'Faulted', '4', 'Recovery Needed', '8', 'Running') state,
       TO_CHAR((TO_NUMBER(SUBSTR(TO_CHAR(updated_time-created_time),12,2))*60*60) + (TO_NUMBER(SUBSTR(TO_CHAR(updated_time-created_time),15,2))*60) + TO_NUMBER(SUBSTR(TO_CHAR(updated_time-created_time),18,4)),'999990.000') component_duration,
       TO_CHAR((TO_NUMBER(SUBSTR(TO_CHAR(updated_time-composite_creation_date),12,2))*60*60) + (TO_NUMBER(SUBSTR(TO_CHAR(updated_time-composite_creation_date),15,2))*60) + TO_NUMBER(SUBSTR(TO_CHAR(updated_time-composite_creation_date),18,4)),'999990.000') composite_duration
FROM   mediator_instance
WHERE  TO_CHAR(composite_creation_date, 'YYYY-MM-DD HH24:MI') >= '2015-04-22 09:00'
--AND    parent_id IS NULL
AND    component_name LIKE '%%'
AND    source_action_name = '%%'
ORDER BY creation_date, component_name, source_action_name, component_state





Applicable Versions:
  • Oracle SOA Suite 11g

 

Thursday, April 9, 2015

Setting up Oracle JRockit Mission Control (JRMC)

JRockit Mission Control allows the ability to monitor more specific metrics in your JVM. Though the versions here are now deprecated, this blog post nonetheless is intended to describe how to set it up easily.

1. Add the highlighted arguments to your EXTRA_JAVA_PROPERTIES in the $DOMAIN_HOME/bin/setDomainEnv.sh script by adding the highlighted text:
EXTRA_JAVA_PROPERTIES="${EXTRA_JAVA_PROPERTIES} -Xmanagement:port=7091,ssl=false,authenticate=false,autodiscovery=true"
2. Restart the managed server(s).

3. Download JRockit from here (second link is specific to 64-bit Windows):
http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-jrockit-2192437.html 
http://download.oracle.com/otn/bea/jrockit/jrockit-jdk1.6.0_45-R28.2.7-4.1.0-windows-x64.exe
4. On your local laptop, double-click on jrmc.exe located in the C:\Program Files\Java\jrockit-jdk1.6.0_45-R28.2.7-4.1.0\bin folder.

5. Right-click on "Connectors" and click on "New Connection":


6. Simply enter the HOST and click on "Finish" (note that the port 7091 is the default and is what was configured in the EXTRA_JAVA_PROPERTIES earlier):


7. Right-click on soahost1 (or whatever host you created) and select "Start Console" to start viewing some impressive real-time metrics:

Good luck!





Applicable Versions:
  • Oracle WebLogic Server 11g
  • Oracle JRockit JDK 1.6.0 

 

Friday, March 6, 2015

Versioning

For too long I didn't really think about versioning of code. More than just the use of SVN or Git, but of versioning code that is to be used in a production (i.e. 1.0, 1.5, 2.0, etc.). Versions of code were just numbers and didn't really matter much to me. Typing that last sentence just made me cringe a little. Something like this isn't uncommon for developers or many other professions. If you think back on different practices or malpractices that you used to employ. Looking back at code that you wrote a long time ago or even maybe a couple months ago wondering who could have possibly written this blather only to see your name all over the commit logs. As a method of correction we look outside of ourselves to find ways to better our craft.

One such inspiration I came upon was http://semver.org/. While I can't say how I was first drawn to it, I do believe it was some projects on http://github.com . The first time I encountered it I'm sure I clicked on the link out of pure curiosity, glossing over it. However later I finally took the time to really look over it and read everything in it. The contents themselves are not really revolutionary, but they are practical and useful when talking to others about how to version. It talks about a pragmatic way to version your code and still allowing latitudes for different company or organizational schemes. While I know that it has been used officially and unofficially, even before the Semantic Versioning concept was named it provides a useful tool for communicating what is meant by a particular version.

The only frustrating part comes when there are cases when you can't use it such as in the case I mentioned in this blog post. Semantic Versioning helps all involved assigning specific meanings to the numbers between each decimal point. It also, provides a common language to talk about versions and enforces best practices. Barring system limitations, I would highly suggest at least taking a look into it.


Tuesday, March 3, 2015

BEA-381304: SocketMuxer detected socket closure while waiting for a response

Problem:

We received the following error in the osb_server1.log file during a long running OSB service (the pipeline had a loop making hundreds of callouts, for each one writing to a JMS queue).
<Feb 27, 2015 1:04:18 AM EST> <Error> <WliSbTransports> <BEA-381304> <Exception in HttpOutboundMessageContext.RetrieveHttpResponseWork.run: java.io.IOException: SocketMuxer detected socket closure while waiting for a response
java.io.IOException: SocketMuxer detected socket closure while waiting for a response
        at weblogic.net.http.SocketClosedNotification.<clinit>(SocketClosedNotification.java:10)
        at weblogic.net.http.AsyncResponseHandler$MuxableSocketHTTPAsyncResponse.handleError(AsyncResponseHandler.java:396)
        at weblogic.net.http.AsyncResponseHandler$MuxableSocketHTTPAsyncResponse.hasException(AsyncResponseHandler.java:504)
        at weblogic.socket.SocketMuxer.deliverExceptionAndCleanup(SocketMuxer.java:827)
        at weblogic.socket.SocketMuxer.deliverHasException(SocketMuxer.java:767)
        Truncated. see log file for complete stacktrace

Solution:

Note that if the Proxy and the Business Service both use the same Work Manager then there is potential for starvation.

For example:

  • Request Pipeline makes a blocking callout, say to perform a database read.
  • Business Service response tries to allocate a thread from thread pool but all threads are blocked in the database read.
  • New requests arrive and contend with responses arriving for the available threads.
  • Similar problems can occur if the response pipeline blocks for some reason, maybe a database update for example.

The solution to this is to make sure that the Proxy and Business Service use different Work Managers so that they do not contend with each other for threads.


References:


Applicable Versions:
  • Oracle Service Bus (OSB) 11g 

 

Saturday, February 28, 2015

Version Bug in Oracle SOA Suite 11g


Problem


So while testing something before moving forward in the production environment we noticed something interesting. When attempting to run something with a version identifier (1.4.1) we saw the instances in the deployment for that version.



​However, we also saw the instances in the (1.4) version identifier. While we haven't verified yet that code in 1.4 ran, as a safety precaution we refrained from moving forward with 1.4.1. Instead we are updating it to 1.5.

At least for the older versions which for example (1.3) there is no back fill into this older version. So we know we can safely use minor version numbers still.


Solution

For now my only solution is to sadly stick to using only two versioning indicators (i.e., 1.0 1.5, etc.). Hopefully in future versions this will be fixed so that at least Semantic Versioning will work.


Affected Versions
  • Oracle SOA Suite 11g (11.1.1.5), and possibly other 11g versions



Tuesday, February 24, 2015

[WSM-02557] InvalidSecurity : error in processing the WS-Security security header in SOA Suite 12c

Problem:

When invoking a SOA composite deployed to Oracle SOA Suite 12c (12.1.3) via SoapUI and received the following error:
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
   <env:Header>
      <tracking:faultId xmlns:tracking="http://oracle.soa.tracking.core.TrackingProperty">7</tracking:faultId>
   </env:Header>
   <env:Body>
      <env:Fault xmlns:ns0="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
         <faultcode>ns0:InvalidSecurity</faultcode>
         <faultstring>InvalidSecurity : error in processing the WS-Security security header</faultstring>
         <faultactor/>
      </env:Fault>
   </env:Body>
</env:Envelope>
The soa_server1.out file shows the following error:
<Feb 23, 2015 7:26:52 PM EST> <Error> <oracle.wsm.resources.enforcement> <WSM-07620> <Agent cannot enforce policies due to either failure in retrieving polices or error in validations, detail= "WSM-02557 The documents required to configure the Oracle Web Services Manager runtime have not been retrieved from the Policy Manager application (wsm-pm), possibly because the application is not running or has not been deployed in the environment. The query "&(policysets:global/%)(@appliesTo~="SCA-SERVICE()")" is queued for later retrieval.
".><Feb 23, 2015 7:26:52 PM EST> <Error> <oracle.wsm.resources.enforcement> <WSM-07503> <Failure in Oracle WSM Agent processFault, category= security, function=agent.function.service, application=default, composite=getWeather, modelObj=getweather_client_ep, policy=null, policyVersion=null, assertionName=null.oracle.wsm.common.sdk.WSMException: GenericFault : generic error        at oracle.wsm.agent.WSMAgent.getPolRefPolMap(WSMAgent.java:1126)        at oracle.wsm.agent.WSMAgent.processCommon(WSMAgent.java:1178)        at oracle.wsm.agent.WSMAgent.processFault(WSMAgent.java:808)        at oracle.fabric.common.BindingSecurityInterceptor.processFault(BindingSecurityInterceptor.java:267)        at oracle.integration.platform.common.InterceptorChainImpl.processFault(InterceptorChainImpl.java:289)

Solution:

This is because WSM (Web Services Manager) is not up. This could be the case if WSM is deployed to a managed server separate from SOA.

1. Start the OWSM managed server (e.g., generally called 'wls_wsm1' or 'wls_server1').

Applicable Versions:
  • Oracle SOA Suite 12c (12.1.3) 

 

Saturday, February 14, 2015

Raastech @ Collaborate 15

COLLABORATE 15, the second largest Oracle conference in the world, is taking place April 12-16, 2015 at The Mandalay Bay Resort & Casino in Las Vegas. Click here for registration information.

Start planning your agenda and locate your favorite speakers using the Session Scheduler.

Myself and other colleagues from Raastech will be giving 3 presentations at the conference. We hope to see you there.




Session 217: Version Uncontrolled - How to Manage Your Version Control
Tue. April 14 | 3:15 PM - 4:15 PM | Room Banyan B

Are you constantly wondering what is in your production environment? Do you have any doubts about what code is running? Chances are that your version control software isn't the problem. No matter what system you're using there is the ideal and there is the practice. This session is one that will help you get on the right track. Topics covered include: the types of version control systems, merging and branching techniques, and methods to get a solid source control workflow into place. We will also talk about organization of version control and how that can help with enhancing confidence in your code base.



Session 467: What Every Client Should Do On Their Oracle SOA Projects
Wed. Apr. 15 | 9:15 - 10:15 am | Room Banyan C

Having provided advanced subject matter expertise to numerous customers for their integration projects, a common theme emerges; most forget to factor in some important elements into their integration design. These are often introduced later as the organization grows in its SOA maturity level, but then comes at considerable cost and effort.

Some recommendations are architectural in nature, such as implementing service level authentication and setting up high availability. Others are infrastructure related; performance tuning the infrastructure and setting up purging. Meanwhile, certain development considerations must be thought of ahead of time which includes establishing an error handling and message recovery framework, and identifying a few key integration design patterns to standardize on. Products discussed include Oracle SOA Suite, OSB, OWSM, and WebLogic Server.

This presentation shares with current and future users of Oracle SOA Suite a checklist of activities to consider prior to the initiation of the SOA project, saving considerable effort down the line. We conclude with a Q&A.



Session 468: Understanding and Developing Web Services - For DBAs and Developers
Wed. Apr. 15 | 4:00 - 5:00 pm | Room Banyan C

WSDL. XSD. SOAP. Namespaces. Port types. If these terms make little sense, this presentation is for you. By the end of this presentation, you will completely understand how to dissect and decipher a web service interface, understand key design patterns, and learn how to develop top-down and bottom-up web services in technologies such as Java and Oracle SOA Suite. Presented by Ahmed Aboulnaga (Oracle ACE) and Harold Dost (Oracle ACE Associate), this presentation is intended for developers and DBAs who want to know what it takes to design and develop web services.




Monday, February 2, 2015

Exporting Putty sessions

If you want to export your Putty sessions and settings in order to import it into another machine, simply type this command from the Command Prompt (single line):
regedit /e "%userprofile%\desktop\putty-registry.reg" HKEY_CURRENT_USER\Software\Simontatham
Simply transfer the exported file to the new machine and double-click on it to update the Windows Registry settings.


 

Sunday, January 4, 2015

Anybody else confused by Oracle WebCenter?


Let me be blunt. Oracle screwed up when it came up with the whole Oracle WebCenter idea. Oracle WebCenter Suite eventually became Oracle WebCenter with these interlocked products in some senseless jigsaw puzzle, as if they were interconnected or something.

Does this jigsaw puzzle make sense? Not to me!

It was initially touted as a user engagement platform. I'm not sure if it still is. But now WebCenter is comprised of 3 products.

Currently, the 3 primary products included in Oracle WebCenter are: WebCenter Portal, WebCenter Content, and WebCenter Sites. Each of these products has it's own set of features and functionality while still being under the WebCenter name. They are only related by name, though can be integrated together to provide more comprehensive functionality. (Technically, it can be integrated with so many other Oracle products as well.)


Oracle WebCenter Portal

Portlets, which are pluggable windows that are embedded into portals, are useful for users who require an initial dashboard into their numerous intranet applications.

Portals are mostly valuable in intranets, but also in extranets (think Yahoo! where you have access to all mail, financial, news, scores, weather all in a single page).

WebCenter Portal is intended to provide a central place to consume information and services distributed throughout your company's infrastructure. This helps simplify user productivity by providing them with a means to managing their tasks in a single place. Development is primarily is done with ADF and a number of reusable templates.

Oracle WebCenter Portal is not to be confused with Oracle Portal (old and discontinued), BEA WebLogic Portal (acquired from BEA and discontinued), Oracle Sun Portal (acquired from Sun and discontinued), or Oracle WebCenter Suite (the old name).

A screenshot of a portal created with Oracle WebCenter Portal

Some of the key strengths of WebCenter Portal:
  • Quickly create dynamic portals and websites - you can be up and running in 24 hours!
  • Easily expose data from WebCenter Content, which is a repository that hosts structured and unstructured data.
  • Supposedly incorporates the best features from the old Oracle, BEA, and Sun portals combined.


Oracle WebCenter Content

Oracle WebCenter Content provides ECM (Enterprise Content Management) functionality, allowing the storage and retrieval of structured and unstructured data and records management, combined with powerful search and accessibility features.

Formerly known as Oracle UCM (Universal Content Management) and originally acquired from Stellent, Oracle's WebCenter Content is a content management system. The extent of this product lies not simply in the managing of digital documents, but there are also features which allow for the tracking of related physical documents. It can act as a repository for your company's digital assets, create web friendly format for high resolution files and provide a central place for publishing digital assets. There is a supplementary product called WebCenter Imaging which allows for the capture of documents into WebCenter Content. It provides data capture from scanned documents and images, and markup on those documents.

Using Windows Explorer to access Oracle WebCenter Content documents

Some of the key strengths of WebCenter Content:
  • Incredibly powerful search capabilities.
  • Stores unstructured content of all types; documents, images, video, etc.
  • Mobile apps allow access through smartphones and tablets.
  • Desktop integration with Microsoft Office, Microsoft Outlook, and Windows Explorer.


Oracle WebCenter Sites

Business users can easily manage website content without the involvement of a developer, pulling data from any number of data sources.

WebCenter Sites is another acquisition, formerly called FatWire. WebCenter Sites is focused on the easy creation of websites for consumers using drag-and-drop functionality. Integration with WebCenter Content provides the ability to easily publish content that your company has accumulated; and websites can be easily optimized for mobile devices. WebCenter Sites Satellite Server (an additional license) can be used to establish a content delivery network (CDN) for your company.

Easily update website content with Oracle WebCenter Sites

Some of the key strengths of WebCenter Sites:
  • A web content management system designed for business users to easily add and update website content.
  • Mobile enable your website with no coding changes.
  • Provides features such as comments, ratings, reviews, polls, blogs, etc.
  • Segment-based and predictive targeting and analytics is provided.


Summary

The 3 products are unrelated no matter what Oracle says and the statement that "we are running WebCenter" doesn't make too much sense. I have no issues with any of the three WebCenter products. In fact, they are extremely powerful with WebCenter Content being the most mature of the group. My issue is purely with the naming and marketing.