Difference between revisions of "Oracle 10g VE"

From OpenVZ Virtuozzo Containers Wiki
Jump to: navigation, search
 
m (Reverted edits by 109.227.76.113 (talk) to last revision by Kir)
 
(13 intermediate revisions by 5 users not shown)
Line 1: Line 1:
This is just a listing of steps taken to create a fully functionaly Oracle VE.
+
This is just a listing of steps taken to create a fully functional
 +
Oracle container.
  
'''Create the VE on the Hardware Node (HN)'''
+
== Create the container on the [[host system]] ==
  
vzctl create 1001 --ostemplate centos-4-i386-default
+
vzctl create 1001 --ostemplate centos-4-i386-default
vzctl set 1001 --userpasswd root:password --save
+
vzctl set 1001 --userpasswd root:password --save
vzctl set 1001 --hostname ve-oracle.example.com --save
+
vzctl set 1001 --hostname ve-oracle.example.com --save
vzctl set 1001 --ipadd 192.168.0.62 --save
+
vzctl set 1001 --ipadd 192.168.0.62 --save
  
'''Reset resource limits'''
+
== Reset resource limits ==
  
I decided to have max limits to avoid porblems during installation. Once the installation is
+
I decided to have max limits to avoid problems during installation.
done and the system left running for some time, these limits can be adjusted.
+
Once the installation is
 +
done and the system left running for some time, these limits should be
 +
adjusted.
  
vzctl set 1001 --kmemsize 2147483647:2147483647 --save
+
{{Note|setting the UBC limits to "unlimited" value like below can only be done on a trusted single-container machine, and can create problems. For more info about UBC, see [[Resource shortage]] and [[UBC]].}}
vzctl set 1001 --lockedpages 2147483647:2147483647 --save
 
vzctl set 1001 --privvmpages 2147483647:2147483647 --save
 
vzctl set 1001 --shmpages 2147483647:2147483647 --save
 
vzctl set 1001 --dummy 2147483647:2147483647 --save
 
vzctl set 1001 --numproc 2147483647:2147483647 --save
 
vzctl set 1001 --physpages 2147483647:2147483647 --save
 
vzctl set 1001 --vmguarpages 2147483647:2147483647 --save
 
vzctl set 1001 --oomguarpages 2147483647:2147483647 --save
 
vzctl set 1001 --numtcpsock 2147483647:2147483647 --save
 
vzctl set 1001 --numflock 2147483647:2147483647 --save
 
vzctl set 1001 --numpty 2147483647:2147483647 --save
 
vzctl set 1001 --numsiginfo 2147483647:2147483647 --save
 
vzctl set 1001 --tcpsndbuf 2147483647:2147483647 --save
 
vzctl set 1001 --tcprcvbuf 2147483647:2147483647 --save
 
vzctl set 1001 --othersockbuf 2147483647:2147483647 --save
 
vzctl set 1001 --dgramrcvbuf 2147483647:2147483647 --save
 
vzctl set 1001 --numothersock 2147483647:2147483647 --save
 
vzctl set 1001 --dcachesize 2147483647:2147483647 --save
 
vzctl set 1001 --numfile 2147483647:2147483647 --save
 
vzctl set 1001 --numiptent 2147483647:2147483647 --save
 
  
'''Start the VE'''
+
{{Inconsistent UBC warning}}
  
vzctl start 1001
+
vzctl set 1001 --kmemsize unlimited --save
 +
vzctl set 1001 --lockedpages unlimited --save
 +
vzctl set 1001 --privvmpages unlimited --save
 +
vzctl set 1001 --shmpages unlimited --save
 +
vzctl set 1001 --numproc unlimited --save
 +
vzctl set 1001 --numtcpsock unlimited --save
 +
vzctl set 1001 --numflock unlimited --save
 +
vzctl set 1001 --numpty unlimited --save
 +
vzctl set 1001 --numsiginfo unlimited --save
 +
vzctl set 1001 --tcpsndbuf unlimited --save
 +
