Category Archives: linux

Problem with RHEL 5.4 and Oracle RAC

 

I Ran into an issue while working with Oracle Corporation on 11gR2 RAC and RHEL 5.4 using OS layer files and OCFS2 for storage.  Now Oracle is currently saying that no known problem exists, but I thought I would drop a note here, just in case anyone comes across the same situation.   It appears that when you upgrade your RHEL kernel from version 2.6.18-194.26.1.el5 to 2.6.18-238.1.1.el5 and of course upgrade your OCFS2 drivers to the same version.   Access to the shared files of RAC becomes an issue for Oracle upon installation and execution of root.sh.  

We struggled with this for two weeks, and from the start said the only thing we did was upgrade the kernel.  However, Oracle repeatedly said all Kernels above 2.16.18 have no issues.    Finally, we downgraded the system back to the original kernel 2.6.18-194.26.1.el5 and re-applied the OCFS2 RPMs for that kernel and everything began to work. 

So if you are have problems with Oracle 11g RAC install on RHEL 5.4 with kernel 2.6.18-238.1.1.el5 and can find no reasonable solution.  You may want to downgrade your kernel and try again.   It actually only took 45 minutes to downgrade, update the Oracle RPMs and provided a solution to a two week old problem. 

 

Larry J. Catt, OCP 9i, 10g
oracle@allcompute.com
www.allcompute.com

SSH, PING, and RSH – Permissions causing failure on Oracle RAC Installation

Oracle RAC requires permissions to networking components which are typically restricted on most systems. Most notable are permissions to utilities SSH, PING, and RSH. If you are attempting to install Oracle RAC software and you are receiving failures in communications; check the permissions of these utilities for a possible cause.

1. Logon to your Linux server as root.

2. Change the permissions on the following files to u+s.

chmod u+s /bin/ping
chmod u+s /usr/bin/ssh
chmod u+s /usr/bin/rsh

This completes allowing Oracle permissions to SSH, PING, and RSH for RAC configurations.
Larry J. Catt, OCP 9i, 10g
oracle@allcompute.com
www.allcompute.com

Required packages for Oracle 11g RDBMS install on LINUX

The installation of Oracle RDBMS software requires supporting OS level functionality to successfully complete and operate. This article outlines the RPM checks which should be completed before the installation of Oracle 11g RDBMS is begun.

1. Logon to your Linux Server as the root user.

2. Below is a listing of the RPM Oracle gives as required for a successful 11g RDBMS install. However, RPMs are continuously updated so the version on your system may be newer than what was given by the manufacturer

binutils-2.17.50.0.6
compat-libstdc++-33-3.2.3
elfutils-libelf-0.125
elfutils-libelf-devel-0.125
elfutils-libelf-devel-static-0.125
gcc-4.1.2
gcc-c++-4.1.2
glibc-2.5-24
glibc-common-2.5
glibc-devel-2.5
glibc-headers-2.5
kernel-headers-2.6.18
ksh-20060214
libaio-0.3.106
libaio-devel-0.3.106
libgcc-4.1.2
libgomp-4.1.2
libstdc++-4.1.2
libstdc++-devel-4.1.2
make-3.81
numactl-devel-0.9.8.i386
sysstat-7.0.2
unixODBC-2.2.11
unixODBC-devel-2.2.11

3. Thus, when investigating if the RPM exists on your system, you should not include the version number. In this example we will check for the existence of RPM binutils-2.17.50.0.6. Use the rpm –qa command to gather all installed packages, then lookup for the specific one with grep.


[root@mylinux1 ~]# rpm -qa|grep binutils
binutils-2.17.50.0.6-14.el5
[root@mylinux1 ~]#

4. As seen above the actual version of the rpm binutils-2.17.50.0.6 is an exact match, but it does not have to be. As long as the installed package has a version greater than the required version of 2.17.50.0.6, it meets our needs for 11g RDBMS install.

5. Repeat these steps for each required package.
This completes checking for required Oracle 11g RDBMS packages.

Larry J. Catt, OCP 9i, 10g
oracle@allcompute.com
www.allcompute.com

Required packages for Oracle 10g RDBMS install on LINUX

The installation of Oracle RDBMS software requires supporting OS level functionality to successfully complete and operate. This article outlines the check which should be done before the installation of Oracle 10g RDBMS is begun.

1. Logon to your Linux Server as the root user.

2. Below is a listing of the RPMs Oracle gives as required for a successful 10g RDBMS install. However, RPMs are continuously updated so the version on your system may be newer than shown below.

