Installing the Oracle OSB on Red Hat 6

Peter Lorenzen

Here is my experiences with installing OSB on Red Hat 6 (64-bit) using Java 7.

By the way you might also be interested in my post about Silent installation of the OSB on Red Hat 6.

First have a look at the documentation:
Oracle Fusion Middleware Download, Installation, and Configuration ReadMe
Oracle Fusion Middleware Installation Planning Guide
Oracle Fusion Middleware Installation Guide for Oracle Service Bus


Download the software

Please notice

  • Before using the direkt download links to you need to login in to the site and accept a License Agreement. It does not matter which product you choose.

Prepare the OS

I am using Red Hat 6 64-bit. Check the “System Requirements for UNIX Operating Systems”.
Also check “Special Startup Requirements for Linux x86 or Linux x86-64 Operating Systems” in the same document.

This should install the needed packages:

yum install binutils-2*.x86_64 -y
yum install compat-libcap1-1* -y
yum install compat-libstdc++-33*.i686 -y
yum install compat-libstdc++-33*.x86_64 -y
yum install gcc-4*.x86_64 -y
yum install gcc-c++-4*.x86_64 -y
yum install glibc-2*.x86_64 -y
yum install glibc-2*.i686 -y
yum install glibc-devel-2*.i686 -y
yum install libaio-0.*.x86_64 -y
yum install libaio-devel-0.*.x86_64 -y
yum install libgcc-4.*.x86_64 -y
yum install libstdc++-4.*.i686 -y
yum install libstdc++-4.*.x86_64 -y
yum install libstdc++-devel-4.*.x86_64 -y
yum install libXext.i686 -y
yum install libXtst.i686 -y
yum install sysstat-9.*.x86_64 -y
yum install redhat-lsb-4.*.x86_64 -y

Change the open file limits in /etc/security/limits.conf

sed -i '/.*End of file/d' /etc/security/limits.conf
echo "* soft nofile 16384" >> /etc/security/limits.conf
echo "* hard nofile 16384" >> /etc/security/limits.conf
echo "# End of file"  >> /etc/security/limits.conf
cat /etc/security/limits.conf

Change the kernel parameters that need changing. Often the default values are OK.
Normally I only change/add these two and this is really only needed if you use Coherence.

echo "net.core.rmem_max=4192608" >> /etc/sysctl.conf
echo "net.core.wmem_max=4192608" >> /etc/sysctl.conf
/sbin/sysctl -p

Create user, group and directories.

groupadd oinstall
useradd -g oinstall -G oinstall oracle
passwd oracle

mkdir -p /u01/app/oracle/product
mkdir -p /u01/tmp

chown -R oracle:oinstall /u01
chmod -R 750 /u01

Set the umask for the oracle user. If you don’t want to set it in the .bash_profile at least set it manually when installing the software as suggested by Oracle.

su - oracle
echo "umask 027" >> .bash_profile
cat .bash_profile

Enabling Unicode Support in the .bash_profile for the oracle user.

su - oracle
echo "export LANG=\"en_US.UTF-8\"" >> .bash_profile
cat .bash_profile

Install Java

Unzip and untar the downloaded file:

gunzip jdk-7u25-linux-x64.tar.gz
tar xvf jdk-7u25-linux-x64.tar
mv jdk1.7.0_25 /u01/app/oracle/product/.

After I install Java I always create a softlink to the installation directory and reference it everywhere. This makes it is easier later when you have to upgrade.

ln -s /u01/app/oracle/product/jdk1.7.0_25 /u01/app/oracle/product/java_current

Install the latest Java SE CPU patch

Check the Java SE Critical Patch Update (CPU) to see if you need to patch the Java you have installed.
The latest Java SE CPU is from June 2013. It patches update 21 and earlier. I use update 25 so there is no need to patch it.

Until now the Java SE CPU has had its own release schedule but from October it will follow the same schedule as the other Oracle products.

Install the WebLogic Server 10.3.6

Take care when downloading the wls1036_generic.jar file since some browsers will rename it to

