Wednesday 23 September 2015

Docker & oracle-rdbms-server-12cR1-preinstall

There is an extremely annoying  behavior of oracle-rdbms-server-12cR1-preinstall, when you want to use it in conjunction with docker images like breed85 or oraclelinux: this official package of Oracle's blocks every attempt to switch to the user oracle (su - oracle), which one is forced to do, when he wants to install Oracle SW and create Oracle databases in a Docker container. I have written 2 posts in July about that and none of them was correct. After 2 months I was forced to come back in order to accomplish our Dockerproject . Here is, what I have found out.

Oracle's preinstall package - which I have used many times in other environments - is OK, but does not suit to the existing Docker images containing oraclelinux. The problem lies in the  /etc/security/limits.conf. Oracle's package inserts limits into this file, which the Docker image will not accept, i.e.

*       - nproc 16384
oracle   soft   nofile    1024
oracle   hard   nofile    65536  
oracle   soft   nproc    16384
oracle   hard   nproc    16384
oracle   soft   stack    10240
oracle   hard   stack    32768

Oracle alone needs 65536 open files - for 1 database - , which is more than the system wide ulimit -Hn, which is 4096 and cannot be increased.

[root@bdb014068c11 tmp]# ulimit -Hn 65536
bash: ulimit: open files: cannot modify limit: Operation not permitted

Change the value to 4096, try it out and go on with your installation or proceed as demonstrated in my most recent post about that

By the way: here is the list of packages, which oracle-rdbms-server-12cR1-preinstall comprises.

# From Public Yum or ULN
yum install binutils -y
yum install compat-libcap1 -y
yum install compat-libstdc++-33 -y
yum install compat-libstdc++-33.i686 -y
yum install gcc -y
yum install gcc-c++ -y
yum install glibc -y
yum install glibc.i686 -y
yum install glibc-devel -y
yum install glibc-devel.i686 -y
yum install ksh -y
yum install libgcc -y
yum install libgcc.i686 -y
yum install libstdc++ -y
yum install libstdc++.i686 -y
yum install libstdc++-devel -y
yum install libstdc++-devel.i686 -y
yum install libaio -y
yum install libaio.i686 -y
yum install libaio-devel -y
yum install libaio-devel.i686 -y
yum install libXext -y
yum install libXext.i686 -y
yum install libXtst -y
yum install libXtst.i686 -y
yum install libX11 -y
yum install libX11.i686 -y
yum install libXau -y
yum install libXau.i686 -y
yum install libxcb -y
yum install libxcb.i686 -y
yum install libXi -y
yum install libXi.i686 -y
yum install make -y
yum install sysstat -y
yum install unixODBC -y
yum install unixODBC-devel -y

And do not forget
yum install unzip -y


2 comments:

Marcel Körtgen said...

Note that the owner of the oracleinux docker image is not Docker, Inc but Oracle itself. On the DockerHub-page for oraclelinux they encourage to raise issues on GitHub, i.e. https://github.com/oracle/docker/issues

Hans Werner Körtgen said...

Many thanks for the clarification, Marcel. I will contact both
Oracle and Docker-Hub-page and keep you aligned.