Here is my experiences with installing OSB 11.1.1.6 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
Overview
Download the software
Please notice
- Before using the direkt download links to http://download.oracle.com you need to login in to the site and accept a License Agreement.
- The RCU only exists as a 32-bit download
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
yum install compat-libcap1-1*
yum install compat-libstdc++-33*.i686
yum install compat-libstdc++-33*.x86_64
yum install gcc-4*.x86_64
yum install gcc-c++-4*.x86_64
yum install glibc-2*.x86_64
yum install glibc-2*.i686
yum install glibc-devel-2*.i686
yum install libaio-0.*.x86_64
yum install libaio-devel-0.*.x86_64
yum install libgcc-4.*.x86_64
yum install libstdc++-4.*.x86_64
yum install libstdc++-4.*.x86_64
yum install libstdc++-devel-4.*.x86_64
yum install libXext.i686
yum install libXtst.i686
yum install sysstat-9.*.x86_64
Change the open file limits in /etc/security/limits.conf
* soft nofile 4096
* hard nofile 4096
Enabling Unicode Support in the .bash_profile for the oracle user.
export LANG="en_US.UTF-8"
Boot the server.
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
Install Java
Unzip and untar the downloaded file:
gunzip jdk-7u15-linux-x64.tar.gz
tar xvf jdk-7u15-linux-x64.tar
mv jdk1.7.0_15 /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_15 /u01/app/oracle/product/java_current
I could not get the WebLogic Installer to work with Java 7. The Installer start without any problems but in some of the screens you cannot select options with the mouse or input text. I have reproduced this with Oracle Linux 6 and with the WebLogic Server 12c Installer. I have the problem on both physical and virtual servers.
As a workaround I use Java 6 during the installation and later switch to Java 7. This works fine.
Install the latest Java SE CPU
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 February 2013. It patches update 13 and earlier. I use update 15 so there is no need to patch it.
Install the WebLogic Server 10.3.6
Take care when downloading the wls1036_generic.jar file since some browsers will rename it to wls1036_generic.zip.
/u01/app/oracle/product/java_current/bin/java
-Djava.io.tmpdir=/u01/tmp -jar wls1036_generic.jar -log=wls_install.log
-Djava.io.tmpdir 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 CPU/PSU
I always install the PSU instead of the CPU. You can read more about PSU updates in the MOS note:
“Announcing Oracle WebLogic Server PSUs (Patch Set Updates) [ID 1306505.1]”
WebLogic 10.3.6 January 2013 PSU patch 14736139. (p14736139_1036_Generic.zip)
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 HYKC.jar /u01/app/oracle/product/osb/utils/bsu/cache_dir/.
cp patch-catalog_18682.xml /u01/app/oracle/product/osb/utils/bsu/
cache_dir/patch-catalog.xml
Make sure that the patch-catalog_18682.xml is renamed to patch-catalog.xml!
cd /u01/app/oracle/product/osb/utils/bsu/
./bsu.sh -prod_dir=/u01/app/oracle/product/osb/wlserver_10.3
-patchlist=HYKC -verbose -install
Verify that the patch is installed.
./bsu.sh -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/setWLSEnv.sh
java weblogic.version
For example.
[oracle@wintermute ~]$ java weblogic.version
WebLogic Server 10.3.6.0.3 PSU Patch for BUG14736139 Fri Nov 23 10:16:54 IST 2012
WebLogic Server 10.3.6.0 Tue Nov 15 08:52:36 PST 2011 1441050
Install the OSB
Red Hat 6 is certified with the 11.1.1.6 OSB but because the OSB was shipped before it was certified you need the -ignoreSysPrereqs parameter.
The documentation does not reflect this yet but this MOS note does:
“OSB 11.1.1.6 Installation Fails on Red Hat Enterprise Linux (EL) 6 [ID 1530125.1]”
cd /u01/software/ofm_osb_generic_11.1.1.6.0_disk1_1of1/Disk1
./runInstaller -ignoreSysPrereqs -jreLoc
/u01/app/oracle/product/java_current/jre
Below I have ignored the screens where you can sign up for security updates etc.











