The install was on a new host, I wasn't moving from Unix File System (UFS) to ASM, that might be another article.
The host had been set up by the Unix team for an Oracle installation, so I won't go into that here. This means the userids, groups etc have been set up.The SAN people should also have mounted or presented some disk for you to use.
So, first make sure you have a X-server on your PC and the manager is running. I usually use Xming which is free.
Open a putty session and set the DISPLAY variable to your PC, then navigate to the install media and run"./runInstaller"
If "X" is set up correctly, you should see this:
If not, you'll get a nasty message.
Anyway, let's assume you see the screen above. Unless your databases are open to the internet, Check "Skip software updates" otherwise it will try and communicate with Oracle.
Click "next"
My install was on a standalone server, so that's the thing I checked.
Click "next"
Assuming you're English, click "next"
The installer should find the SAN that was presented. Enter a relevant name, decide on the redundancy (external means the SAN handles things like RAID). Check the item next to the disk. Click "next"
Decide on the password. Click "next".
Pretty easy so far.
Decide on "DBA" or "OPER" or whatever, it depends on the site standards. Click "next"
You may see this, you can ignore it and click "Yes"
Enter the ORACLE_BASE location and the location you're going to install to. If you see the "INS-32008 Oracle Base location can't be the same as user home directory" ignore it, it's a warning.
Click "Yes":
Since this is a new install, the oraInventory location isn't in place, so this popped up
Make sure the location is as per the site standards. Click "next"
I ignored these - you may want to check. Click "next", then "yes".
If you see any other warnings you should investigate and fix.
Confirmation screen appears. Click "install"
Chug, chug, chug
If all goes well you should get the prompt to run root.sh
Login as root on the host, or get the Unix people to do it, and run root.sh, accept the defaults
$ /usr/local/bin/sudo
/usr/local/bin/sudo_root.sh root.sh
Performing root user
operation for Oracle 11g
The following
environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /apps/oracle/product/11.2.0/grid
Enter the full
pathname of the local bin directory: [/usr/local/bin]:
The file
"dbhome" already exists in /usr/local/bin. Overwrite it? (y/n) [n]:
The file
"oraenv" already exists in /usr/local/bin. Overwrite it? (y/n) [n]:
The file
"coraenv" already exists in /usr/local/bin. Overwrite it? (y/n) [n]:
Creating
/var/opt/oracle/oratab file...
Entries will be
added to the /var/opt/oracle/oratab file as needed by
Database
Configuration Assistant when a database is created
Finished running
generic part of root script.
Now product-specific
root actions will be performed.
Using configuration
parameter file: /apps/oracle/product/11.2.0/grid/crs/install/crsconfig_params
Creating trace
directory
LOCAL ADD MODE
Creating OCR keys
for user 'oracle', privgrp 'dba'..
Operation
successful.
LOCAL ONLY MODE
Successfully
accumulated necessary OCR keys.
Creating OCR keys
for user 'root', privgrp 'root'..
Operation
successful.
CRS-4664: Node
solhost1 successfully pinned.
Adding Clusterware
entries to inittab
solhost1 2013/11/07 15:04:29 /apps/oracle/product/11.2.0/grid/cdata/pcat401/backup_20131107_150429.olr
Successfully
configured Oracle Grid Infrastructure for a Standalone Server
Click "close". Taa Daa. ASM has been installed.
But wait, there's more. Check that the ASM instance is running:
$ ps -ef | grep pmon
oracle
4965 1 0 15:07:27 ? 0:01 asm_pmon_+ASM
You should also create the ASM listener, specify the port as per the site standards:
bash-3.00$ srvctl
add listener -l LISTENER_ASM -p "TCP:1531" -o
/apps/oracle/product/11.2.0/grid
Back up the listener.ora and update it to include the ASM listener settings:
# listener.ora
Network Configuration File: /apps/oracle/product/11.2.0/grid/network/admin/listener.ora
# Generated by
Oracle configuration tools.
LISTENER_ASM=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_ASM))))
LISTENER_ASM =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1531))
(ADDRESS = (PROTOCOL = TCP)(HOST = solhost1)(PORT = 1531))
)
)
ADR_BASE_LISTENER =
/apps/oracle
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_ASM=ON
SID_LIST_LISTENER_ASM
= (
SID_LIST =
(SID_DESC = (SID_NAME = +ASM) (ORACLE_HOME =
/apps/oracle/product/11.2.0/grid))
)
Check the listener is running:
bash-3.00$ ps -ef |
grep tns
oracle
4737 1 0 15:06:25 ? 0:00 /apps/oracle/product/11.2.0/grid/bin/tnslsnr
LISTENER -inherit
oracle
5824 5239 0 15:17:17 pts/5 0:00 grep tns
If not, start it:
bash-3.00$ srvctl
start listener -l LISTENER_ASM
Check again:
bash-3.00$ ps -ef |
grep tns
oracle
5836 1 0 15:18:00 ? 0:00 /apps/oracle/product/11.2.0/grid/bin/tnslsnr
LISTENER_ASM -inherit
oracle
4737 1 0 15:06:25 ? 0:00 /apps/oracle/product/11.2.0/grid/bin/tnslsnr
LISTENER -inherit
oracle
5842 5239 0 15:18:08 pts/5 0:00 grep tns
You need to set the LOCAL_LISTENER parameter in the database:
SQL> alter system
set local_listener='(ADDRESS = (PROTOCOL=TCP)(HOST=solhost1)(PORT=1531))';
System altered.
SQL> show
parameter local
NAME TYPE VALUE
------------------------------------
----------- ------------------------------
local_listener string (ADDRESS = (PROTOCOL=TCP)(HOST
=solhost1)(PORT=1531))At this site, they don't like the spfile on ASM, so they move it to a UFS. This is how to do it in case that's what you want to do.
Connect to the ASM instance, create a pfile, then create a new spfile from that on a UFS.
bash-3.00$ . oraenv
ORACLE_SID = [+ASM]
?
bash-3.00$ sqlplus
"/ as sysasm"
SQL*Plus: Release
11.2.0.3.0 Production on Thu Nov 7 15:21:11 2013
Copyright (c) 1982,
2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise
Edition Release 11.2.0.3.0 - 64bit Production
With the Automatic
Storage Management option
SQL> create pfile
from spfile;
File created.
SQL> shutdown
immediate
ASM diskgroups
volume disabled
ASM diskgroups
dismounted
ASM instance
shutdown
SQL> create
spfile='/apps/oracle/product/11.2.0/grid/dbs/spfile+ASM.ora' from pfile;
File created.
SQL> startup
ASM instance started
Total System Global
Area 593100800 bytes
Fixed Size 2161584 bytes
Variable Size 565773392 bytes
ASM Cache 25165824 bytes
ORA-15110: no
diskgroups mounted
Ignore that last error.
Stop and restart all cluster services - ignore any "cannot stop" messages:
bash-3.00$ crsctl
stop resource -all
CRS-2500: Cannot
stop resource 'ora.SOLHOT1_DATA01.dg' as it is not running
CRS-2500: Cannot
stop resource 'ora.diskmon' as it is not running
CRS-2500: Cannot
stop resource 'ora.ons' as it is not running
CRS-2673: Attempting
to stop 'ora.evmd' on 'solhost1'
CRS-2673: Attempting
to stop 'ora.asm' on 'solhost1'
CRS-2673: Attempting
to stop 'ora.LISTENER.lsnr' on 'solhost1'
.
.
.
bash-3.00$ crsctl
start resource -all
CRS-2501: Resource
'ora.ons' is disabled
CRS-2672: Attempting
to start 'ora.LISTENER.lsnr' on 'solhost1'
CRS-2672: Attempting
to start 'ora.cssd' on 'solhost1'
CRS-2672: Attempting
to start 'ora.diskmon' on 'solhost1'
.
.
.
Ignore any messages.
Check to see that the new spfile is in use -sign into the ASM instance again:
SQL> show
parameter spfile
NAME TYPE VALUE
------------------------------------
----------- ------------------------------
spfile string /apps/oracle/product/11.2.0/grid/dbs/spfile+ASM.ora
Use asmcmd to connect to ASM and remove the old spfile:
bash-3.00$ asmcmd -p
ASMCMD [+] > ls
SOLHOST1_DATA01/
ASMCMD [+] > cd
P*
ASMCMD
[+SOLHOST1_DATA01] > ls
ASM/
ASMCMD
[+SOLHOST1_DATA01] > cd A*
ASMCMD
[+SOLHOST1_DATA01/ASM] > ls
ASMPARAMETERFILE/
ASMCMD
[+SOLHOST1_DATA01/ASM] > cd A*
ASMCMD
[+SOLHOST1_DATA01/ASM/ASMPARAMETERFILE] > ls
REGISTRY.253.830876839
ASMCMD [+SOLHOST1_DATA01/ASM/ASMPARAMETERFILE] > rm
REGISTRY.253.830876839ASM install is now complete. Time for a cup of coffee.