libgomp-4.1.2-42.el5.x86_64.rpm
kernel-headers-2.6.18-92.el5.x86_64.rpm
glibc-headers-2.5-24.x86_64.rpm
libstdc++-devel-4.1.2-42.el5.x86_64.rpm
sysstat-7.0.2-1.el5.x86_64.rpm
glibc-devel-2.5-24.x86_64.rpm
libaio-devel-0.3.106-3.2.x86_64.rpm
gcc-4.1.2-42.el5.x86_64.rpm
gcc-c++-4.1.2-42.el5.x86_64.rpm
elfutils-libelf-devel-static-0.125-3.el5.x86_64.rpm
elfutils-libelf-devel-0.125-3.el5.x86_64.rpm
compat-db-4.2.52-5.1.x86_64.rpm
compat-gcc-34-3.4.6-4.x86_64.rpm
compat-gcc-34-c++-3.4.6-4.x86_64.rpm
gdb-6.5-37.el5.x86_64.rpm
libtermcap-devel-2.0.8-46.1.x86_64.rpm
readline-devel-5.1-1.1.x86_64.rpm
unixODBC-2.2.11-7.1.x86_64.rpm
unixODBC-devel-2.2.11-7.1.x86_64.rpm
glibc-devel-2.5-24.i386.rpm
libXp-1.0.0-8.1.el5.i386.rpm
libstdc++-devel-4.1.2-42.el5.i386.rpm
unixODBC-2.2.11-7.1.i386.rpm
unixODBC-devel-2.2.11-7.1.i386.rpm
libaio-devel-0.3.106-3.2.i386.rpm

3. When investigating if the RPM exists on your system, you should not include the version number. In this example we will check for the existence of RPM libgomp-4.1.2-42.el5.x86_64.rpm. Use the rpm –qa command to gather all installed packages, then lookup the specific one with grep.

[root@mylinux1 ~]# rpm -qa|grep libgomp
libgomp-4.4.4-13.el5
[root@mylinux1 ~]#

4. As seen above the actual version of the rpm libgomp is 4.4.4 which is greater than the required version of 4.1.2 and meets our needs for 10g RDBMS install.

5. Repeat these steps for each required package.

This completes checking for required Oracle 10g RDBMS packages.

Larry J. Catt, OCP 9i, 10g
oracle@allcompute.com
www.allcompute.com

Formatting of OCFS2 Shared Storage

The Oracle OCFS2 file system can be used to format shared storage for multiple node access. To accomplish this task, OCFS2 rpm must be installed and configured. Below is the procedure for preparing the shared disks for use, once OCFS2 has been installed and configured.

1. Logon to one of your Oracle servers as the root user.

2. Locate the shared storage presented in the directory /dev/mapper on both nodes.

-mylinux1
[root@mylinux1 ~]# ll /dev/mapper
total 0
crw——- 1 root root 10, 63 Jan 22 17:44 control
brw-rw—- 1 root disk 253, 3 Jan 22 17:45 DATA-50GB-02
brw-rw—- 1 root disk 253, 8 Jan 22 17:45 DATA-50GB-03
brw-rw—- 1 root disk 253, 1 Jan 22 17:45 VOTE-1GB-05
brw-rw—- 1 root disk 253, 2 Jan 22 17:45 VOTE-1GB-06
brw-rw—- 1 root disk 253, 4 Jan 22 17:45 HOME-50GB-02
[root@mylinux1 ~]#

-mylinux2
[root@mylinux2 ~]# ll /dev/mapper
total 0
crw——- 1 root root 10, 63 Jan 22 17:44 control
brw-rw—- 1 root disk 253, 3 Jan 22 17:45 DATA-50GB-02
brw-rw—- 1 root disk 253, 8 Jan 22 17:45 DATA-50GB-03
brw-rw—- 1 root disk 253, 1 Jan 22 17:45 VOTE-1GB-05
brw-rw—- 1 root disk 253, 2 Jan 22 17:45 VOTE-1GB-06
brw-rw—- 1 root disk 253, 4 Jan 22 17:45 HOME-50GB-03
[root@mylinux2 ~]#

3. The shared storage will be mounted on each node of the RAC. In this example our shared storage includes the following:


/dev/mapper/DATA-50GB-02
/dev/mapper/DATA-50GB-03
/dev/mapper/VOTE-1GB-05
/dev/mapper/VOTE-1GB-06

4. As the root user, format each shared storage device with the following command: NOTE: formatting of the share disks is only performed on a single node, repeating on additional nodes will destroy all information.

Example:

/sbin/mkfs.ocfs2 /dev/mapper/DATA-50GB-02

