I. As RDBMS and GI/ASM user:
1) Shutdown all Databases (as RDBMS user) utilizing the ASM instance(s)
Identify the database need to be shutdown that is clients of ASM instance.
SELECT instance_name, db_name FROM v$asm_client WHERE status = 'CONNECTED';
INSTANCE_NAME
+ASM
DB_NAME
gridrep
AS oracle User
# sudo su - oracle
# export ORACLE_SID=gridrep
# sqlplus / as sysdba
SQL> shutdown immdediate;
2) Shutdown all ASM instance(s)
AS ASM User
# sudo su - grid
#export ORACLE_SID= +ASM
# sqlplus / as sysdba
SQL> shutdown immdediate;
3) Stop all other related services like the Enterprise Manager Agent, etc., if being used.
I am doing this in OMS so stopping Agent and OMS:
Stop Agent:
ORACLE_CONFIG_HOME=/opt/oracle/Middleware/gc_inst/em/EMGC_OMS1
ORACLE_BASE=/opt/oracle
ORACLE_HOME=/opt/oracle/Middleware/agent/agent_inst
PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/oracle/bin
export ORACLE_BASE ORACLE_HOME ORACLE_CONFIG_DIR PATH
emctl stop agent
Stop OMS:
ORACLE_CONFIG_HOME=/opt/oracle/Middleware/gc_inst/em/EMGC_OMS1
ORACLE_BASE=/opt/oracle
ORACLE_HOME=/opt/oracle/Middleware/oms
PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/oracle/bin
export ORACLE_BASE ORACLE_HOME ORACLE_CONFIG_DIR PATH
emctl stop oms
# /etc/init.d/oracleasm listdisks
GRIDREP_0001
# ls -l /dev/oracleasm/disks/
total 0
brw-rw---- 1 grid asmadmin 105, 1 Jan 22 16:18 GRIDREP_0001
# for i in `/etc/init.d/oracleasm listdisks`
do
v_asmdisk=`/etc/init.d/oracleasm querydisk -d $i | awk '{print $2}'`
v_minor=`/etc/init.d/oracleasm querydisk -d $i | awk -F[ '{print $2}'| awk -F] '{print $1}' | awk -F, '{print $1}'`
v_major=`/etc/init.d/oracleasm querydisk -d $i | awk -F[ '{print $2}'| awk -F] '{print $1}' | awk -F, '{print $2}'`
v_device=`ls -la /dev | grep $v_minor | grep $v_major | awk '{print $10}'`
echo "ASM disk $v_asmdisk based on /dev/$v_device [$v_minor $v_major]"
done
ASM disk "GRIDREP_0001" based on /dev/ [105 1]
Make a reference note of the ASM disk above which will be useful later for double check everything.
2) Make a backup copy of the file, /etc/sysconfig/oracleasm
a. # ls -la /etc/sysconfig/oracleasm
lrwxrwxrwx 1 root root 24 Mar 8 2012 /etc/sysconfig/oracleasm -> oracleasm-_dev_oracleasm
b. # cp /etc/sysconfig/oracleasm-_dev_oracleasm /etc/sysconfig/oracleasm-_dev_oracleasm.orig
3) Shutdown all services:
# /opt/grid/product/11.2.0.3/bin/crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora.DATA.dg ora....up.type ONLINE ONLINE dbms2
ora....ER.lsnr ora....er.type ONLINE ONLINE dbms2
ora.asm ora.asm.type ONLINE ONLINE dbms2
ora.cssd ora.cssd.type ONLINE ONLINE dbms2
ora.diskmon ora....on.type OFFLINE OFFLINE
ora.evmd ora.evm.type ONLINE ONLINE dbms2
ora.gridrep.db ora....se.type ONLINE ONLINE dbms2
ora.ons ora.ons.type OFFLINE OFFLINE
# /opt/grid/product/11.2.0.3/bin/crsctl stop resource -all
a) Stop HAS:
# /opt/grid/product/11.2.0.3/bin/crsctl stop has
b) Check HA to ensure it is down:
#/opt/grid/product/11.2.0.3/bin/crsctl check has
c) Disable HA for auto startup:
#/opt/grid/product/11.2.0.3/bin/crsctl disable has
d) Check /etc/inittab and comment out respawn of ohasd.
1. # vi /etc/inittab
2. Comment out (#) the following line in /etc/inittab:
#h1:35:respawn:/etc/init.d/init.ohasd run >/dev/null 2>&1 </dev/null
3. # /sbin/init q
4. Ensure that init.ohasd is now not running
ps -ef|grep init
e) Stop CRS:
#/opt/grid/product/11.2.0.3/bin/crsctl stop crs
f) Check CSS and CRS to ensure it is down:
#/opt/grid/product/11.2.0.3/bin/crsctl check css
#/opt/grid/product/11.2.0.3/bin/crsctl crsctl check crs
III. Stop oracleasm (as root)
1) Stop oracleasm:
a) # /etc/init.d/oracleasm stop
Dropping Oracle ASMLib disks: [ OK ]
Shutting down the Oracle ASMLib driver: [ OK ]
b) # /etc/init.d/oracleasm status
Checking if ASM is loaded: no
Checking if /dev/oracleasm is mounted: no
OR
# service oracleasm status
Checking if ASM is loaded: no
Checking if /dev/oracleasm is mounted: no
2) Disable oracleasm for not starting on reboot:
# /etc/init.d/oracleasm disable
Writing Oracle ASM library driver configuration [ OK ]
Unmounting ASMlib driver filesystem [ OK ]
Unloading module "oracleasm" [ OK ]
IV. Upgrade OS Kernel (System Administrator will do this.):
1) Verify the new kernel version:
# rpm -q oracleasm-`uname -r`
oracleasm-2.6.18-128.1.1.0.1.el5xen-2.0.5-1.el5
The kernel module "oracleasm" is required to be an exact match to the running kernel version in order for ASMLib to operate.
2) Deinstall existing oracleasm driver packages (optional).
3) Download the correct ASMLib drivers and Install
Oracle Enterprise Linux users of ASMLib should download the same product version for the new, upgrade kernel using up2date/ULN (http://linux.oracle.com) only. For steps to upgrade OS Linux Karnel, please check Doc ID 842775.1
Red Hat Enterprise Linux users ASMLib should download the same product version for the new, upgrade kernel from OSS and OTN i.e.:
http://www.oracle.com/technetwork/server-storage/linux/downloads/index-088143.html
You can use following commands to install drivers. To use the up2date you should register the system in the Unbreakable Linux Network if you have not registered then download the RPM's from above link and install using rpm -ivh
# up2date -i oracleasm-support oracleasmlib oracleasm-`uname -r`
4) Check to determine that these packages are installed correctly:
# rpm -qa | grep oracleasm
oracleasm-2.6.18-128.1.1.0.1.el5xen-2.0.5-1.el5
oracleasmlib-2.0.4-1.el5
oracleasm-support-2.1.2-1.el5
Now the kernel and the ASMLib should have same version
5) Check the newly installed ASM Driver
# ls -l /lib/modules/$(uname -r)/kernel/drivers/addon/oracleasm
total 120
-rw-r--r-- 1 root root 116168 Jan 10 2015 oracleasm.ko
V. Reboot server to test and verify the new kernel (System Administrator will do this.):
Note: To ensure complete and proper system initialization, revert any temporary file modifications previously implemented, such as /boot/grub/grub.conf, /etc/inittab, /etc/fstab. Where necessary, reboot the system again to verify proper and expected on-boot load of all intended drivers.
Proceed to verify successful network connectivity, storage accessibility, etc. Once verified, further verify successful application functionality, usage and performance.
1) The package versions should match. Run the following command after booting to verify that the oracleasm kernel module matches and will load correctly:
# rpm -q oracleasm-`uname -r`
oracleasm-2.6.18-128.1.1.0.1.el5xen-2.0.5-1.el5
VI. Setup oracleasm (as root):
1) Configure oracleasm
# /etc/init.d/oracleasm configure
Configuring the Oracle ASM library driver.
This will configure the on-boot properties of the Oracle ASM library
driver. The following questions will determine whether the driver is
loaded on boot and what permissions it will have. The current values
will be shown in brackets ('[]'). Hitting without typing an
answer will keep that current value. Ctrl-C will abort.
Default user to own the driver interface []: grid ---> use GI/ASM user name
Default group to own the driver interface []: asmadmin ---> use GI/ASM group name
Start Oracle ASM library driver on boot (y/n) [n]: y
Fix permissions of Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration [ OK ]
Creating /dev/oracleasm mount point [ OK ]
Loading module "oracleasm" [ OK ]
Mounting ASMlib driver filesystem [ OK ]
Scanning system for ASM disks [ OK ]
2) Verify oracleasm is installed (run on each node, if RAC):
# /etc/init.d/oracleasm status
Checking if ASM is loaded: yes
Checking if /dev/oracleasm is mounted: yes
OR
# /etc/init.d/oracleasm status
Checking if ASM is loaded: running
Checking if /dev/oracleasm is mounted: running
OR
# service oracleasm status
Checking if ASM is loaded: yes
Checking if /dev/oracleasm is mounted: yes
3) Scan ASM disks:
# /etc/init.d/oracleasm scandisks
Scanning system for ASM disks [ OK ]
4) List ASM disks:
# /etc/init.d/oracleasm listdisks
GRIDREP_0001
# ls -l /dev/oracleasm/disks/
total 0
brw-rw---- 1 grid asmadmin 105, 1 Jan 22 16:18 GRIDREP_0001
5) Check the ASM device IDs:
for i in `/etc/init.d/oracleasm listdisks`
do
v_asmdisk=`/etc/init.d/oracleasm querydisk -d $i | awk '{print $2}'`
v_minor=`/etc/init.d/oracleasm querydisk -d $i | awk -F[ '{print $2}'| awk -F] '{print $1}' | awk -F, '{print $1}'`
v_major=`/etc/init.d/oracleasm querydisk -d $i | awk -F[ '{print $2}'| awk -F] '{print $1}' | awk -F, '{print $2}'`
v_device=`ls -la /dev | grep $v_minor | grep $v_major | awk '{print $10}'`
echo "ASM disk $v_asmdisk based on /dev/$v_device [$v_minor $v_major]"
done
ASM disk "GRIDREP_0001" based on /dev/ [105 1]
6) Check the file, /etc/sysconfig/oracleasm:
# cat /etc/sysconfig/oracleasm
Ensure that this file has the same values as the /etc/sysconfig/oracleasm-_dev_oracleasm.orig that was copied in step "2) Make a backup copy of the file, /etc/sysconfig/oracleasm:".
Check all values...for multipathing, especially values for ORACLEASM_SCANORDER and ORACLEASM_SCANEXCLUDE.
If the values are not the same (due to upgrade), then, modify/save the now over-written file, /etc/sysconfig/oracleasm-_dev_oracleasm to be the same as the /etc/sysconfig/oracleasm-_dev_oracleasm.orig.
VII. At this point, Oracle recommends running the "$ORACLE_HOME/bin/relink all" command for the Oracle binaries:
NOTE: Ideally, updated libraries also would work fine with Oracle binaries as OS vendors maintain backward compatibility...but it wouldn't hurt to relink...it also checks missing RPMs.
For CRS home, there is no need to relink the Clusterware binaries.
VIII. Enable all previously disabled services (as root):
1) Enable HA for auto startup:
# /opt/grid/product/11.2.0.3/bin/crsctl enable has
2) Check /etc/inittab and uncomment out respawn of ohasd:
1. # vi /etc/inittab
2. Uncomment out (remove #) the following line in /etc/inittab:
h1:35:respawn:/etc/init.d/init.ohasd run >/dev/null 2>&1 </dev/null
and then run "init q" as the the root user
X. Reboot server to test and verify ASM disks:
a) # rpm -qa | grep oracleasm
oracleasm-2.6.18-128.1.1.0.1.el5xen-2.0.5-1.el5
oracleasmlib-2.0.4-1.el5
oracleasm-support-2.1.2-1.el5
b) # /etc/init.d/oracleasm status
Checking if ASM is loaded: yes
Checking if /dev/oracleasm is mounted: yes
OR
# /etc/init.d/oracleasm status
Checking if ASM is loaded: running
Checking if /dev/oracleasm is mounted: running
OR
# service oracleasm status
Checking if ASM is loaded: yes
Checking if /dev/oracleasm is mounted: yes
c) # /etc/init.d/oracleasm listdisks
GRIDREP_0001
d)
for i in `/etc/init.d/oracleasm listdisks`
do
v_asmdisk=`/etc/init.d/oracleasm querydisk -d $i | awk '{print $2}'`
v_minor=`/etc/init.d/oracleasm querydisk -d $i | awk -F[ '{print $2}'| awk -F] '{print $1}' | awk -F, '{print $1}'`
v_major=`/etc/init.d/oracleasm querydisk -d $i | awk -F[ '{print $2}'| awk -F] '{print $1}' | awk -F, '{print $2}'`
v_device=`ls -la /dev | grep $v_minor | grep $v_major | awk '{print $10}'`
echo "ASM disk $v_asmdisk based on /dev/$v_device [$v_minor $v_major]"
done
ASM disk "GRIDREP_0001" based on /dev/ [105 1]
XI. Verify all ASM disks mounted (as ASM user):
SELECT NAME, DISK_NUMBER, MODE_STATUS, STATE, MOUNT_STATUS, HEADER_STATUS,PATH from v$asm_disk;