vzctl set 1001 --tcprcvbuf unlimited --save
 +
vzctl set 1001 --othersockbuf unlimited --save
 +
vzctl set 1001 --dgramrcvbuf unlimited --save
 +
vzctl set 1001 --numothersock unlimited --save
 +
vzctl set 1001 --dcachesize unlimited --save
 +
vzctl set 1001 --numfile unlimited --save
 +
vzctl set 1001 --numiptent unlimited --save
  
 +
Or you can set these limits in your <code>/etc/vz/conf/1001.conf</code> file:
  
'''Update /etc/resolv.conf on the VE'''
+
{{Inconsistent UBC warning}}
 +
<pre>
 +
# Primary parameters
 +
AVNUMPROC="unlimited"
 +
NUMPROC="unlimited"
 +
NUMTCPSOCK="unlimited"
 +
NUMOTHERSOCK="unlimited"
 +
VMGUARPAGES="unlimited"
  
search example.com
+
# Secondary parameters
nameserver <ip address of your name server>
+
KMEMSIZE="unlimited"
 +
TCPSNDBUF="unlimited"
 +
TCPRCVBUF="unlimited"
 +
OTHERSOCKBUF="unlimited"
 +
DGRAMRCVBUF="unlimited"
 +
OOMGUARPAGES="unlimited"
  
 +
# Auxiliary parameters
 +
LOCKEDPAGES="unlimited"
 +
SHMPAGES="unlimited"
 +
PRIVVMPAGES="unlimited"
 +
NUMFILE="unlimited"
 +
NUMFLOCK="unlimited"
 +
NUMPTY="unlimited"
 +
NUMSIGINFO="unlimited"
 +
DCACHESIZE="unlimited"
  
'''Install Required Packages'''
+
PHYSPAGES="unlimited"
 +
NUMIPTENT="unlimited"
 +
</pre>
  
vzyum 1001 install binutils compat-db gcc gcc-c++ glibc glibc-common libstdc++ libstdc++-devel gnome-libs make pdksh sysstat libaio xscreensaver openmotif21
+
== Start the container ==
vzyum 1001 install xorg-x11-xfs usbutils urw-fonts shared-mime-info perl-libwww-perl perl-XML-Parser perl-URI perl-HTML-Tagset perl-HTML-Parser patch
+
vzctl start 1001
vzyum 1001 install lvm2 intltool libIDL libart_lgpl libbonobo xterm libcap libcroco libgnomecanvas libexif libgnomecups libgnomeprint22 libsoup libwnck libxklavier
 
           
 
       
 
'''Check the following rpms are installed on the VE'''
 
  
vzctl exec 1001 rpm -q binutils gcc gcc-c++ glibc gnome-libs libstdc++ libstdc++-devel make pdksh sysstat xscreensaver libaio
+
== Update <code>/etc/resolv.conf</code> on the container ==
  
 +
Put the following into your container's /etc/resolv.conf:
  
'''Add Oracle User/Group'''
+
search example.com
 +
nameserver <ip address of your name server>
  
vzctl exec 1001 /usr/sbin/groupadd oinstall
+
== Install Required Packages ==
vzctl exec 1001 /usr/sbin/groupadd dba
 
vzctl exec 1001 /usr/sbin/useradd -m -g oinstall -G dba oracle
 
vzctl exec 1001 id oracle
 
  
'''Set Password for the Oracle user'''
+
vzyum 1001 install binutils compat-db gcc gcc-c++ glibc \
 +
  glibc-common libstdc++ libstdc++-devel gnome-libs make \
 +
  pdksh sysstat libaio xscreensaver openmotif21 xorg-x11-xfs \
 +
  usbutils urw-fonts shared-mime-info perl-libwww-perl \
 +
  perl-XML-Parser perl-URI perl-HTML-Tagset perl-HTML-Parser \
 +
  patch lvm2 intltool libIDL libart_lgpl libbonobo xterm \
 +
  libcap libcroco libgnomecanvas libexif libgnomecups \
 +
  libgnomeprint22 libsoup libwnck libxklavier
  