[root@mylinux1 ~]# /sbin/mkfs.ocfs2 /dev/mapper/DATA-50GB-02
mkfs.ocfs2 1.4.4
Cluster stack: classic o2cb
Overwriting existing ocfs2 partition.
Proceed (y/N): y
Label:
Features: sparse backup-super unwritten inline-data strict-journal-super
Block size: 2048 (11 bits)
Cluster size: 4096 (12 bits)
Volume size: 1069252608 (261048 clusters) (522096 blocks)
Cluster groups: 17 (tail covers 7096 clusters, rest cover 15872 clusters)
Extent allocator size: 4194304 (1 groups)
Journal size: 33554432
Node slots: 2
Creating bitmaps: done
Initializing superblock: done
Writing system files: done
Writing superblock: done
Writing backup superblock: 0 block(s)
Formatting Journals: done
Growing extent allocator: done
Formatting slot map: done
Writing lost+found: done
mkfs.ocfs2 successful

[root@mylinux1 ~]#

This procedure is repeated for each shared storage device.

Larry J. Catt, OCP 9i, 10g
oracle@allcompute.com
www.allcompute.com

CRS-4640 and CRS-4000 during execution of root.sh

The following procedure will help in resolving error CRS-4640 and CRS-4000 during the execution of root.sh script in the installation of Oracle 11g clusteware.

ERROR:
Adding daemon to inittab
CRS-4640: Oracle High Availability Services is already active
CRS-4000: Command Start failed, or completed with errors.
ohasd failed to start: Inappropriate ioctl for device
ohasd failed to start at /u01/app/11.2.0/grid/crs/install/rootcrs.pl line 443.
[root@mylinux1 grid]#

CAUSE: Previous install of clusterware not properly removed.

FIX:

1. Execute the script $CRS_HOME/crs/install/rootcrs.pl -deconfig -force

[root@mylinux1 install]# ./rootcrs.pl -deconfig -force
2010-04-1515:43:23: Parsing the host name
2010-04-1515:43:23: Checking for super user privileges
2010-04-1515:43:23: User has super user privileges
Using configuration parameter file: ./crsconfig_params
PRCR-1035 : Failed to look up CRS resource ora.cluster_vip.type for 1
PRCR-1068 : Failed to query resources
Cannot communicate with crsd
PRCR-1070 : Failed to check if resource ora.gsd is registered
Cannot communicate with crsd
PRCR-1070 : Failed to check if resource ora.ons is registered
Cannot communicate with crsd
PRCR-1070 : Failed to check if resource ora.eons is registered
Cannot communicate with crsd

ACFS-9200: Supported
CRS-4535: Cannot communicate with Cluster Ready Services
CRS-4000: Command Stop failed, or completed with errors.
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on ‘mylinux1’
CRS-2673: Attempting to stop ‘ora.cssdmonitor’ on ‘mylinux1’
CRS-2673: Attempting to stop ‘ora.evmd’ on ‘mylinux1’
CRS-2673: Attempting to stop ‘ora.mdnsd’ on ‘mylinux1’
CRS-2673: Attempting to stop ‘ora.gpnpd’ on ‘mylinux1’
CRS-2677: Stop of ‘ora.cssdmonitor’ on ‘mylinux1’ succeeded
CRS-2677: Stop of ‘ora.mdnsd’ on ‘mylinux1’ succeeded
CRS-2677: Stop of ‘ora.evmd’ on ‘mylinux1’ succeeded
CRS-2677: Stop of ‘ora.gpnpd’ on ‘mylinux1’ succeeded
CRS-2673: Attempting to stop ‘ora.gipcd’ on ‘mylinux1’
CRS-2677: Stop of ‘ora.gipcd’ on ‘mylinux1’ succeeded
CRS-2793: Shutdown of Oracle High Availability Services-managed resources on ‘mylinux1’ has completed
CRS-4133: Oracle High Availability Services has been stopped.
Successfully deconfigured Oracle clusterware stack on this node
[root@mylinux1 install]#

2. Once you have received the message “Successfully deconfigured Oracle clusterware”, then you can re-execute the shell script $CRS_HOME/root.sh

[root@mylinux1 grid]# ./root.sh
…
…
…
…
Configure Oracle Grid Infrastructure for a Cluster … succeeded
Updating inventory properties for clusterware
Starting Oracle Universal Installer…

Checking swap space: must be greater than 500 MB. Actual 17625 MB Passed
The inventory pointer is located at /etc/oraInst.loc
The inventory is located at /u01/app/oraInventory
‘UpdateNodeList’ was successful.
[root@mylinux1 grid]#

This completes the resolution to Oracle clusterware errors CRS-4640 and CRS-4000 during the execution of root.sh.

Larry J. Catt, OCP 9i, 10g
oracle@allcompute.com
www.allcompute.com

Creation of Oracle OS accounts for 11g RAC install on Linux

Deployment of Oracle software requires the creation of multiple groups and users on UNIX and Linux servers to properly configure and administrate. This procedure covers the basic creation of Oracle groups and users for a standard 11g RAC implementation.

