Warning before proceeding make sure you have at least 6Gb or more ram otherwise your installation will not work. Virtual Machine 1 configuration Guest OS - RHEL 5.4 Name - rac1 Public I/P eth0 - 192.168.1.100 Interconnect I/P eth1 - 192.168.2.100 memory - 2GB Disk space - 30GB Location - C:\11gRAC\rac1\ Virtual Machine 2 configuration Guest OS - RHEL 5.4 Name - rac2 Public I/P eth0 - 192.168.1.200 Interconnect I/P eth1 - 192.168.2.200 memory - 2GB Disk space - 30GB Location - C:\11gRAC\rac2\ Shared Storage configuration Voting Disk + OCR "C:\11gRAC\shared\Disk1" size 2GB "C:\11gRAC\shared\Disk2" size 2GB "C:\11gRAC\shared\Disk3" size 2GB Database Storage "C:\11gRAC\shared\Disk4" size 12GB "C:\11gRAC\shared\Disk5" size 12GB Flash Recovery Area "C:\11gRAC\shared\Disk6" size 12GB "C:\11gRAC\shared\Disk7" size 12GB Create two virtual machines in vmware. Sample configuration for first machine. Screen name Configuration select appropriate configuration ->select (custom) virtual machine hardware compatibilty ->6.5-7x Guest operating system installation ->I will install the operating system later select a guest operating system ->linux -> Red Hat Enterprise Linux 5 Name the virtual machine name ->rac1 location -> C:\11gRAC\rac1\ Processor Configuration Number of processors ->1 Number of cores per processor ->1 Memory ->2048 Network type ->Use briged networking I/O controller types ->defaults select a disk ->create a new virtual disk disk type ->SCSI maximum disk size ->30GB Disk file ->C:\11gRAC\rac1\rac1.vmdk click on customize hardware -> remove floppy remove sound card Cd/DvD - Use ISO if you have image or use physical drive. Add network card ->click on add ->Network Adapter->Bridged-> finish click (close) then click (finish) Linux installation steps click on power on Boot screen hit enter Test Cd skip Welcome click(next) Language next keyboard next installation number skip entering installation number Warning would you like to intialize this drive, erasing ALL DATA - yes Disk Partition create custom layout Partitions/boot ext3 100 swap 4096 / ext3 25000click(next) Grub configuration click(next) network configuration eth0 untick enable ipv6 configuration in IPv4 select manual configuration 192.168.1.100 255.255.255.0 click(ok) eth1 untick enable ipv6 configuration in IPv4 select manual configuration 192.168.2.100 255.255.255.0 click(ok) Hostname - rac1.example.com Gateway 192.168.1.1 Map - choose your country and city untick system clock uses UTC password for root Package selection customize now packages to install Desktop Environment Gnome Applications Editors Graphical internet Text-based Internet Development Develoment libraries Development Tools Legacy Software development Servers Server Configuration Tools Base system administration Tools base java legacy software support system tools X window system About to install - click(next) Post installation welcome - next firewall - disabled selinux - disabled kdump - next date and time - next create user - next sound card - next additional CDs - next reboot system - ok Rpms to be installed binutils-2.17.50.0.6 compat-libstdc++33* elfutils-libelf* elfutils-libelf-devel* elfutils-libelf-devel-static* gcc-4* gcc-c++* glibc-2* glibc-common* glibc-devel* glibc-headers* kernel-headers-2* ksh* libaio* libaio-devel* libgcc* libgomp* libstdc++* libstdc++-devel* make* pdksh* sysstat* unixODBC* unixODBC-devel Configure DNS on NODE 1 yum install -y *bind* caching-nameserver [root@rac1 ~]# ifconfig eth0eth0 Link encap:Ethernet HWaddr 00:0C:29:C7:15:90 inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fec7:1590/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1787 errors:0 dropped:0 overruns:0 frame:0 TX packets:63 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:142477 (139.1 KiB) TX bytes:8809 (8.6 KiB) Interrupt:67 Base address:0x2424[root@rac1 ~]# cd /var/named/chroot/etc/ [root@rac1 etc]# cp named.caching-nameserver.conf named.conf Sample named.conf file [root@rac1 etc]# vi named.conf// // named.caching-nameserver.conf // // Provided by Red Hat caching-nameserver package to configure the // ISC BIND named(8) DNS server as a caching only nameserver // (as a localhost DNS resolver only). // // See /usr/share/doc/bind*/sample/ for example named configuration files. // // DO NOT EDIT THIS FILE - use system-config-bind or an editor // to create named.conf - edits to this file will be lost on // caching-nameserver package upgrade. // options { listen-on port 53 { 192.168.1.100; }; # listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; // Those options should be used carefully because they disable port // randomization // query-source port 53; // query-source-v6 port 53; allow-query { any; }; allow-query-cache { any; }; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; view localhost_resolver { match-clients { any; }; match-destinations { 192.168.1.100; }; recursion yes; include "/etc/named.rfc1912.zones"; };[root@rac1 etc]# vi named.rfc1912.zones// named.rfc1912.zones: // // Provided by Red Hat caching-nameserver package // // ISC BIND named zone configuration for zones recommended by // RFC 1912 section 4.1 : localhost TLDs and address zones // // See /usr/share/doc/bind*/sample/ for example named configuration files. // zone "." IN { type hint; file "named.ca"; }; zone "example.com" IN { type master; file "forward.zone"; allow-update { none; }; }; zone "localhost" IN { type master; file "localhost.zone"; allow-update { none; }; }; zone "1.168.192.in-addr.arpa" IN { type master; file "reverse.zone"; allow-update { none; }; }; zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN { type master; file "named.ip6.local"; allow-update { none; }; }; zone "255.in-addr.arpa" IN { type master; file "named.broadcast"; allow-update { none; }; }; zone "0.in-addr.arpa" IN { type master; file "named.zero"; allow-update { none; }; };[root@rac1 etc]# chgrp named named.conf [root@rac1 etc]# cd /var/named/chroot/var/named/ [root@rac1 named]# cp localdomain.zone forward.zone [root@rac1 named]# cp named.local reverse.zone [root@rac1 named]# vi forward.zone$TTL 86400 @ IN SOA rac1.example.com. root.example.com. ( 42 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum IN NS rac1.example.com. rac1 IN A 192.168.1.100[root@rac1 named]# vi reverse.zone$TTL 86400 @ IN SOA rac1.example.com. root.rac1.example.com. ( 1997022700 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS rac1.example.com. 100 IN PTR rac1.example.com.[root@rac1 named]# chgrp named forward.zone [root@rac1 named]# chgrp named reverse.zone [root@rac1 named]# cat /etc/hosts# Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost 192.168.1.100 rac1.example.com rac1Insert into all the nodes. [root@rac1 named]# cat /etc/resolv.confsearch example.com nameserver 192.168.1.100In Rac1 [root@rac1 named]# cat /etc/sysconfig/networkNETWORKING=yes NETWORKING_IPV6=no HOSTNAME=rac1.example.comIn Rac2 [root@rac2 named]# cat /etc/sysconfig/networkNETWORKING=yes NETWORKING_IPV6=no HOSTNAME=rac2.example.com[root@rac1 named]# service named restartStopping named: [ OK ] Starting named: [ OK ]Execute from both Nodes [root@rac1 named]# dig rac1.example.com; <<>> DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5 <<>> rac1.example.com ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2650 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;rac1.example.com. IN A ;; ANSWER SECTION: rac1.example.com. 86400 IN A 192.168.1.100 ;; AUTHORITY SECTION: example.com. 86400 IN NS rac1.example.com. ;; Query time: 4 msec ;; SERVER: 192.168.1.100#53(192.168.1.100) ;; WHEN: Tue Aug 28 22:56:32 2012 ;; MSG SIZE rcvd: 64[root@rac2 ~]# dig -x 192.168.1.100; <<>> DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5 <<>> -x 192.168.1.100 ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64577 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;100.1.168.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 100.1.168.192.in-addr.arpa. 86400 IN PTR rac1.example.com. ;; AUTHORITY SECTION: 1.168.192.in-addr.arpa. 86400 IN NS rac1.example.com. ;; ADDITIONAL SECTION: rac1.example.com. 86400 IN A 192.168.1.100 ;; Query time: 3 msec ;; SERVER: 192.168.1.100#53(192.168.1.100) ;; WHEN: Tue Aug 28 23:04:13 2012 ;; MSG SIZE rcvd: 104[root@rac2 ~]# nslookup rac1.example.comServer: 192.168.1.100 Address: 192.168.1.100#53 Name: rac1.example.com Address: 192.168.1.100[root@rac2 ~]# nslookup 192.168.1.100Server: 192.168.1.100 Address: 192.168.1.100#53 100.1.168.192.in-addr.arpa name = rac1.example.com.Once your basic dns server is working do the following append the following in /var/named/chroot/var/named/forward.zone; Oracle RAC Nodes rac1 IN A 192.168.1.100 rac2 IN A 192.168.1.200 rac1-priv IN A 192.168.2.100 rac2-priv IN A 192.168.2.200 rac1-vip IN A 192.168.1.251 rac2-vip IN A 192.168.1.252 ; Single Client Access Name (SCAN) virtual IP rac-cluster-scan IN A 192.168.1.150 rac-cluster-scan IN A 192.168.1.151 rac-cluster-scan IN A 192.168.1.152Append the following in /var/named/chroot/var/named/reverse.zone; Oracle RAC Nodes 100 IN PTR rac1.example.com. 200 IN PTR rac2.example.com. 251 IN PTR rac1-vip.example.com. 252 IN PTR rac2-vip.example.com. ; Single Client Access Name (SCAN) virtual IP 150 IN PTR rac-cluster-scan.example.com. 151 IN PTR rac-cluster-scan.example.com. 152 IN PTR rac-cluster-scan.example.com.[root@rac1 named]# service named restartStopping named: [ OK ] Starting named: [ OK ][root@rac1 named]# chkconfig named on [root@rac1 named]# chkconfig named --listnamed 0:off 1:off 2:on 3:on 4:on 5:on 6:offPerform following tests on both nodes nslookup rac1.example.comServer: 192.168.1.100 Address: 192.168.1.100#53 Name: rac1.example.com Address: 192.168.1.100nslookup rac2.example.comServer: 192.168.1.100 Address: 192.168.1.100#53 Name: rac2.example.com Address: 192.168.1.200nslookup rac1Server: 192.168.1.100 Address: 192.168.1.100#53 Name: rac1.example.com Address: 192.168.1.100nslookup rac2Server: 192.168.1.100 Address: 192.168.1.100#53 Name: rac2.example.com Address: 192.168.1.200nslookup 192.168.1.100Server: 192.168.1.100 Address: 192.168.1.100#53 100.1.168.192.in-addr.arpa name = rac1.example.com.nslookup 192.168.1.200Server: 192.168.1.100 Address: 192.168.1.100#53 200.1.168.192.in-addr.arpa name = rac2.example.com.nslookup rac-cluster-scanServer: 192.168.1.100 Address: 192.168.1.100#53 Name: rac-cluster-scan.example.com Address: 192.168.1.152 Name: rac-cluster-scan.example.com Address: 192.168.1.150 Name: rac-cluster-scan.example.com Address: 192.168.1.151Append the following in /etc/hosts all the nodes.# Public Network - (eth0) 192.168.1.100 rac1.example.com rac1 192.168.1.200 rac2.example.com rac2 # Private Interconnect - (eth1) 192.168.2.100 rac1-priv.example.com rac1-priv 192.168.2.200 rac2-priv.example.com rac2-priv # Public Virtual IP (VIP) addresses - (eth0:1) 192.168.1.251 rac1-vip.example.com rac1-vip 192.168.1.252 rac2-vip.example.com rac2-vipSample /etc/hosts file in both the nodes.# Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost # Public Network - (eth0) 192.168.1.100 rac1.example.com rac1 192.168.1.200 rac2.example.com rac2 # Private Interconnect - (eth1) 192.168.2.100 rac1-priv.example.com rac1-priv 192.168.2.200 rac2-priv.example.com rac2-priv # Public Virtual IP (VIP) addresses - (eth0:1) 192.168.1.251 rac1-vip.example.com rac1-vip 192.168.1.252 rac2-vip.example.com rac2-vipExecute the following commands from both nodes and verify connectivity. ping -c 3 rac1.example.com ping -c 3 rac2.example.com ping -c 3 rac1-priv.example.com ping -c 3 rac2-priv.example.com ping -c 3 rac1 ping -c 3 rac2 ping -c 3 rac1-priv ping -c 3 rac2-priv Deconfigure NTP services on both nodes /sbin/service ntpd stop chkconfig ntpd off mv /etc/ntp.conf /etc/ntp.conf.original rm /var/run/ntpd.pid Create necessary groups and users for Grid on both nodes [root@rac1 ~]#groupadd -g 1000 oinstall [root@rac1 ~]#groupadd -g 1200 asmadmin [root@rac1 ~]#groupadd -g 1201 asmdba [root@rac1 ~]#groupadd -g 1202 asmoper [root@rac1 ~]#useradd -m -u 1100 -g oinstall -G asmadmin,asmdba,asmoper -d /home/grid -s /bin/bash -c "Grid Infrastructure Owner" grid [root@rac1 ~]# id griduid=1100(grid) gid=1000(oinstall) groups=1000(oinstall),1200(asmadmin),1201(asmdba),1202(asmoper)Assign password to grid user on both nodes. [root@rac1 ~]#passwd grid Set Bash Profile for grid user on both nodes. [root@rac1 ~]#su - grid Replace the content in .bash_profile with the following of grid user on both nodes.# --------------------------------------------------- # .bash_profile # --------------------------------------------------- # OS User: grid # Application: Oracle Grid Infrastructure # Version: Oracle 11g Release 2 # --------------------------------------------------- # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi alias ls="ls -FA" # --------------------------------------------------- # ORACLE_SID # --------------------------------------------------- # Specifies the Oracle system identifier (SID) # for the Automatic Storage Management (ASM)instance # running on this node. # Each RAC node must have a unique ORACLE_SID. # (i.e. +ASM1, +ASM2,...) # --------------------------------------------------- ORACLE_SID=+ASM1; export ORACLE_SID # --------------------------------------------------- # JAVA_HOME # --------------------------------------------------- # Specifies the directory of the Java SDK and Runtime # Environment. # --------------------------------------------------- JAVA_HOME=/usr/local/java; export JAVA_HOME # --------------------------------------------------- # GRID_BASE # --------------------------------------------------- # Specifies the base of the Oracle directory structure # for Optimal Flexible Architecture (OFA) compliant # installations. The Oracle base directory for the # grid installation owner is the location where # diagnostic and administrative logs, and other logs # associated with Oracle ASM and Oracle Clusterware # are stored. # --------------------------------------------------- GRID_BASE=/u01/app/grid; export GRID_BASE ORACLE_BASE=$GRID_BASE; export ORACLE_BASE # --------------------------------------------------- # GRID_HOME # --------------------------------------------------- # Specifies the directory containing the Oracle # Grid Infrastructure software. For grid # infrastructure for a cluster installations, the Grid # home must not be placed under one of the Oracle base # directories, or under Oracle home directories of # Oracle Database installation owners, or in the home # directory of an installation owner. During # installation, ownership of the path to the Grid # home is changed to root. This change causes # permission errors for other installations. # --------------------------------------------------- GRID_HOME=/u01/app/11.2.0/grid; export GRID_HOME ORACLE_HOME=$GRID_HOME; export ORACLE_HOME # --------------------------------------------------- # ORACLE_PATH # --------------------------------------------------- # Specifies the search path for files used by Oracle # applications such as SQL*Plus. If the full path to # the file is not specified, or if the file is not # in the current directory, the Oracle application # uses ORACLE_PATH to locate the file. # This variable is used by SQL*Plus, Forms and Menu. # --------------------------------------------------- ORACLE_PATH=/u01/app/oracle/dba_scripts/sql; export ORACLE_PATH # --------------------------------------------------- # SQLPATH # --------------------------------------------------- # Specifies the directory or list of directories that # SQL*Plus searches for a login.sql file. # --------------------------------------------------- # SQLPATH=/u01/app/oracle/dba_scripts/sql; export SQLPATH # --------------------------------------------------- # ORACLE_TERM # --------------------------------------------------- # Defines a terminal definition. If not set, it # defaults to the value of your TERM environment # variable. Used by all character mode products. # --------------------------------------------------- ORACLE_TERM=xterm; export ORACLE_TERM # --------------------------------------------------- # NLS_DATE_FORMAT # --------------------------------------------------- # Specifies the default date format to use with the # TO_CHAR and TO_DATE functions. The default value of # this parameter is determined by NLS_TERRITORY. The # value of this parameter can be any valid date # format mask, and the value must be surrounded by # double quotation marks. For example: # # NLS_DATE_FORMAT = "MM/DD/YYYY" # # --------------------------------------------------- NLS_DATE_FORMAT="DD-MON-YYYY HH24:MI:SS"; export NLS_DATE_FORMAT # --------------------------------------------------- # TNS_ADMIN # --------------------------------------------------- # Specifies the directory containing the Oracle Net # Services configuration files like listener.ora, # tnsnames.ora, and sqlnet.ora. # --------------------------------------------------- TNS_ADMIN=$GRID_HOME/network/admin; export TNS_ADMIN # --------------------------------------------------- # ORA_NLS11 # --------------------------------------------------- # Specifies the directory where the language, # territory, character set, and linguistic definition # files are stored. # --------------------------------------------------- ORA_NLS11=$GRID_HOME/nls/data; export ORA_NLS11 # --------------------------------------------------- # PATH # --------------------------------------------------- # Used by the shell to locate executable programs; # must include the $GRID_HOME/bin directory. # --------------------------------------------------- PATH=.:${JAVA_HOME}/bin:$JAVA_HOME/db/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin PATH=${PATH}:/u01/app/oracle/dba_scripts/bin export PATH # --------------------------------------------------- # LD_LIBRARY_PATH # --------------------------------------------------- # Specifies the list of directories that the shared # library loader searches to locate shared object # libraries at runtime. # --------------------------------------------------- LD_LIBRARY_PATH=$GRID_HOME/lib LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$GRID_HOME/oracm/lib LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib export LD_LIBRARY_PATH # --------------------------------------------------- # CLASSPATH # --------------------------------------------------- # Specifies the directory or list of directories that # contain compiled Java classes. # --------------------------------------------------- CLASSPATH=$GRID_HOME/JRE CLASSPATH=${CLASSPATH}:$GRID_HOME/jdbc/lib/ojdbc6.jar CLASSPATH=${CLASSPATH}:$GRID_HOME/jlib CLASSPATH=${CLASSPATH}:$GRID_HOME/rdbms/jlib CLASSPATH=${CLASSPATH}:$ORACLE_HOME/oc4j/ant/lib/ant.jar CLASSPATH=${CLASSPATH}:$ORACLE_HOME/oc4j/ant/lib/ant-launcher.jar CLASSPATH=${CLASSPATH}:$JAVA_HOME/db/lib/derby.jar CLASSPATH=${CLASSPATH}:$GRID_HOME/network/jlib export CLASSPATH # --------------------------------------------------- # THREADS_FLAG # --------------------------------------------------- # All the tools in the JDK use green threads as a # default. To specify that native threads should be # used, set the THREADS_FLAG environment variable to # "native". You can revert to the use of green # threads by setting THREADS_FLAG to the value # "green". # --------------------------------------------------- THREADS_FLAG=native; export THREADS_FLAG # --------------------------------------------------- # TEMP, TMP, and TMPDIR # --------------------------------------------------- # Specify the default directories for temporary # files; if set, tools that create temporary files # create them in one of these directories. # --------------------------------------------------- export TEMP=/tmp export TMPDIR=/tmp # --------------------------------------------------- # UMASK # --------------------------------------------------- # Set the default file mode creation mask # (umask) to 022 to ensure that the user performing # the Oracle software installation creates files # with 644 permissions. # --------------------------------------------------- umask 022Make sure of setting for RAC1 ORACLE_SID=+ASM1; export ORACLE_SID Make sure of setting for RAC2 ORACLE_SID=+ASM2; export ORACLE_SID Activate the bash_profile on both nodes using [grid@rac1 ~]$ . ./.bash_profile Create necessary users and groups for Oracle software [root@rac1 ~]#groupadd -g 1300 dba [root@rac1 ~]#groupadd -g 1301 oper [root@rac1 ~]#useradd -m -u 1101 -g oinstall -G dba,oper,asmdba -d /home/oracle -s /bin/bash -c "Oracle Software Owner" oracle [root@rac1 ~]# id oracleuid=1101(oracle) gid=1000(oinstall) groups=1000(oinstall),1201(asmdba),1300(dba),1301(oper)Create password for oracle user [root@rac1 ~]#passwd oracle Set Bash Profile for oracle user on both nodes. [root@rac1 ~]#su - oracle Replace the content in .bash_profile with the following# --------------------------------------------------- # .bash_profile # --------------------------------------------------- # OS User: oracle # Application: Oracle Database Software Owner # Version: Oracle 11g Release 2 # --------------------------------------------------- # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi alias ls="ls -FA" # --------------------------------------------------- # ORACLE_SID # --------------------------------------------------- # Specifies the Oracle system identifier (SID) for # the Oracle instance running on this node. # Each RAC node must have a unique ORACLE_SID. # (i.e. orcl1, orcl2,...) # --------------------------------------------------- ORACLE_SID=orcl1; export ORACLE_SID # --------------------------------------------------- # ORACLE_UNQNAME # --------------------------------------------------- # In previous releases of Oracle Database, you were # required to set environment variables for # ORACLE_HOME and ORACLE_SID to start, stop, and # check the status of Enterprise Manager. With # Oracle Database 11g Release 2 (11.2) and later, you # need to set the environment variables ORACLE_HOME # and ORACLE_UNQNAME to use Enterprise Manager. # Set ORACLE_UNQNAME equal to the database unique # name. # --------------------------------------------------- ORACLE_UNQNAME=orcl; export ORACLE_UNQNAME # --------------------------------------------------- # JAVA_HOME # --------------------------------------------------- # Specifies the directory of the Java SDK and Runtime # Environment. # --------------------------------------------------- JAVA_HOME=/usr/local/java; export JAVA_HOME # --------------------------------------------------- # ORACLE_BASE # --------------------------------------------------- # Specifies the base of the Oracle directory structure # for Optimal Flexible Architecture (OFA) compliant # database software installations. # --------------------------------------------------- ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE # --------------------------------------------------- # ORACLE_HOME # --------------------------------------------------- # Specifies the directory containing the Oracle # Database software. # --------------------------------------------------- ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1; export ORACLE_HOME # --------------------------------------------------- # ORACLE_PATH # --------------------------------------------------- # Specifies the search path for files used by Oracle # applications such as SQL*Plus. If the full path to # the file is not specified, or if the file is not # in the current directory, the Oracle application # uses ORACLE_PATH to locate the file. # This variable is used by SQL*Plus, Forms and Menu. # --------------------------------------------------- ORACLE_PATH=/u01/app/oracle/dba_scripts/sql:$ORACLE_HOME/rdbms/admin; export ORACLE_PATH # --------------------------------------------------- # SQLPATH # --------------------------------------------------- # Specifies the directory or list of directories that # SQL*Plus searches for a login.sql file. # --------------------------------------------------- # SQLPATH=/u01/app/oracle/dba_scripts/sql; export SQLPATH # --------------------------------------------------- # ORACLE_TERM # --------------------------------------------------- # Defines a terminal definition. If not set, it # defaults to the value of your TERM environment # variable. Used by all character mode products. # --------------------------------------------------- ORACLE_TERM=xterm; export ORACLE_TERM # --------------------------------------------------- # NLS_DATE_FORMAT # --------------------------------------------------- # Specifies the default date format to use with the # TO_CHAR and TO_DATE functions. The default value of # this parameter is determined by NLS_TERRITORY. The # value of this parameter can be any valid date # format mask, and the value must be surrounded by # double quotation marks. For example: # # NLS_DATE_FORMAT = "MM/DD/YYYY" # # --------------------------------------------------- NLS_DATE_FORMAT="DD-MON-YYYY HH24:MI:SS"; export NLS_DATE_FORMAT # --------------------------------------------------- # TNS_ADMIN # --------------------------------------------------- # Specifies the directory containing the Oracle Net # Services configuration files like listener.ora, # tnsnames.ora, and sqlnet.ora. # --------------------------------------------------- TNS_ADMIN=$ORACLE_HOME/network/admin; export TNS_ADMIN # --------------------------------------------------- # ORA_NLS11 # --------------------------------------------------- # Specifies the directory where the language, # territory, character set, and linguistic definition # files are stored. # --------------------------------------------------- ORA_NLS11=$ORACLE_HOME/nls/data; export ORA_NLS11 # --------------------------------------------------- # PATH # --------------------------------------------------- # Used by the shell to locate executable programs; # must include the $ORACLE_HOME/bin directory. # --------------------------------------------------- PATH=.:${JAVA_HOME}/bin:$JAVA_HOME/db/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin PATH=${PATH}:/u01/app/oracle/dba_scripts/bin export PATH # --------------------------------------------------- # LD_LIBRARY_PATH # --------------------------------------------------- # Specifies the list of directories that the shared # library loader searches to locate shared object # libraries at runtime. # --------------------------------------------------- LD_LIBRARY_PATH=$ORACLE_HOME/lib LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib export LD_LIBRARY_PATH # --------------------------------------------------- # CLASSPATH # --------------------------------------------------- # Specifies the directory or list of directories that # contain compiled Java classes. # --------------------------------------------------- CLASSPATH=$ORACLE_HOME/jdbc/lib/ojdbc6.jar CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib CLASSPATH=${CLASSPATH}:$ORACLE_HOME/oc4j/ant/lib/ant.jar CLASSPATH=${CLASSPATH}:$ORACLE_HOME/oc4j/ant/lib/ant-launcher.jar CLASSPATH=${CLASSPATH}:$JAVA_HOME/db/lib/derby.jar CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib export CLASSPATH # --------------------------------------------------- # THREADS_FLAG # --------------------------------------------------- # All the tools in the JDK use green threads as a # default. To specify that native threads should be # used, set the THREADS_FLAG environment variable to # "native". You can revert to the use of green # threads by setting THREADS_FLAG to the value # "green". # --------------------------------------------------- THREADS_FLAG=native; export THREADS_FLAG # --------------------------------------------------- # TEMP, TMP, and TMPDIR # --------------------------------------------------- # Specify the default directories for temporary # files; if set, tools that create temporary files # create them in one of these directories. # --------------------------------------------------- export TEMP=/tmp export TMPDIR=/tmp # --------------------------------------------------- # UMASK # --------------------------------------------------- # Set the default file mode creation mask # (umask) to 022 to ensure that the user performing # the Oracle software installation creates files # with 644 permissions. # --------------------------------------------------- umask 022Make sure settin for rac1 should be ORACLE_SID=orcl1; export ORACLE_SID Make sure settin for rac2 should be ORACLE_SID=orcl2; export ORACLE_SID activate bash profile on both nodes [oracle@rac1 ~]$ . ./.bash_profile verify that user nobody exists on both nodes. [root@rac1 ~]# id nobodyuid=99(nobody) gid=99(nobody) groups=99(nobody)Create directory structures on both nodes. [root@rac1 ~]# mkdir -p /u01/app/grid [root@rac1 ~]# mkdir -p /u01/app/11.2.0/grid [root@rac1 ~]# chown -R grid:oinstall /u01 [root@rac1 ~]# mkdir -p /u01/app/oracle [root@rac1 ~]# chown oracle:oinstall /u01/app/oracle [root@rac1 ~]# chmod -R 775 /u01 Insert the following in /etc/security/limits.conf on both nodes. grid soft nproc 2047 grid hard nproc 16384 grid soft nofile 1024 grid hard nofile 65536 oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 Insert the following in /etc/pam.d/login on both nodes. session required pam_limits.so Append the following in root user /etc/profile on both nodesif [ \$USER = "oracle" ] || [ \$USER = "grid" ]; then if [ \$SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi umask 022 fiEdit kernel parameters on both nodes /etc/sysctl.conf. leave the fields for kernel.shmall kernel.shmmax as it is and append the following values in /etc/sysctl.conf.# Controls the maximum number of shared memory segments system wide kernel.shmmni = 4096 # Sets the following semaphore values: # SEMMSL_value SEMMNS_value SEMOPM_value SEMMNI_value kernel.sem = 250 32000 100 128 # Sets the maximum number of file-handles that the Linux kernel will allocate fs.file-max = 6815744 # Defines the local port range that is used by TCP and UDP # traffic to choose the local port net.ipv4.ip_local_port_range = 9000 65500 # Default setting in bytes of the socket "receive" buffer which # may be set by using the SO_RCVBUF socket option net.core.rmem_default=262144 # Maximum setting in bytes of the socket "receive" buffer which # may be set by using the SO_RCVBUF socket option net.core.rmem_max=4194304 # Default setting in bytes of the socket "send" buffer which # may be set by using the SO_SNDBUF socket option net.core.wmem_default=262144 # Maximum setting in bytes of the socket "send" buffer which # may be set by using the SO_SNDBUF socket option net.core.wmem_max=1048576 # Maximum number of allowable concurrent asynchronous I/O requests fs.aio-max-nr=1048576Activate kernel settings on both nodes. [root@rac1 ~]# sysctl -p Configure shared storage for the cluster. 1) shut down both nodes. Do the follwoing from first node only. 2) In node1 click (edit virtual machine settings) 3) click on add 4) select harddisk click(next) 5) select create a new virtual disk click(next) 6) Disk Type SCSI click(next) 7) Maximum disk size 2, select allocate all disk space now, click (next) 8) Specify file location "C:\11gRAC\shared\Disk1.vmdk" click finish By following the above instructions make total of 7 disks specifications are as following. Voting Disk + OCR "C:\11gRAC\shared\Disk1" size 2GB "C:\11gRAC\shared\Disk2" size 2GB "C:\11gRAC\shared\Disk3" size 2GB Database Storage "C:\11gRAC\shared\Disk4" size 12GB "C:\11gRAC\shared\Disk5" size 12GB Flash Recovery Area "C:\11gRAC\shared\Disk6" size 12GB "C:\11gRAC\shared\Disk7" size 12GB Edit the C:\RAC11g\rac1\rac1.vmx file The configuration file for rac1 will already contain configuration information for the seven new SCSI virtual hard disks:... scsi0:1.present = "TRUE" scsi0:1.fileName = "Disk1.vmdk" scsi0:2.present = "TRUE" scsi0:2.fileName = "Disk2.vmdk" scsi0:3.present = "TRUE" scsi0:3.fileName = "Disk3.vmdk" scsi0:4.present = "TRUE" scsi0:4.fileName = "Disk4.vmdk" scsi0:5.present = "TRUE" scsi0:5.fileName = "Disk5.vmdk" scsi0:5.present = "TRUE" scsi0:5.fileName = "Disk6.vmdk" scsi0:5.present = "TRUE" scsi0:5.fileName = "Disk7.vmdk" ...(rac2 obviously will not at this time!) The configuration information for the seven new hard disks (on rac1) should be removed and replaced with the configuration information in the table below.# # ---------------------------------------------------------------- # SHARED DISK SECTION - (BEGIN) # ---------------------------------------------------------------- # - The goal in meeting the hardware requirements is to have a # shared storage for the two nodes. The way to achieve this in # VMware is the creation of a NEW SCSI BUS. It has to be of # type "virtual" and we must have the disk.locking = "false" # option. # - Just dataCacheMaxSize = "0" should be sufficient with the # diskLib.* parameters, although I include all parameters for # documentation purposes. # - maxUnsyncedWrites should matter for sparse disks only, and # I certainly do not recommend using sparse disks for # clustering. # - dataCacheMaxSize=0 should disable cache size completely, so # other three dataCache options should do nothing (no harm, # but nothing good either). # ---------------------------------------------------------------- # diskLib.dataCacheMaxSize = "0" diskLib.dataCacheMaxReadAheadSize = "0" diskLib.dataCacheMinReadAheadSize = "0" diskLib.dataCachePageSize = "4096" diskLib.maxUnsyncedWrites = "0" disk.locking = "false" # ---------------------------------------------------------------- # Create one HBA # ---------------------------------------------------------------- scsi1.present = "TRUE" scsi1.sharedBus = "virtual" scsi1.virtualDev = "lsilogic" # ---------------------------------------------------------------- # Create virtual SCSI disks on single HBA # ---------------------------------------------------------------- scsi1:0.present = "TRUE" scsi1:0.fileName = "C:\RAC11g\shared\Disk1.vmdk" scsi1:0.redo = "" scsi1:0.mode = "independent-persistent" scsi1:0.deviceType = "disk" scsi1:1.present = "TRUE" scsi1:1.fileName = "C:\RAC11g\shared\Disk2.vmdk" scsi1:1.redo = "" scsi1:1.mode = "independent-persistent" scsi1:1.deviceType = "disk" scsi1:2.present = "TRUE" scsi1:2.fileName = "C:\RAC11g\shared\Disk3.vmdk" scsi1:2.redo = "" scsi1:2.mode = "independent-persistent" scsi1:2.deviceType = "disk" scsi1:3.present = "TRUE" scsi1:3.fileName = "C:\RAC11g\shared\Disk4.vmdk" scsi1:3.redo = "" scsi1:3.mode = "independent-persistent" scsi1:3.deviceType = "disk" scsi1:4.present = "TRUE" scsi1:4.fileName = "C:\RAC11g\shared\Disk5.vmdk" scsi1:4.redo = "" scsi1:4.mode = "independent-persistent" scsi1:4.deviceType = "disk" scsi1:5.present = "TRUE" scsi1:5.fileName = "C:\RAC11g\shared\Disk6.vmdk" scsi1:5.redo = "" scsi1:5.mode = "independent-persistent" scsi1:5.deviceType = "disk" scsi1:6.present = "TRUE" scsi1:6.fileName = "C:\RAC11g\shared\Disk7.vmdk" scsi1:6.redo = "" scsi1:6.mode = "independent-persistent" scsi1:6.deviceType = "disk" # # ---------------------------------------------------------------- # SHARED DISK SECTION - (END) # ---------------------------------------------------------------- #Also, append the above configuration in C:\RAC11g\rac1\rac2.vmx file Close vmware, then open it again and power on all the nodes one by one. You may face an error saying "clustering not supported for vmware workstation" just ignore this error. Partition disks for shared storage. Do this from only first node. [root@rac1 ~]# fdisk -lDisk /dev/sda: 32.2 GB, 32212254720 bytes 255 heads, 63 sectors/track, 3916 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 3379 27037395 83 Linux /dev/sda3 3380 3901 4192965 82 Linux swap / Solaris Disk /dev/sdb: 2147 MB, 2147483648 bytes 255 heads, 63 sectors/track, 261 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/sdb doesn't contain a valid partition table Disk /dev/sdc: 2147 MB, 2147483648 bytes 255 heads, 63 sectors/track, 261 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/sdc doesn't contain a valid partition table Disk /dev/sdd: 12.8 GB, 12884901888 bytes 255 heads, 63 sectors/track, 1566 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/sdd doesn't contain a valid partition table Disk /dev/sde: 12.8 GB, 12884901888 bytes 255 heads, 63 sectors/track, 1566 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/sde doesn't contain a valid partition table Disk /dev/sdf: 12.8 GB, 12884901888 bytes 255 heads, 63 sectors/track, 1566 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/sdf doesn't contain a valid partition table Disk /dev/sdg: 12.8 GB, 12884901888 bytes 255 heads, 63 sectors/track, 1566 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/sdg doesn't contain a valid partition table Disk /dev/sdh: 2147 MB, 2147483648 bytes 255 heads, 63 sectors/track, 261 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/sdh doesn't contain a valid partition tablePartition each disk as following only from first node. [root@rac1 ~]# fdisk /dev/sdb Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-261, default 1):Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-261, default 261): Using default value 261 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. After partitioning all the disks execute the following command on both nodes [root@rac1 ~]# partprobe Sample output from both nodes after partitioning [root@rac2 ~]# fdisk -l Disk /dev/sda: 32.2 GB, 32212254720 bytes 255 heads, 63 sectors/track, 3916 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 3379 27037395 83 Linux /dev/sda3 3380 3901 4192965 82 Linux swap / Solaris Disk /dev/sdb: 2147 MB, 2147483648 bytes 255 heads, 63 sectors/track, 261 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 1 261 2096451 83 Linux Disk /dev/sdc: 2147 MB, 2147483648 bytes 255 heads, 63 sectors/track, 261 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdc1 1 261 2096451 83 Linux Disk /dev/sdd: 12.8 GB, 12884901888 bytes 255 heads, 63 sectors/track, 1566 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdd1 1 1566 12578863+ 83 Linux Disk /dev/sde: 12.8 GB, 12884901888 bytes 255 heads, 63 sectors/track, 1566 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sde1 1 1566 12578863+ 83 Linux Disk /dev/sdf: 12.8 GB, 12884901888 bytes 255 heads, 63 sectors/track, 1566 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdf1 1 1566 12578863+ 83 Linux Disk /dev/sdg: 12.8 GB, 12884901888 bytes 255 heads, 63 sectors/track, 1566 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdg1 1 1566 12578863+ 83 Linux Disk /dev/sdh: 2147 MB, 2147483648 bytes 255 heads, 63 sectors/track, 261 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdh1 1 261 2096451 83 LinuxConfigure ASM Check your kernel version [root@rac1 ~]# uname -a Linux rac1.example.com 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:54 EDT 2009 i686 i686 i386 GNU/Linux Download ASM rpms related to your kernel from the following website. http://www.oracle.com/technetwork/server-storage/linux/downloads/rhel5-084877.html In my case my os is based on 32bit or x86 architecture so every file downloaded will be 32bit or x86 based. IN Library and Tools download the following oracleasm-support-2.1.7-1.el5.i386.rpm oracleasmlib-2.0.4-1.el5.i386.rpm Download one additional rpm according to your kernel oracleasm-2.6.18-164.el5-2.0.5-1.el5.i686.rpm Install asm on both nodes. [root@rac1 asm11g]# rpm -Uvh oracleasm-2.6.18-164.el5-2.0.5-1.el5.i686.rpm \ > oracleasmlib-2.0.4-1.el5.i386.rpm \ > oracleasm-support-2.1.7-1.el5.i386.rpm Outputwarning: oracleasm-2.6.18-164.el5-2.0.5-1.el5.i686.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159 Preparing... ########################################### [100%] 1:oracleasm-support ########################################### [ 33%] 2:oracleasm-2.6.18-164.el########################################### [ 67%] 3:oracleasmlib ########################################### [100%]Check on both nodes [root@rac1 ~]# rpm -qa | grep asmoracleasm-2.6.18-164.el5-2.0.5-1.el5 ibmasm-3.0-9 oracleasm-support-2.1.7-1.el5 nasm-0.98.39-3.2.2 ibmasm-xinput-2.1-1.el5 oracleasmlib-2.0.4-1.el5Configure asm on both nodes [root@rac1 ~]# /usr/sbin/oracleasm configure -i 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 ('[]'). Hittingwithout typing an answer will keep that current value. Ctrl-C will abort. Default user to own the driver interface []: grid Default group to own the driver interface []: asmadmin Start Oracle ASM library driver on boot (y/n) [n]: y Scan for Oracle ASM disks on boot (y/n) [y]: y Writing Oracle ASM library driver configuration: done Execute the following on both nodes. [root@rac1 ~]# /usr/sbin/oracleasm init Creating /dev/oracleasm mount point: /dev/oracleasm Loading module "oracleasm": oracleasm Mounting ASMlib driver filesystem: /dev/oracleasmExecute the following commands from first node only. [root@rac1 ~]# /etc/init.d/oracleasm createdisk VOL1 /dev/sdb1 Marking disk "VOL1" as an ASM disk: [ OK ] [root@rac1 ~]# /etc/init.d/oracleasm createdisk VOL2 /dev/sdc1 Marking disk "VOL2" as an ASM disk: [ OK ] [root@rac1 ~]# /etc/init.d/oracleasm createdisk VOL3 /dev/sdd1 Marking disk "VOL3" as an ASM disk: [ OK ] [root@rac1 ~]# /etc/init.d/oracleasm createdisk VOL4 /dev/sde1 Marking disk "VOL4" as an ASM disk: [ OK ] [root@rac1 ~]# /etc/init.d/oracleasm createdisk VOL5 /dev/sdf1 Marking disk "VOL5" as an ASM disk: [ OK ] [root@rac1 ~]# /etc/init.d/oracleasm createdisk VOL6 /dev/sdg1 Marking disk "VOL6" as an ASM disk: [ OK ] [root@rac1 ~]# /etc/init.d/oracleasm createdisk VOL7 /dev/sdh1 Marking disk "VOL7" as an ASM disk: [ OK ] Execute the following from both nodes. [root@rac2 ~]# /usr/sbin/oracleasm scandisksReloading disk partitions: done Cleaning any stale ASM disks... Scanning system for ASM disks... Instantiating disk "VOL1" Instantiating disk "VOL2" Instantiating disk "VOL3" Instantiating disk "VOL4" Instantiating disk "VOL5" Instantiating disk "VOL6" Instantiating disk "VOL7"Execute the following from both nodes. [root@rac1 ~]# /usr/sbin/oracleasm listdisksVOL1 VOL2 VOL3 VOL4 VOL5 VOL6 VOL7Download Oracle software from the following link http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-linuxsoft-085393.html Download the following Oracle Database 11g Release 2 (11.2.0.1.0) for Linux x86 Oracle Grid Infrastructure 11g Release 2 (11.2.0.1.0) for Linux x86 Installation of grid infrastructure and oracle software will be done from node 1 As grid user make the staging directory copy the grid infrastructure file and unzip it [root@rac1 ~]# su - grid [grid@rac1 ~]$ mkdir -p /home/grid/software/oracle [grid@rac1 ~]$ unzipAs oracle user make the staging directory copy the oracle software files and unzip it [oracle@rac1 ~]$ mkdir -p /home/oracle/software/oracle [oracle@rac1 ~]$ unzip [oracle@rac1 ~]$ unzip Locate and install cvuqdisk RPM on both nodes [root@rac1 ~]# cp /home/grid/software/oracle/grid/rpm/cvuqdisk-1.0.7-1.rpm /tmp/ [root@rac1 tmp]# scp /tmp/cvuqdisk-1.0.7-1.rpm rac2:/tmp/ root@rac2's password: cvuqdisk-1.0.7-1.rpm 100% 7831 7.7KB/s 00:00 Install like following on both nodes. [root@rac1 ~]# cd /tmp/ [root@rac1 tmp]# CVUQDISK_GRP=oinstall; export CVUQDISK_GRP [root@rac1 tmp]# rpm -iv cvuqdisk-1.0.7-1.rpm Preparing packages for installation... cvuqdisk-1.0.7-1 Confirm installation on both nodes. [root@rac1 tmp]# ls -l /usr/sbin/cvuqdisk -rwsr-xr-x 1 root oinstall 8272 May 28 2009 /usr/sbin/cvuqdisk Install Grid infrastructure from first node. [root@rac1 ~]# xhost + access control disabled, clients can connect from any host [root@rac1 ~]# su - grid [grid@rac1 ~]$ cd /home/grid/software/oracle/grid/ [grid@rac1 ~]$ ./runInstaller Next, click the [SSH Connectivity] button. Enter the "OS Password" for the grid
user and click the [Setup] button. This will start the "SSH Connectivity" configuration
process: Verify cluster installation on both nodes. [grid@rac1 grid]$ crsctl check crs CRS-4638: Oracle High Availability Services is online CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online[grid@rac1 grid]$ crs_stat -tName Type Target State Host ------------------------------------------------------------ ora.CRS.dg ora....up.type ONLINE ONLINE rac1 ora....ER.lsnr ora....er.type ONLINE ONLINE rac1 ora....N1.lsnr ora....er.type ONLINE ONLINE rac2 ora....N2.lsnr ora....er.type ONLINE ONLINE rac1 ora....N3.lsnr ora....er.type ONLINE ONLINE rac1 ora.asm ora.asm.type ONLINE ONLINE rac1 ora.eons ora.eons.type ONLINE ONLINE rac1 ora.gsd ora.gsd.type OFFLINE OFFLINE ora....network ora....rk.type ONLINE ONLINE rac1 ora.oc4j ora.oc4j.type OFFLINE OFFLINE ora.ons ora.ons.type ONLINE ONLINE rac1 ora....SM1.asm application ONLINE ONLINE rac1 ora....C1.lsnr application ONLINE ONLINE rac1 ora.rac1.gsd application OFFLINE OFFLINE ora.rac1.ons application ONLINE ONLINE rac1 ora.rac1.vip ora....t1.type ONLINE ONLINE rac1 ora....SM2.asm application ONLINE ONLINE rac2 ora....C2.lsnr application ONLINE ONLINE rac2 ora.rac2.gsd application OFFLINE OFFLINE ora.rac2.ons application ONLINE ONLINE rac2 ora.rac2.vip ora....t1.type ONLINE ONLINE rac2 ora....ry.acfs ora....fs.type ONLINE ONLINE rac1 ora.scan1.vip ora....ip.type ONLINE ONLINE rac2 ora.scan2.vip ora....ip.type ONLINE ONLINE rac1 ora.scan3.vip ora....ip.type ONLINE ONLINE rac1[grid@rac1 grid]$ olsnodes -n rac1 1 rac2 2 [grid@rac1 grid]$ ps -ef | grep lsnr | grep -v 'grep' | grep -v 'ocfs' | awk '{print $9}' LISTENER_SCAN2 LISTENER_SCAN3 LISTENER [grid@rac2 ~]$ ps -ef | grep lsnr | grep -v 'grep' | grep -v 'ocfs' | awk '{print $9}' LISTENER_SCAN1 LISTENER [grid@rac1 grid]$ srvctl status asm -a ASM is running on rac1,rac2 ASM is enabled. [grid@rac1 grid]$ ocrcheck Status of Oracle Cluster Registry is as follows : Version : 3 Total space (kbytes) : 262120 Used space (kbytes) : 2484 Available space (kbytes) : 259636 ID : 1335021663 Device/File Name : +CRS Device/File integrity check succeeded Device/File not configured Device/File not configured Device/File not configured Device/File not configured Cluster registry integrity check succeeded Logical corruption check bypassed due to non-privileged user [grid@rac1 grid]$ crsctl query css votedisk ## STATE File Universal Id File Name Disk group -- ----- ----------------- --------- --------- 1. ONLINE 8cc0163254bd4f75bf2b48371b72d25a (ORCL:VOL1) [CRS] 2. ONLINE 2aa142ade9c44f13bf55ba663d087556 (ORCL:VOL2) [CRS] 3. ONLINE 6c0b0eb065b74fd0bf202648880c197e (ORCL:VOL7) [CRS] Located 3 voting disk(s). [grid@rac1 grid]$ dig rac-cluster-scan.example.com; <<>> DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5 <<>> rac-cluster-scan.example.com ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28601 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;rac-cluster-scan.example.com. IN A ;; ANSWER SECTION: rac-cluster-scan.example.com. 86400 IN A 192.168.1.151 rac-cluster-scan.example.com. 86400 IN A 192.168.1.152 rac-cluster-scan.example.com. 86400 IN A 192.168.1.150 ;; AUTHORITY SECTION: example.com. 86400 IN NS rac1.example.com. ;; ADDITIONAL SECTION: rac1.example.com. 86400 IN A 192.168.1.100 ;; Query time: 9 msec ;; SERVER: 192.168.1.100#53(192.168.1.100) ;; WHEN: Wed Aug 29 23:53:26 2012 ;; MSG SIZE rcvd: 129Backup thr root.sh script on both nodes. [root@rac1 ~]# cd /u01/app/11.2.0/grid [root@rac1 grid]# cp root.sh ~/root.sh.racnode1.AFTER_INSTALL Create ASM Disk groups for database and flash recovery area storage. Execute following command from first node. [root@rac1 ~]# su - grid [grid@rac1 ~]$ asmca Click on create Create two disk groups "DATA" & "FRA" with normal redundancy. Exit configuration and proceed towards Oracle Software installation. [root@rac1 ~]# xhost + access control disabled, clients can connect from any host [root@rac1 ~]# su - oracle [oracle@rac1 ~]$ cd /home/oracle/software/oracle/oracle11g/database/ [oracle@rac1 database]$ ./runInstaller Create cluster database [oracle@rac1 ~]$ dbca
References:
http://idevelopment.info/data/Oracle/DBA_tips/Oracle10gRAC/CLUSTER_14.shtml
http://idevelopment.info/data/Oracle/DBA_tips/Oracle11gRAC/CLUSTER_12.shtml










































this is Awesome Awesome Awesome Awesome Awesome Awesome
ReplyDelete