Patch the OSB
To find out if there exists any patches that you should install check the “Information Center: Oracle Service Bus (OSB) [ID 1293368.2]” on MOS.
Currently they have listed two patches, one for the WebLogic Server and one for the OSB.
WebLogic Patch
Check “Performance Impact in WLS 10.3.6 / Oracle Service Bus 11.1.1.6 if Using Work Manager or Dispatch Policy for OSB JMS Services [ID 1388057.1]”
Patch 13573621 (p13573621_103603_Generic.zip).
cp DYCA.jar /u01/app/oracle/product/osb/utils/bsu/cache_dir/.
cp patch-catalog_19101.xml /u01/app/oracle/product/osb/utils/bsu/
cache_dir/patch-catalog.xml
Make sure that the patch-catalog_19101.xml is renamed to patch-catalog.xml!
cd /u01/app/oracle/product/osb/utils/bsu/
./bsu.sh -prod_dir=/u01/app/oracle/product/osb/wlserver_10.3
-patchlist=DYCA -verbose -install
Verify that the patch is installed.
./bsu.sh -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/setWLSEnv.sh
java weblogic.version
OSB Patch
OSB patches are not applied via the BSU but uses the well-known Oracle OPatch tool.
Always download and install the latest OPatch version from MOS!
export ORACLE_HOME=/u01/app/oracle/product/osb/Oracle_OSB1
cd /u01/app/oracle/product/osb/Oracle_OSB1/OPatch
./opatch | grep version
unzip p6880880_111000_Linux-x86-64.zip -d /u01/app/oracle/product/osb/Oracle_OSB1
cd /u01/app/oracle/product/osb/Oracle_OSB1/OPatch
./opatch | grep version
The OSB patch is “14389126: PS5 Bundle Patch 1 (11.1.1.6.1)”. (p14389126_111160_Generic.zip)
Check “OSB 11g: Bundle Patch Reference [ID 1499170.1]”
export ORACLE_HOME=/u01/app/oracle/product/osb/Oracle_OSB1
cd p14389126_111160_Generic/14389126
/u01/app/oracle/product/osb/Oracle_OSB1/OPatch/opatch apply
-jdk /u01/app/oracle/product/java_current
-jre /u01/app/oracle/product/java_current/jre
To validate that it has been installed:
cd /u01/app/oracle/product/osb/Oracle_OSB1/OPatch
./opatch lsinventory
You should see one product and one interim patch.
Create database schemas via the RCU
You most likely do not need a database with 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
Check the database requirements and notice:
AL32UTF8 character set
If you use a database that does not use the AL32UTF8 character set the RCU will complain. As long as you are not using Oracle WebCenter or Oracle Identity Management you can ignore this.
For more information see the RCU MOS FAQ: “Oracle Fusion Middleware 11g Repository Creation Utility (RCU) – FAQ [ID 1304790.1]”
NLS_LENGTH_SEMANTICS
Only Byte length semantics is supported so if you use CHAR you probably need to use another database.
See “RCU 11g Fails When Creating Index on MDS_COMPONENTS – ORA-01450: maximum key length (6398) exceeded [ID 987906.1]”
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 support OSB Reporting you need to select the SOA Infrastructure component in the RCU. I cannot find any documentation that states this though. You can get information about other FMW products here but the OSB is not mentioned.
Does anybody know where this information can be found?
Tablespaces
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/osb/osb_repo01.dbf'
size 150m autoextend on next 100m maxsize 1g extent management local autoallocate;
Start the RCU
cd ofm_rcu_linux_11.1.1.6.0_disk1_1of1/rcuHome/bin
./rcu











Configure the OSB
The CONFIG_JVM_ARGS is set to speed things up if the system is low on entropy.
export CONFIG_JVM_ARGS=”-Djava.security.egd=file:/dev/./urandom”
cd /u01/app/oracle/product/osb/oracle_common/common/bin
./config.sh
Below I have ignored the screens where you can sign up for security updates etc.
















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 OSB Home – /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
./startWebLogic.sh
Waite till you see:
<Server started in RUNNING mode>
Now you should be able to access the Admin Console:
http://wintermute:7001/console
Start the Managed Server in another terminal:
cd /u01/app/oracle/domains/osb/bin
./startManagedWebLogic.sh osb_server1
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 setDomainEnv.sh 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
SERVER_NAME="AdminServer"
export SERVER_NAME
fi
if [ "${SERVER_NAME}" = "AdminServer" ] ; then
USER_MEM_ARGS="-Xms256m -Xmx768m -XX:MaxPermSize=350m -Djava.security.egd=file:/dev/./urandom"
elif [ "${SERVER_NAME}" = "osb_server1" ] ; then
USER_MEM_ARGS="-Xms768m -Xmx1024m -XX:MaxPermSize=350m -Djava.security.egd=file:/dev/./urandom"
fi
# *************************************************************************
# lorenzen End
# *************************************************************************
Production Mode
# *************************************************************************
# lorenzen Begin
# *************************************************************************
if [ "${SERVER_NAME}" = "" ] ; then
SERVER_NAME="AdminServer"
export SERVER_NAME
fi
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"
fi
# *************************************************************************
# lorenzen End
# *************************************************************************
In “Development Mode” I have added a parameter to take care of any entropy problems.
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, becuase 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:
debugFlag="false"
ALSB_DEBUG_FLAG="false"
This should do it:
sed -i 's/debugFlag="true"/debugFlag="false"/g' setDomainEnv.sh
sed -i 's/ALSB_DEBUG_FLAG="true"/ALSB_DEBUG_FLAG="false"/g' setDomainEnv.sh
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
./startNodeManager.sh
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 nodemanager.properties in:
/u01/app/oracle/product/osb/wlserver_10.3/common/nodemanager
Change these lines:
javaHome=/u01/app/oracle/product/java_current
JavaHome=/u01/app/oracle/product/java_current/jre
SecureListener=false
CrashRecoveryEnabled=true
StartScriptEnabled=true
This should do it.
sed -i 's/SecureListener=true/SecureListener=false/g' nodemanager.properties
sed -i 's/CrashRecoveryEnabled=false/CrashRecoveryEnabled=true/g' nodemanager.properties
sed -i 's/StartScriptEnabled=false/StartScriptEnabled=true/g' nodemanager.properties
sed -i 's/javaHome=.*/javaHome=\/u01\/app\/oracle\/product\/java_current/g' nodemanager.properties
sed -i 's/JavaHome=.*/javaHome=\/u01\/app\/oracle\/product\/java_current\/jre/g' nodemanager.properties
Start the NM again. Wait until you see:
INFO: Plain socket listener started on port 5556
In another terminal start the Admin Server:
. /u01/app/oracle/product/osb/wlserver_10.3/server/bin/setWLSEnv.sh
java weblogic.WLST
nmConnect(username='nodemgr', password='manager2', domainName='osb', domainDir='/u01/app/oracle/domains/osb', nmType='plain')
nmStart('AdminServer')
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:
/etc/init.d/osbNodeManager
cd /etc/init.d
chmod 755 osbNodeManager
chkconfig --add osbNodeManager
chkconfig --list osbNodeManager
./osbNodeManager start
Java 7
Before switching to Java 7 you should read “Using WebLogic Server with JDK 7“.
mkdir /u01/app/oracle/product/jdk1.7.0_15/jre/lib/endorsed
cd /u01/app/oracle/product/osb/modules
cp javax.annotation_* /u01/app/oracle/product/jdk1.7.0_15/jre/lib/endorsed
cp javax.xml.bind_* /u01/app/oracle/product/jdk1.7.0_15/jre/lib/endorsed
cp javax.xml.ws_* /u01/app/oracle/product/jdk1.7.0_15/jre/lib/endorsed
ls /u01/app/oracle/product/jdk1.7.0_15/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_15 /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>
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 11.1.1.6 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:
net.core.rmem_max=4192608
net.core.wmem_max=4192608
Run /sbin/sysctl -p
Oracle Coherence 3.7.1.1 (member=n/a): Local address “127.0.0.1″ 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”.
Miscellaneous
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 a backup of config.xml will be save so you can revert to an old version if you get in trouble.
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/setDomainEnv.sh
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 nobody@cgi.com 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
Google+