vzctl exec 1001 passwd oracle
+
== Check the following rpms are installed on the container ==
  
'''Create Directories for Oracle Home/Data and the download directory'''
+
vzctl exec 1001 rpm -q binutils gcc gcc-c++ glibc gnome-libs \
 +
  libstdc++ libstdc++-devel make pdksh sysstat xscreensaver libaio
  
vzctl exec 1001 mkdir /home/oracle/10gR2_db
+
== Add Oracle User/Group ==
vzctl exec 1001 mkdir -p /u01/app/oracle/product/10.2.0/db_1
 
vzctl exec 1001 mkdir /u01/app/oracle/oradata
 
vzctl exec 1001 chown -R oracle:oinstall /u01/app/oracle /home/oracle/10gR2_db
 
vzctl exec 1001 chmod -R 775 /u01/app/oracle /home/oracle/10gR2_db
 
vzctl exec 1001 ln -s /usr/lib/libstdc++.so.6.0.3 /usr/lib/libstdc++.so.5
 
  
'''Put these values in /etc/sysctl.conf on the HN'''
+
vzctl exec 1001 /usr/sbin/groupadd oinstall
 +
vzctl exec 1001 /usr/sbin/groupadd dba
 +
vzctl exec 1001 /usr/sbin/useradd -m -g oinstall -G dba oracle
 +
vzctl exec 1001 id oracle
  
kernel.shmall = 2097152
+
== Set Password for the Oracle user ==
kernel.shmmax = 536870912
 
kernel.shmmni = 4096
 
kernel.sem = 250 32000 100 128
 
fs.file-max = 65536
 
net.ipv4.ip_local_port_range = 1024 65000
 
net.core.rmem_default=262144
 
net.core.wmem_default=262144
 
net.core.rmem_max=262144
 
net.core.wmem_max=262144
 
  
'''Execute on the HN'''
+
vzctl exec 1001 passwd oracle
  
/sbin/sysctl -p
+
== Create Directories for Oracle Home/Data and the download directory ==
  
 +
vzctl exec 1001 mkdir /home/oracle/10gR2_db
 +
vzctl exec 1001 mkdir -p /u01/app/oracle/product/10.2.0/db_1
 +
vzctl exec 1001 mkdir /u01/app/oracle/oradata
 +
vzctl exec 1001 chown -R oracle:oinstall /u01/app/oracle /home/oracle/10gR2_db
 +
vzctl exec 1001 chmod -R 775 /u01/app/oracle /home/oracle/10gR2_db
 +
vzctl exec 1001 ln -s /usr/lib/libstdc++.so.6.0.3 /usr/lib/libstdc++.so.5
  
 +
== Put these values in /etc/sysctl.conf on the HN ==
  
At this point the VE is ready for Oracle installation.
+
Put these values in /etc/sysctl.conf on the HN:
We take a backup of the VE at this point in case we need to rebuild the system or do a clean Oracle install
 
  
'''Shutdown the VE and take a backup'''
+
kernel.shmall = 2097152
 +
kernel.shmmax = 536870912
 +
kernel.shmmni = 4096
 +
kernel.sem = 250 32000 100 128
 +
fs.file-max = 65536
 +
net.ipv4.ip_local_port_range = 1024 65000
 +
net.core.rmem_default=262144
 +
net.core.wmem_default=262144
 +
net.core.rmem_max=262144
 +
net.core.wmem_max=262144
  
vzctl stop 1001
+
Then execute on the HN the following command:
cd /u01/backups
+
tar czpvf ve-1001-preOracle.tar.gz /vz/private/1001/ /etc/vz/conf/1001.conf
+
/sbin/sysctl -p
  
'''Start VE again'''
 
  
vzctl start 1001
+
At this point the container is ready for Oracle installation.
 +
We take a backup of the container at this point in case we need to rebuild the
 +
system or do a clean Oracle install.
  
