Monday, November 11, 2013

Installing ASM 11.2 single instance on solaris 10

I have just installed my first ASM setup, and it was remarkably easy - Oracle have really got installations down pat now, it's almost like SQL Server (next, next, next, next etc). Which I suppose is a good thing.

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

Go back to the dialogue after root.sh has been run and click "OK"


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.830876839

ASM install is now complete. Time for a cup of coffee.

No comments:

Post a Comment