1. Create group accounts on all nodes: NOTE: id must be exactly the same

/usr/sbin/groupadd -g 501 oinstall
/usr/sbin/groupadd -g 502 dba
/usr/sbin/groupadd -g 504 asmadmin
/usr/sbin/groupadd -g 506 asmdba
/usr/sbin/groupadd -g 507 asmoper

2. Create user accounts on all nodes: NOTE: id must be exactly the same

/usr/sbin/useradd -u 501 -g oinstall -G asmadmin,asmdba,asmoper grid
/usr/sbin/useradd -u 502 -g oinstall -G dba,asmdba oracle

3. Set password for GRID and ORACLE account to be the same on every node.

passwd oracle
Changing password for user oracle.
New UNIX password: password
retype new UNIX password: password
passwd: all authentication tokens updated successfully.
passwd grid
Changing password for user oracle.
New UNIX password: password
retype new UNIX password: password
passwd: all authentication tokens updated successfully.

This completes the standard configuration creation of Oracle groups and users on Linux.

Larry Catt, OCP 9i, 10g
oracle@allcompute.com
www.allcompute.com

Change hostname of your Linux server

Oracle RAC depends heavily on the network, hostnames, and DNS service within a network. In this article we will show how to change the hostname of a LINUX server for the use of Oracle RAC to include the domain name.
1. Logon to your LINUX server as the root user.
2. Open the file /etc/sysconfig/network.
3. Update the parameter HOSTNAME to include the domain name.
[root@mylinux1 ~]# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=mylinux1.mydomain.com

[root@mylinux1 ~]#

4. Reboot the server.
5. Issue the command hostname and you will see it is updated.
[root@mylinux1 ~]# hostname
mylinux1.mydomain.com
[root@mylinux1 ~]#

This completes changing the hostname of a LINUX server for Oracle RAC.

Larry J. Catt, OCP9i, 10g
oracle@allcompute.com
www.allcompute.com

Oracle Installation – Add swap space in UNIX or Linux environment

The typical Oracle installation will require more swap space on a system, due to prerequisite checks performed by the installer, than is typical available. The following procedure shows how to create additional swap in Unix or Linux.

1. Create a file on /u01 of 12gb with the dd command. NOTE: Repeat on each RAC node.

dd if=/dev/zero of=/u01/tempswap bs=1k count=12000000

Example:

[root@mylinux1 ~]# dd if=/dev/zero of=/u01/tempswap bs=1k count=12000000
12000000+0 records in
12000000+0 records out
12384000000 bytes (12 GB) copied, 64.2111 seconds, 255 MB/s
[root@mylinux1 ~]#

2. Then format your new file with the mke2fs command. NOTE: Repeat on each RAC node.

/sbin/mke2fs /u01/tempswap

Example:

[root@mylinux1 ~]# /sbin/mke2fs /u01/tempswap
mke2fs 1.39 (29-May-2006)
/u01/tempswap is not a block special device.
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
2003424 inodes, 4000000 blocks
200000 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4097835008
123 block groups
32768 blocks per group, 32768 fragments per group
12288 inodes per group
Superblock backups stored on blocks:
32768, 98304, 123840, 229376, 294912, 819200, 884736, 1205632, 2654208

Writing inode tables: done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 29 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@mylinux1 ~]#

3. Make the additional swap space with the mkswap command. NOTE: Repeat on each RAC node.

/sbin/mkswap /u01/tempswap

Example:

[root@mylinux1 ~]# /sbin/mkswap /u01/tempswap
Setting up swapspace version 1, size = 12383995 kB
[root@mylinux1 ~]#

4. Make the swap space available to the OS with the command swapon. NOTE: This will have to be executed after every reboot. Repeat on each RAC node.

/sbin/swapon /u01/tempswap

Example:

[root@mylinux1 ~]# /sbin/swapon /u01/tempswap
[root@mylinux1 ~]#

Larry J. Catt, OCP 9i, 10g
oracle@allcompute.com
www.allcompute.com

Oracle Installation files extraction with PAX

For a Unix or Linux installation, Oracle places its installation files in cpio (archiving format) to contain multiple directory structures in a single file. This article describes the use of the pax utility to extract Oracle installation files.

1. Download your oracle installation files from www.oracle.com

2. Logon to your Oracle database server and place the installation files in the appropriate location.

3. Extract the cpio.gz installation files with the pax utility and options -rvzf

pax -rvzf (name_of_cpio_file.cpio.gz)

4. If the cpio archive file is not compressed, use the pax utility and options –rvf.

pax -rvf (name_of_cpio_file.cpio)

5. This completes unpacking of Oracle installation files with the utility pax.

Larry J. Catt, OCP 9i, 10g
oracle@allcompute.com
www.allcompute.com