'''Copy the downloaded Oracle zip file to the VE and change its ownership to oracle on the VE'''
+
== Shutdown the container and take a backup ==
  
cp /u01/software/10201_database_linux32.zip /vz/private/1001/home/oracle/10gR2_db/
+
vzctl stop 1001
vzctl exec 1001 chown oracle:oinstall /home/oracle/10gR2_db/10201_database_linux32.zip
+
cd /u01/backups
 +
tar czpvf ve-1001-preOracle.tar.gz /vz/private/1001/ /etc/vz/conf/1001.conf
  
'''Now login as oracle on the ve-1001'''
+
== Start the container again ==
  
cd /home/oracle/10gR2_db
+
vzctl start 1001
unzip 10201_database_linux32.zip
 
cd database/
 
export ORACLE_BASE=/u01/app/oracle
 
export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
 
export DISPLAY=192.168.0.149:0
 
  
Make sure u can run xterm
+
== Put oracle distro into the container ==
  
./runInstaller
+
Copy the downloaded Oracle zip file to the container and change its
 +
ownership to "oracle" on the container.
 +
 
 +
cp /u01/software/10201_database_linux32.zip /vz/private/1001/home/oracle/10gR2_db/
 +
vzctl exec 1001 chown oracle:oinstall /home/oracle/10gR2_db/10201_database_linux32.zip
 +
 
 +
== Start installation ==
 +
 
 +
Now login as oracle on the ve-1001, and run the following commands:
 +
 
 +
cd /home/oracle/10gR2_db
 +
unzip 10201_database_linux32.zip
 +
cd database/
 +
export ORACLE_BASE=/u01/app/oracle
 +
export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
 +
export DISPLAY=192.168.0.149:0
 +
 
 +
Make sure you can run xterm, then:
 +
 
 +
./runInstaller
  
 
'''When prompted to run scripts as root. Login as root and execute'''
 
'''When prompted to run scripts as root. Login as root and execute'''
  
export DISPLAY=192.168.0.149:0
+
export DISPLAY=192.168.0.149:0
/u01/app/oracle/oraInventory/orainstRoot.sh
+
/u01/app/oracle/oraInventory/orainstRoot.sh
/u01/app/oracle/product/10.2.0/db_1/root.sh
+
/u01/app/oracle/product/10.2.0/db_1/root.sh
  
 
'''Update oracle's profile with the following'''
 
'''Update oracle's profile with the following'''
  
cd
+
cd
vi /home/oracle/.bashrc
+
vi /home/oracle/.bashrc
export ORACLE_BASE=/u01/app/oracle
+
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
+
export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
+
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH
+
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=orcl
+
export ORACLE_SID=orcl
  
  
 
'''Delete installation files (optional)'''
 
'''Delete installation files (optional)'''
  
cd /home/oracle/10gR2_db
+
cd /home/oracle/10gR2_db
rm -rf database
+
rm -rf database
  
'''Time to take another backup of the VE on the HN node.'''  
+
'''Time to take another backup of the container on the [[hardware node]].'''  
  
This backup will allow you to restore the VE to the point where no database has yet been created.
+
This backup will allow you to restore the container to the point where no
 +
database has yet been created.
  
vzctl stop 1001
+
vzctl stop 1001
cd /u01/backups
+
cd /u01/backups
tar czpvf ve-1001-postOracleSoftware.tar.gz /vz/private/1001/ /etc/vz/conf/1001.conf
+
tar czpvf ve-1001-postOracleSoftware.tar.gz \
 +
  /vz/private/1001/ /etc/vz/conf/1001.conf
  
  
Start VE
+
Start the container
vzctl start 1001
+
 
 +
vzctl start 1001
  
 
'''Login as oracle and create the database'''
 
'''Login as oracle and create the database'''
  
export DISPLAY=192.168.0.149:0
+
export DISPLAY=192.168.0.149:0
dbca
+
dbca
  
  
 
'''Create listener'''
 
'''Create listener'''
  
netca
+
netca
  
 
'''Now take another backup on the HN node'''
 