I use Xming as X Server on Windows. “Xming” currently has a problem with Java 7. When you start the Oracle installer most things work, but under certain conditions you cannot make selections via mouse or keyboard. This stumped me a bit until Simon Haslam pointed out what was going on. Xming is based on Cygwin that currently has a bug. As Simon points out a workaround is to not set -multiwindow on. This works but is not a good solution since you sometime get a mashup of screens.

To get around the problem I temporary install Java 6 and use it during the installation.

/u01/app/oracle/product/java_current/bin/java -jar wls1036_generic.jar -log=wls_install.log is only needed if there is not enough tmp space.

Below I have ignored the screens where you can sign up for security updates etc.

Here my Java soft link is “ignored” so we have to fix this later.

The Java soft link was “ignored” so we have to fix this:

cd /u01/app/oracle/product/osb
grep -R jdk1.6.0_39 *
find . -type f -exec sed -i "s/\/u01\/app\/oracle\/product\/jdk1.6.0_39/\/u01\
/app\/oracle\/product\/java_current/g" {} \;

Install the latest WebLogic Server PSU patch

Oracle releases quarterly security updates. You can read more about CPU, SPU, PSU and BP patches here.

WebLogic 10.3.6 April 2013 PSU patch 16083651 (

Make sure all WebLogic servers are stopped and remove any previously applied Patch Set Update and associated overlay patches.

mkdir /u01/app/oracle/product/osb/utils/bsu/cache_dir
cp D33T.jar /u01/app/oracle/product/osb/utils/bsu/cache_dir/.
cp patch-catalog_19345.xml /u01/app/oracle/product/osb/utils/bsu/
ls -la /u01/app/oracle/product/osb/utils/bsu/cache_dir

Make sure that the patch-catalog_19345.xml is renamed to patch-catalog.xml!

cd /u01/app/oracle/product/osb/utils/bsu/
./ -prod_dir=/u01/app/oracle/product/osb/wlserver_10.3
 -patchlist=D33T -verbose -install

Verify that the patch is installed.

./ -prod_dir=/u01/app/oracle/product/osb/wlserver_10.3
 -status=applied -verbose -view

Alternative use.

. /u01/app/oracle/product/osb/wlserver_10.3/server/bin/
java weblogic.version

For example.

[oracle@wintermute ~]$ java weblogic.version

WebLogic Server PSU Patch for BUG16083651 Thu Mar 28 15:24:29 IST 2013
WebLogic Server  Tue Nov 15 08:52:36 PST 2011 1441050

Install the required WebLogic Server patches

To find out if there exists any patches that you should install check “Information Center: Oracle Service Bus (OSB) [ID 1293368.2]” on MOS and Known Issues for Oracle SOA Products and Oracle AIA Foundation Pack on OTN.

There currently are 4 required WebLogic patches.

13961904 (
13573621 (
14030073 (
14322089 (

# 13961904
cp UUSN.jar /u01/app/oracle/product/osb/utils/bsu/cache_dir/.
cp patch-catalog_18452.xml /u01/app/oracle/product/osb/utils/bsu/cache_dir/patch-catalog.xml

cd /u01/app/oracle/product/osb/utils/bsu/
./ -prod_dir=/u01/app/oracle/product/osb/wlserver_10.3 -patchlist=UUSN -verbose -install
# 13573621
cp USNC.jar /u01/app/oracle/product/osb/utils/bsu/cache_dir/.
cp patch-catalog_19427.xml /u01/app/oracle/product/osb/utils/bsu/cache_dir/patch-catalog.xml

cd /u01/app/oracle/product/osb/utils/bsu/
./ -prod_dir=/u01/app/oracle/product/osb/wlserver_10.3 -patchlist=USNC -verbose -install
# 14030073
cp WJ44.jar /u01/app/oracle/product/osb/utils/bsu/cache_dir/.
cp patch-catalog_18032.xml /u01/app/oracle/product/osb/utils/bsu/cache_dir/patch-catalog.xml

cd /u01/app/oracle/product/osb/utils/bsu/
./ -prod_dir=/u01/app/oracle/product/osb/wlserver_10.3 -patchlist=WJ44 -verbose -install
# 14322089
cp G86E.jar /u01/app/oracle/product/osb/utils/bsu/cache_dir/.
cp patch-catalog_18006.xml /u01/app/oracle/product/osb/utils/bsu/cache_dir/patch-catalog.xml

cd /u01/app/oracle/product/osb/utils/bsu/
./ -prod_dir=/u01/app/oracle/product/osb/wlserver_10.3 -patchlist=G86E -verbose -install

Verify that the patches are installed.

./ -prod_dir=/u01/app/oracle/product/osb/wlserver_10.3 -status=applied -verbose -view

Alternative use.

. /u01/app/oracle/product/osb/wlserver_10.3/server/bin/
java weblogic.version

For example.

[oracle@wintermute ~]$ java weblogic.version

WebLogic Server Temporary Patch for BUG14322089 Wed Jul 25 16:00:29 IST 2012
WebLogic Server Temporary Patch for BUG14030073 Tue Jul 31 11:44:25 IST 2012
WebLogic Server Temporary Patch for BUG13573621 Wed Apr 03 11:06:15 MDT 2013
WebLogic Server Temporary Patch for BUG13961904 Sat Oct 13 07:42:54 CDT 2012
WebLogic Server PSU Patch for BUG16083651 Thu Mar 28 15:24:29 IST 2013
WebLogic Server  Tue Nov 15 08:52:36 PST 2011 1441050

Install the OSB

cd /u01/software/ofm_osb_generic_11.
./runInstaller -jreLoc /u01/app/oracle/product/java_current/jre

Below I have ignored the screens where you can sign up for security updates etc.

If you press Save you will be prompted for a place to save a response file you can use for silent installation.

If you press Save you will be prompted for a place to store a file with information about the installation.

It contains this.

Oracle Service Bus 11g
  Directory Details
    Oracle Home Location: /u01/app/oracle/product/osb/Oracle_OSB1
    Middleware Home Location: /u01/app/oracle/product/osb
    WebLogic Server Home Location: /u01/app/oracle/product/osb/wlserver_10.3
  Disk Space
    Oracle Home Size: 250 MB
    Available: 165884 MB
    Oracle Service Bus Server

Patch the OSB

As already mentioned you should check “Information Center: Oracle Service Bus (OSB) [ID 1293368.2]” on MOS and Known Issues for Oracle SOA Products and Oracle AIA Foundation Pack on OTN to check if there exists any patches you must install.

Also make sure you check for SPU patches for the OSB. Currently there are no SPU and no bundle patches for this release.

As already covered there is a WebLogic Server PSU and 4 required WebLogic Server patches.

When you patch the OSB always remember to download and install the latest OPatch version from MOS.

Create database schemas via the RCU

You do not need a database for your OSB. It is only required if you want to use the OSB Reporting features or the OWSM. Talk to your developers to check if they are using Report actions or OWSM policies.

You can see how to deal with a couple of issues if you are not using a database here.

For this installation I will use a database.

First have a look at the documentation:
Oracle Fusion Middleware Repository Creation Utility User’s Guide

Also have a look at the RCU MOS FAQ: β€œOracle Fusion Middleware 11g Repository Creation Utility (RCU) – FAQ [ID 1304790.1]”

Check the database requirements.

SID != Service Name
RCU uses the Service Name when connecting to a database, not the SID. The SID and the Service Name can contain different values.
You can find the Service Name in the database via:

SQL> show parameter service_names

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
service_names                        string      xdb.egf

Which schema’s are required?
To figure out which schema’s are required have a look at the documentation.
The OSB is not mentioned but to support OSB Reporting you need to select the SOA Infrastructure component in the RCU.

You can create tablespaces via the RCU but I prefer to create them myself.
A database will often have a default tablespace called USERS. It often ends up being a mess with all kind of different objects that nobody really knows why are there πŸ™‚
You should create separate tablespaces and use them after the kind of data that goes in them: Object size, growth rate, object type (Tables, LOBs, etc.)

create smallfile tablespace OSB_REPO datafile'/u01/app/oracle/oradata/SOATST/osb_repo01.dbf'
 size 150m autoextend on next 100m maxsize 1g extent management local autoallocate;

Start the RCU
cd ofm_rcu_linux_11.

Configure the OSB

Use to create a domain. If you experience problems you can enable logging to a file. It is possible to set the log level etc.

The CONFIG_JVM_ARGS is set to speed things up if the system is low on entropy.

cd /u01/app/oracle/product/osb/Oracle_OSB1/common/bin

Below I have ignored the screens where you can sign up for security updates etc.

Do not select products you do not need.

I like to keep the domains away from the software installation.

In the past I used to not name the default administrator user weblogic on production servers. Just as an extra precaution so you know that you are logging on to a production server. I have never experienced problems with this. But a the UKOUG conference last year I was told by somebody that you can get in trouble with some of the IDM products if there is no weblogic user.

If you do not select any options on this page the configuration wizard will default create an AdminServer and a osb_server1 with an empty listen address and using port 7001 and 8011. No Machine is created. I like to change listen address, ports etc…

You can use the Summary View drop-down menu to inspect different details about the installation.

Homes overview

There are many homes:

  • Application Home – /u01/app/oracle/applications/osb
  • Domain Home – /u01/app/oracle/domains/osb
  • Middleware Home – /u01/app/oracle/product/osb
  • Oracle Common Home – /u01/app/oracle/product/osb/oracle_common
  • Oracle Home (OSB) – /u01/app/oracle/product/osb/Oracle_OSB1
  • WebLogic Server Home – /u01/app/oracle/product/osb/wlserver_10.3

For more information check the Oracle Fusion Middleware Installation Planning Guide.

Starting the servers

Start the Admin Server:

cd /u01/app/oracle/domains/osb

Waite till you see:

<Server started in RUNNING mode>

Now you should be able to access the consoles and the Fusion Middleware Control:

  • http://wintermute:7001/console
  • http://wintermute:7001/sbconsole
  • http://wintermute:7001/em

Start the Managed Server in another terminal:

cd /u01/app/oracle/domains/osb/bin
./ osb_server1

Input username and password when prompted.

When it reaches the Running state check that all the deployments has state Active.

Java parameters

You can set Java memory parameters in several ways. Here I use in /u01/app/oracle/domains/osb/bin.
I place the below just after all the comments in the top of the file:

Development Mode

# *************************************************************************
# lorenzen Begin 
# *************************************************************************
if [ "${SERVER_NAME}" = "" ] ; then
        export SERVER_NAME
if [ "${SERVER_NAME}" = "AdminServer" ] ; then
  USER_MEM_ARGS="-Xms256m -Xmx768m -XX:MaxPermSize=350m"
elif [ "${SERVER_NAME}" = "osb_server1" ] ; then
  USER_MEM_ARGS="-Xms768m -Xmx1024m -XX:MaxPermSize=350m"
# *************************************************************************
# lorenzen End
# *************************************************************************

Production Mode

# *************************************************************************
# lorenzen Begin 
# *************************************************************************
if [ "${SERVER_NAME}" = "" ] ; then
        export SERVER_NAME
if [ "${SERVER_NAME}" = "AdminServer" ] ; then
  USER_MEM_ARGS="-Xms256m -Xmx768m -XX:MaxPermSize=350m"
elif [ "${SERVER_NAME}" = "osb_server1" ] ; then
  USER_MEM_ARGS="-Xms1024m -Xmx1024m -XX:MaxPermSize=350m"
# *************************************************************************
# lorenzen End
# *************************************************************************

In Development Mode I have added a parameter to take care of any entropy problems.

In Production Mode -Xms and -Xmx should always contain the same value for Managed Servers.

By the way if you are messing around with different Java installations etc. this is a good blog post.

Debug flags

If you are not running in Production Mode I always set debugFlag and ALSB_DEBUG_FLAG to false.

If you do not do this you can get errors like the below, because several servers are trying to use the same port:

ERROR: transport error 202: bind failed: Address already in use
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized

So add this:


This should do it:

sed -i 's/debugFlag="true"/debugFlag="false"/g'
sed -i 's/ALSB_DEBUG_FLAG="true"/ALSB_DEBUG_FLAG="false"/g'

If your developers need the debug ports, make sure each server uses unique ports.

Configuring the Node Manager

I always use the Node Manager (NM) to start and stop WebLogic servers.

1. Set NM user name and password

Use the Admin Console and navigate to the domain. Select Security and then Advanced. Set “NodeManager Username” and “NodeManager Password”:

2. Set the NM type to plain

The NM default uses SSL. I normally do not use SSL for the NM and if you do you should use valid SSL certificates not the default demo certificates.
Navigate to Environment => Machines => Machine_1 => Node Manager.
Change Type to Plain.

3. Stop the Admin Server and the Managed Server

Stop them via the Admin Console or just ctrl+c in the two terminals.

4. Start the NM

cd /u01/app/oracle/product/osb/wlserver_10.3/server/bin

When you see:

INFO: Secure socket listener started on port 5556

Stop NM again with ctrl+c. The NM has now create it’s setup files and we need to make a couple of changes in in:

Change these lines:


This should do it.

sed -i 's/javaHome=.*/javaHome=\/u01\/app\/oracle\/product\/java_current/g'
sed -i 's/JavaHome=.*/javaHome=\/u01\/app\/oracle\/product\/java_current\/jre/g'
sed -i 's/ListenAddress=/ListenAddress=localhost/g'
sed -i 's/SecureListener=true/SecureListener=false/g'
sed -i 's/CrashRecoveryEnabled=false/CrashRecoveryEnabled=true/g'
sed -i 's/StartScriptEnabled=false/StartScriptEnabled=true/g'

Start the NM again. Wait until you see:

INFO: Plain socket listener started on port 5556

5. Start the Admin Server

In another terminal start the Admin Server:

. /u01/app/oracle/product/osb/wlserver_10.3/server/bin/
java weblogic.WLST
nmConnect(username='nodemgr', password='manager2', domainName='osb', domainDir='/u01/app/oracle/domains/osb', nmType='plain')

6. Start the Managed Server

When the Admin Server is Running start the Managed Server via the Admin Console.

Notice that things are a bit different if you use Production Mode.

Configure automatic start of the servers

Now everything is running but of cause the NM should not be started manually but automatically when the server boots.

Here is a very simple boot script:

cd /etc/init.d
chmod 755 osbNodeManager
chkconfig --add osbNodeManager
chkconfig --list osbNodeManager
./osbNodeManager start

Java 7

Because of the mentioned problem with Xming I have used Java 6 during the installation.

Before switching to Java 7 you should read “Using WebLogic Server with JDK 7“.

mkdir /u01/app/oracle/product/jdk1.7.0_25/jre/lib/endorsed
cd /u01/app/oracle/product/osb/modules
cp javax.annotation_* /u01/app/oracle/product/jdk1.7.0_25/jre/lib/endorsed
cp javax.xml.bind_* /u01/app/oracle/product/jdk1.7.0_25/jre/lib/endorsed
cp javax.xml.ws_* /u01/app/oracle/product/jdk1.7.0_25/jre/lib/endorsed
ls /u01/app/oracle/product/jdk1.7.0_25/jre/lib/endorsed

The java_current soft link still points to Java 6 so we should change this:

rm -f /u01/app/oracle/product/java_current
ln -s /u01/app/oracle/product/jdk1.7.0_25 /u01/app/oracle/product/java_current
ls -l /u01/app/oracle/product/java_current

Warnings in log files

When you start the OSB you will see a lot of warnings in the log files. Since they are warnings they can be ignored. But it is nice to know what they mean. Some of them you can get rid of if you want to.

<BEA-381917> <MQ Transport could not be registered due to : Missing MQ Library>
<BEA-381924> <MQ Transport could not be registered due to : Missing MQ Library>

You are missing some MQ libraries. If you are not using MQ transport you can untarget the “MQ Transport Provider” application.
See “BEA-000000 & BEA-381917 Warning Messages During OSB Cluster Domain Admin Server Startup [ID 1074857.1]”

<BEA-387042> <There is no user password credential mapper provider configured in your security realm

If you are not using the provider it can be ignored. See “Why Do We Get BEA-387042 Alert at Server Start-up? [ID 1267945.1]”

Metric table “oracle_oim:overall” has no key column. It will not be collected

There is nothing you can do about these messages. See “After migration to FMW and WLS 10.3.6, Warning Messages In Stdout When Weblogic Starts [ID 1434193.1]”

UnicastUdpSocket failed to set send buffer size
UnicastUdpSocket failed to set receive buffer size
PreferredUnicastUdpSocket failed
MulticastUdpSocket failed

Coherence is complaining because the OS socket buffers are to small. You can increase them in /etc/sysctl.conf:


Run /sbin/sysctl -p

Oracle Coherence (member=n/a): Local address “” is a loopback address; this cluster node will not

If you don’t use Coherence you can disable it via the SBConsole. Operations => Global settings. Remove the check mark from “Enable Result Caching”.

No test table set up for pool “wlsbjmsrpDataSource”. Connections will not be tested

You should change the Connection Pool for the Data Source to have “SQL SELECT 1 FROM DUAL” in “Test Table Name”.


You should audit the Logging settings for the domain and the servers to make sure log rotation is configured.
Notice that .out log files cannot be rotated by WebLogic. The are only rotated when the servers are restarted.
On Windows this is a problem on Linux not so much πŸ™‚
But make sure you developers know that:

System.out.println("This is forbidden! Use Java Logging or Log4j");

You should configure “Configuration Archiving” for the domain. Domain => Configuration => General => Advanced. Set “Configuration Archive Enabled” and “Archive Configuration Count”.
When you change the configuration the old configuration files will automatically be save so you can revert to an old version if you get in trouble.

Securing your installation

Have a look at Oracle Fusion Middleware Securing a Production Environment for Oracle WebLogic Server 11g

It is of cause only the top of the iceberg but is a start.

Configure OCM

If your servers has access to the Internet OCM will automatically download the latest version. If not you should download it yourself and install it manually.

. /u01/app/oracle/domains/osb/bin/
export ORACLE_HOME=/u01/app/oracle/product/osb/utils
export JAVA_HOME=/u01/app/oracle/product/java_current
cd $ORACLE_HOME/ccr/bin
./setupCCR -s 12345678 DK

Verify that it is working:

cd $ORACLE_HOME/ccr/bin
./emCCR start
./emCCR status
./emCCR -register test
./emCCR -verbose test
./emCCR register
./emCCR collect
./emCCR upload
./emCCR disable_target


If you feel that I am missing something or find mistakes please tell me. I always want to learn!

{ 5 comments… read them below or add one }

Jens-Martin October 16, 2013 at 16:27

First, fantastic article!
Patch 13961904 and 14030073 are allready included in Weblogic PSU, so you don’t need to install them separately.

Peter Lorenzen October 16, 2013 at 17:54

Thanks Jens Martin πŸ™‚
How/Where can I see that they are included.
Regards Peter

Jens-Martin October 21, 2013 at 09:31

Take a look at Doc ID: 1589769.1
It will list all patches for Weblogic 10.3.6 and also what PSU it was included in.

Peter Lorenzen October 23, 2013 at 19:37

Now I understand πŸ™‚ The reason I list the mentioned patches separately is because this is an “old” post that uses the April 2013 PSU while you use the October PSU In the October PSU theses patches has been included.
Regards Peter

Peter Lorenzen October 29, 2013 at 21:33

Sorry you are absolutely right, they were also included in the old PSU. Strange, I would have assume that you would get an error when you tried to install a patch that was already applied.
Regards Peter

Leave a Comment

{ 2 trackbacks }

Previous post:

Next post: