Last reviewed on: 10th January 2022
Made changes to the body for Oracle Linux 7.9
(and dozens of EBS R12 related blogs and oracle community posts)
As far I could recollect, Oracle EBS R12.0.x & R12 12.1.x are not certified yet for Linux 7.x, let it be Red Hat Linux or Oracle enterprise Linux. Does the certification path really make guys like us trying to clone, install EBS R12 over yet to be certified platforms? Well, my case, I always did attempt & succeeded to a certain levels. Starting with Oracle 10g over Windows 7, 8 etc.
This time, my attempt was to clone our existing EBS R12 12.0.6 instance from Red Hat linux Enterprise 5 64Bit to Oracle Enterprise linux 7 64Bit.
I can’t say whether it is a rightful thing for you or for your environment. For me it was a fun project, that I achieved to a maximum satisfactory level.
Environment: Source System
Red Hat Linux 5.11 64Bit, 48GB physical memory, HBA interfaced external storage, single node EBS R12 12.0.6 with Oracle database 10.2.0.3 database
Environment: Target System
1. Oracle VirtualBox VM with 4 processors, 10GB memory, Oracle Enterprise Linux 7.9 with GUI on demand
VDI fixed size of 1.3T holding both application tier & database tier files copied from source system
2. A Desktop machine with i7 Processor, 4.5 TB Storage, 16GB physical RAM for real hardware performance testing
Definitely, this is not for a production instance, not for a production instance, not for a production instance & REMEMBER, even if you have valid Oracle support, Oracle will NOT support YOU as the platform is NOT certified for 12.0.x or 12.1.x
Oracle Enterprise Linux 7.x is not certified for EBS R12.0.x , hence I was unable to find the pre-requisites install for EBS R12 for the OS. The hacks started from this point onward
Update(10th January 2022): Oracle Linux 7.9 has the “Add-on” repository that allows you to install the pre-requisites package, however meant for later certified versions of Oracle EBS. Hence, stick to Oracle Linux 6 public yum repository based package installation as mentioned below.
(Please make sure that you fully updated your OEL 7.x box prior the attempts listed below)
As root switch the directory to
http://public-yum.oracle.com/ and install the ol6 repo following instructions provided. The instruction might get in to folds, just follow the below.
cd /etc/yum.repos.d/ wget http://yum.oracle.com/public-yum-ol6.repo
Please note public yum repositories will be soon removed, if you are reading this post much later, make sure that you will find relevant sources to install the pre-requisites.
Open the ol6 repo file using gedit/vim and enable the add-on repo. Make sure the OEL7 repo doesn’t have the add-ons enabled. If you miss this, you might end up rebuilding the Linux Server (That’s what I did!)
install pre-requisites for EBS R12 by issuing the following command
yum install oracle-ebs-server-R12-preinstall -y
Once the installation completed, you will notice that you have two new users created
If your cloned instance was having different user names for both application and database, create same usernames and add them to relevant groups
for example applprod to oinstall group and oraprod to dba, oinstall groups (mandatory)
Special note: If you are attempting these hacks for Production instances, sorry buddy, YOU will never be supported by Oracle as they have recently confirmed to me through a private message that they don’t have any plans to certify 12.0.x versions on OEL 6 or 7
Prior you attempt to clone or install the 12.0.6 instance on OEL 6, 7 make sure that you have taken care of few things prior the attempt. There are few OS level files formatting mandatory for Oracle applications, those caused me almost 3 weeks of reading various blog posts, and NOT a single solution to address a weird error associated with “Error: Missing ormi[s]://<host>:<port>” error while shutting down the application services using adstpall.sh script file! And the reason was default formatting of /etc/hosts file by OEL 7 installation!
Few errors you should see when the /etc/hosts file is NOT formatted as per Oracle’s installation notes…
Executing service control script: …../admin/scripts/adoacorectl.sh stop Timeout specified in context file: 100 second(s) script returned: ERROR : Timed out( 100000 ): Interrupted Exception You are running adoacorectl.sh version 120.13
So the /etc/hosts file must be formatted like below with your OEL/RHEL 6.x & 7.x installations
127.0.0.1 localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6 192.168.10.15 erp-prodbak.xyz.com erp-prodbak #Your box 192.168.10.16 erp-prod.xyz.com erp-prod #Your production server, if at all required
Rest of the network related mandatory elements specified in the reference documents could be ignored, or you may format them as well. If you are going to touch your /etc/resolv.conf file at all, make sure that after changing the content of the resolv.conf, you make it read-only by issuing the following command
chattr +i resolv.conf
else after a reboot, this file be rewritten by the networking admin services
Now let us refer to the /etc/sysctl.conf & /etc/security/limits.conf files, which are setting system level parameters for the application. While I noticed that the previously configured parameters were causing performance degradation once after the clone, I just copied these elements from a 12.1.3 vision instance and replaced to find that, my cloned instance started flying, giving me much better performance than our Production instance that has the latest hardware and 48GB physical memory!
Once again, thoroughly check the below parameters, if something looks not appropriate for your environment, refrain from updating
as a precaution, do a backup for both the above mentioned files
cp /etc/sysctl.conf /etc/sysctl.conf.original cp /etc/security/limits.conf /etc/security/limits.conf.original
Now using your favorite editor, replace the content of you sysctl.conf file with following
# Kernel sysctl configuration file for Red Hat Linux # # For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and # sysctl.conf(5) for more details. # # Use '/sbin/sysctl -a' to list all possible parameters. # Controls IP packet forwarding net.ipv4.ip_forward = 0 # Controls source route verification net.ipv4.conf.default.rp_filter = 1 # Do not accept source routing net.ipv4.conf.default.accept_source_route = 0 # Controls the System Request debugging functionality of the kernel kernel.sysrq = 0 # Controls whether core dumps will append the PID to the core filename. # Useful for debugging multi-threaded applications. kernel.core_uses_pid = 1 # Controls the use of TCP syncookies net.ipv4.tcp_syncookies = 1 # Controls the default maxmimum size of a mesage queue kernel.msgmnb = 65536 # Controls the maximum size of a message, in bytes kernel.msgmax = 65536 # Controls the maximum shared segment size, in bytes # Controls the maximum number of shared memory segments, in pages kernel.shmall = 4294967296 # oracle-ebs-server-R12-preinstall setting for fs.file-max is 6815744 fs.file-max = 6815744 # oracle-ebs-server-R12-preinstall setting for kernel.sem is '256 32000 100 142' kernel.sem = 256 32000 100 142 # oracle-ebs-server-R12-preinstall setting for kernel.shmmni is 4096 kernel.shmmni = 4096 # oracle-ebs-server-R12-preinstall setting for kernel.shmall is 1073741824 on x86_64 # oracle-ebs-server-R12-preinstall setting for kernel.shmall is 2097152 on i386 # oracle-ebs-server-R12-preinstall setting for kernel.shmmax is 4398046511104 on x86_64 # oracle-ebs-server-R12-preinstall setting for kernel.shmmax is 4294967295 on i386 kernel.shmmax = 4398046511104 # oracle-ebs-server-R12-preinstall setting for kernel.msgmni is 2878 kernel.msgmni = 2878 # oracle-ebs-server-R12-preinstall setting for net.core.rmem_default is 262144 net.core.rmem_default = 262144 # oracle-ebs-server-R12-preinstall setting for net.core.rmem_max is 4194304 net.core.rmem_max = 4194304 # oracle-ebs-server-R12-preinstall setting for net.core.wmem_default is 262144 net.core.wmem_default = 262144 # oracle-ebs-server-R12-preinstall setting for net.core.wmem_max is 1048576 net.core.wmem_max = 1048576 # oracle-ebs-server-R12-preinstall setting for fs.aio-max-nr is 1048576 fs.aio-max-nr = 1048576 # oracle-ebs-server-R12-preinstall setting for net.ipv4.ip_local_port_range is 9000 65500 net.ipv4.ip_local_port_range = 9000 65500
Save the file and issue the following command
Now, change the limits.conf file with following content
# /etc/security/limits.conf # #Each line describes a limit for a user in the form: # # # #Where: # can be: # - a user name # - a group name, with @group syntax # - the wildcard *, for default entry # - the wildcard %, can be also used with %group syntax, # for maxlogin limit # # can have the two values: # - "soft" for enforcing the soft limits # - "hard" for enforcing hard limits # # can be one of the following: # - core - limits the core file size (KB) # - data - max data size (KB) # - fsize - maximum filesize (KB) # - memlock - max locked-in-memory address space (KB) # - nofile - max number of open file descriptors # - rss - max resident set size (KB) # - stack - max stack size (KB) # - cpu - max CPU time (MIN) # - nproc - max number of processes # - as - address space limit (KB) # - maxlogins - max number of logins for this user # - maxsyslogins - max number of logins on the system # - priority - the priority to run user process with # - locks - max number of file locks the user can hold # - sigpending - max number of pending signals # - msgqueue - max memory used by POSIX message queues (bytes) # - nice - max nice priority allowed to raise to values: [-20, 19] # - rtprio - max realtime priority # # # #* soft core 0 #* hard rss 10000 #@student hard nproc 20 #@faculty soft nproc 20 #@faculty hard nproc 50 #ftp hard nproc 0 #@student - maxlogins 4 # * hard nofile 65535 # * soft nofile 4096 # * hard nproc 16384 # * soft nproc 2047 # oracle-ebs-server-R12-preinstall setting for nofile soft limit is 4096 oratest soft nofile 4096 appltest soft nofile 4096 # oracle-ebs-server-R12-preinstall setting for nofile hard limit is 65536 oratest hard nofile 65536 appltest hard nofile 65536 # oracle-ebs-server-R12-preinstall setting for nproc soft limit is 16384 # refer orabug15971421 for more info. oratest soft nproc 16384 appltest soft nproc 16384 # oracle-ebs-server-R12-preinstall setting for nproc hard limit is 16384 oratest hard nproc 16384 appltest hard nproc 16384 # oracle-ebs-server-R12-preinstall setting for stack soft limit is 10240KB oratest soft stack 10240 appltest soft stack 10240 # oracle-ebs-server-R12-preinstall setting for stack hard limit is 32768KB oratest hard stack 32768 appltest hard stack 32768 # End of file
Install unzip version 5 from https://oss.oracle.com/el4/unzip/unzip.html
(This is mandatory as 12.0.x doesn’t support unzip versions above 5, and your cloning will fail with error notifying unzip is not supported)
Source the libdb.so.2 library file to /usr/lib from your source system, as the libgdbm.so.4.0.0 soft link hack will not work. If the libdb.so.2 is already a soft link in your source system, move the source file “libgdbm.so.2.0.0” from source to target box and create the soft link.
Now go ahead and enjoy the cloning/installation of your R12 12.0.x, or R12.1.x releases over OEL/RHEL 7.x (CENTOS is GNU release of RHEL, so you may experiment with that distro as well, nothing guaranteed though)
Please be warned, I have read many places that, few modules do not work on Linux 6,7 releases. Hence, the entire exercises you painfully executed may turn futile at later stages, and once again, if you have a live Oracle support, do not attempt such with your Production instance!
Enjoy guys :)