'''Now take another backup on the HN node'''
  
vzctl stop 1001
+
vzctl stop 1001
cd /u01/backups
+
cd /u01/backups
tar czpvf ve-1001-postOracleDatabase.tar.gz /vz/private/1001/ /etc/vz/conf/1001.conf
+
tar czpvf ve-1001-postOracleDatabase.tar.gz \
 +
  /vz/private/1001/ /etc/vz/conf/1001.conf
 +
 
 +
== Oracle Help ==
 +
 
 +
* [http://www.orafaq.com/forum Ask questions on the Oracle Forum]
 +
* [http://www.orawiki.com/ Oracle Wiki]
 +
 
 +
[[Category:HOWTO]]

Latest revision as of 19:50, 11 October 2011

This is just a listing of steps taken to create a fully functional Oracle container.

Create the container on the host system[edit]

vzctl create 1001 --ostemplate centos-4-i386-default
vzctl set 1001 --userpasswd root:password --save
vzctl set 1001 --hostname ve-oracle.example.com --save
vzctl set 1001 --ipadd 192.168.0.62 --save

Reset resource limits[edit]

I decided to have max limits to avoid problems during installation. Once the installation is done and the system left running for some time, these limits should be adjusted.

Yellowpin.svg Note: setting the UBC limits to "unlimited" value like below can only be done on a trusted single-container machine, and can create problems. For more info about UBC, see Resource shortage and UBC.
Warning.svg Warning: The above UBC values might not be consistent; see UBC consistency check.
vzctl set 1001 --kmemsize unlimited --save
vzctl set 1001 --lockedpages unlimited --save
vzctl set 1001 --privvmpages unlimited --save
vzctl set 1001 --shmpages unlimited --save
vzctl set 1001 --numproc unlimited --save
vzctl set 1001 --numtcpsock unlimited --save
vzctl set 1001 --numflock unlimited --save
vzctl set 1001 --numpty unlimited --save
vzctl set 1001 --numsiginfo unlimited --save
vzctl set 1001 --tcpsndbuf unlimited --save
vzctl set 1001 --tcprcvbuf unlimited --save
vzctl set 1001 --othersockbuf unlimited --save
vzctl set 1001 --dgramrcvbuf unlimited --save
vzctl set 1001 --numothersock unlimited --save
vzctl set 1001 --dcachesize unlimited --save
vzctl set 1001 --numfile unlimited --save
vzctl set 1001 --numiptent unlimited --save

Or you can set these limits in your /etc/vz/conf/1001.conf file:

Warning.svg Warning: The above UBC values might not be consistent; see UBC consistency check.
# Primary parameters
AVNUMPROC="unlimited"
NUMPROC="unlimited"
NUMTCPSOCK="unlimited"
NUMOTHERSOCK="unlimited"
VMGUARPAGES="unlimited"

# Secondary parameters
KMEMSIZE="unlimited"
TCPSNDBUF="unlimited"
TCPRCVBUF="unlimited"
OTHERSOCKBUF="unlimited"
DGRAMRCVBUF="unlimited"
OOMGUARPAGES="unlimited"

# Auxiliary parameters
LOCKEDPAGES="unlimited"
SHMPAGES="unlimited"
PRIVVMPAGES="unlimited"
NUMFILE="unlimited"
NUMFLOCK="unlimited"
NUMPTY="unlimited"
NUMSIGINFO="unlimited"
DCACHESIZE="unlimited"

PHYSPAGES="unlimited"
NUMIPTENT="unlimited"

Start the container[edit]

vzctl start 1001

Update /etc/resolv.conf on the container[edit]

Put the following into your container's /etc/resolv.conf:

search example.com
nameserver <ip address of your name server>

Install Required Packages[edit]

vzyum 1001 install binutils compat-db gcc gcc-c++ glibc \
 glibc-common libstdc++ libstdc++-devel gnome-libs make \
 pdksh sysstat libaio xscreensaver openmotif21 xorg-x11-xfs \
 usbutils urw-fonts shared-mime-info perl-libwww-perl \
 perl-XML-Parser perl-URI perl-HTML-Tagset perl-HTML-Parser \
 patch lvm2 intltool libIDL libart_lgpl libbonobo xterm \
 libcap libcroco libgnomecanvas libexif libgnomecups \
 libgnomeprint22 libsoup libwnck libxklavier

Check the following rpms are installed on the container[edit]

vzctl exec 1001 rpm -q binutils gcc gcc-c++ glibc gnome-libs \
 libstdc++ libstdc++-devel make pdksh sysstat xscreensaver libaio

Add Oracle User/Group[edit]

vzctl exec 1001 /usr/sbin/groupadd oinstall
vzctl exec 1001 /usr/sbin/groupadd dba
vzctl exec 1001 /usr/sbin/useradd -m -g oinstall -G dba oracle
vzctl exec 1001 id oracle

Set Password for the Oracle user[edit]

vzctl exec 1001 passwd oracle

Create Directories for Oracle Home/Data and the download directory[edit]

vzctl exec 1001 mkdir /home/oracle/10gR2_db
vzctl exec 1001 mkdir -p /u01/app/oracle/product/10.2.0/db_1
vzctl exec 1001 mkdir /u01/app/oracle/oradata
vzctl exec 1001 chown -R oracle:oinstall /u01/app/oracle /home/oracle/10gR2_db
vzctl exec 1001 chmod -R 775 /u01/app/oracle /home/oracle/10gR2_db
vzctl exec 1001 ln -s /usr/lib/libstdc++.so.6.0.3 /usr/lib/libstdc++.so.5

Put these values in /etc/sysctl.conf on the HN[edit]

Put these values in /etc/sysctl.conf on the HN:

kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.wmem_default=262144
net.core.rmem_max=262144
net.core.wmem_max=262144

Then execute on the HN the following command:

/sbin/sysctl -p


At this point the container is ready for Oracle installation. We take a backup of the container at this point in case we need to rebuild the system or do a clean Oracle install.

Shutdown the container and take a backup[edit]

vzctl stop 1001
cd /u01/backups
tar czpvf ve-1001-preOracle.tar.gz /vz/private/1001/ /etc/vz/conf/1001.conf

Start the container again[edit]

vzctl start 1001

Put oracle distro into the container[edit]

Copy the downloaded Oracle zip file to the container and change its ownership to "oracle" on the container.

cp /u01/software/10201_database_linux32.zip /vz/private/1001/home/oracle/10gR2_db/
vzctl exec 1001 chown oracle:oinstall /home/oracle/10gR2_db/10201_database_linux32.zip

Start installation[edit]

Now login as oracle on the ve-1001, and run the following commands:

cd /home/oracle/10gR2_db
unzip 10201_database_linux32.zip
cd database/
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
export DISPLAY=192.168.0.149:0

Make sure you can run xterm, then:

./runInstaller

When prompted to run scripts as root. Login as root and execute

export DISPLAY=192.168.0.149:0
/u01/app/oracle/oraInventory/orainstRoot.sh
/u01/app/oracle/product/10.2.0/db_1/root.sh

Update oracle's profile with the following

cd
vi /home/oracle/.bashrc
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=orcl


Delete installation files (optional)

cd /home/oracle/10gR2_db
rm -rf database

Time to take another backup of the container on the hardware node.

This backup will allow you to restore the container to the point where no database has yet been created.

vzctl stop 1001
cd /u01/backups
tar czpvf ve-1001-postOracleSoftware.tar.gz \
  /vz/private/1001/ /etc/vz/conf/1001.conf


Start the container

vzctl start 1001

Login as oracle and create the database

export DISPLAY=192.168.0.149:0
dbca


Create listener

netca

Now take another backup on the HN node

vzctl stop 1001
cd /u01/backups
tar czpvf ve-1001-postOracleDatabase.tar.gz \
  /vz/private/1001/ /etc/vz/conf/1001.conf

Oracle Help[edit]