Silent Installation of RAC 12c database

Sep 30, 2013 / By Andrey Goryunov

Tags: , , ,

Nowadays everyone is installing #db12c in different variants, posting screenshots, talking about a better tool to run GUI through.

However I could not find posts about silent installation of GI and RDBMS. Yes, installation without sleek graphical interfaces, just pure command line in terminal. Thinking about RAC Attack at OOW13 I decided to install a two-node RAC cluster on my laptop to see how it would work.

Using Virtual Box, I created VM (named s1) for OEL 6.4 with 2Gb of RAM and performed a basic server installation setting 2 IP addresses (192.168.56.11, 172.16.100.11) for public and private networks with allocated 30Gb disk. 620 packages were installed, server rebooted and the login prompt came quick and short-spoken.

Since there were additional packages required, I attached iso image for OEL 6.4 to VM and mounted it in command line

mount /dev/dvd /media

It gave me packages available under /media/Packages which I installed straight away (based on requirements)

rpm -Uvh compat-libcap1-1.10-1.x86_64.rpm compat-libstdc++-33-3.2.3-69.el6.x86_64.rpm \
libstdc++-devel-4.4.7-3.el6.x86_64.rpm gcc-4.4.7-3.el6.x86_64.rpm glibc-devel-2.12-1.107.el6.x86_64.rpm \
glibc-headers-2.12-1.107.el6.x86_64.rpm cpp-4.4.7-3.el6.x86_64.rpm cloog-ppl-0.15.7-1.2.el6.x86_64.rpm \
kernel-headers-2.6.32-358.el6.x86_64.rpm ppl-0.10.2-11.el6.x86_64.rpm mpfr-2.4.1-6.el6.x86_64.rpm \
libaio-devel-0.3.107-10.el6.x86_64.rpm ksh-20100621-19.el6.x86_64.rpm gcc-c++-4.4.7-3.el6.x86_64.rpm

Since it is not that important to have a DNS service running for my silent installation tests, I used one IP address for SCAN and put it to /etc/hosts file together with IP addresses for hosts of a two-node cluster

127.0.0.1   localhost.localdomain localhost
192.168.56.11	s1.home	s1
192.168.56.12	s2.home	s2
192.168.56.15	s-scan.home	s-scan
172.16.100.11	s1-priv.home	s1-priv
172.16.100.12	s2-priv.home	s2-priv
192.168.56.13	s1-vip.home	s1-vip
192.168.56.14	s2-vip.home	s2-vip

Then I created groups and an Oracle account (I did not create groups for SYSDG, SYSKM and SYSBACKUP planning to use dba group)

groupadd oinstall
groupadd dba
groupadd asmdba
groupadd asmadmin
useradd -m -g oinstall -G asmdba,asmadmin,dba oracle
passwd oracle

and created a directory where software will be installed

mkdir /u01
chown oracle.oinstall /u01

as well as disabled firewall and SE Linux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
/etc/init.d/iptables stop
/etc/init.d/ip6tables stop
chkconfig --level 2345 iptables off
chkconfig --level 2345 ip6tables off

I stopped VM and created 2 shared disks for ASM (2Gb and 5Gb) using steps described in RAC Attack 12c wiki in details.

When VM was started, back up and partitions for disks were created, I added rules for persistent naming of ASM devices. Since I was using only two devices for ASM, RAC Attack Ninjas’ script was changed to use sdb and sdc.

echo "options=-g" > /etc/scsi_id.config

i=1
cmd="/sbin/scsi_id -g -u -d"
for disk in sdb sdc ; do
cat <<EOF >> /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="$cmd /dev/\$parent", \
 RESULT=="`$cmd /dev/$disk`", NAME="asm-disk$i", OWNER="oracle", GROUP="dba", MODE="0660"
EOF
        i=$(($i+1))
done

/sbin/partprobe /dev/sdb1 /dev/sdc1
/sbin/udevadm test /block/sdb/sdb1
/sbin/udevadm test /block/sdc/sdc1
/sbin/udevadm control --reload-rules
/sbin/start_udev

It finished preparation of OS for further cloning to second VM and I simply powered off the machine in VBox.

Thanks again to RAC Attack Ninjas for the instructions which made tests easier and provided certain steps to clone VM.

I created new VM s2 without addition of any disks and set network interfaces and performed a clone of virtual disk from one Virtual Machine to a new one and attached cloned and disks for ASM to new VM.

After startup of new VM s2, I changed the name of the host to s2.home and IP addresses to new ones using setup command which works in text mode, removed file for network rules and deleted UUID and HWADDR from adapter configuration files

rm -f /etc/udev/rules.d/70-persistent-net.rules
sed -i -e '/HWADDR/d' -e '/UUID/d' /etc/sysconfig/network-scripts/ifcfg-eth[0-2]

Now I was able to start 2 virtual machines together and copied GI and RDBMS software to the first node under /home/oracle/install and unzipped archives there.

First of all, I executed ssh passwordless script to copy keys between nodes

cd /home/oracle/install/grid/sshsetup
./sshUserSetup.sh -user oracle -hosts "s1 s2" -advanced -confirm -noPromptPassphrase

Then I executed verification utility to generate fixup scripts

cd /home/oracle/install/grid
./runcluvfy.sh stage -pre crsinst -fixupnoexec -n s1,s2

The check produced the report at the end of the execution

ERROR:

PRVE-0426 : The size of in-memory file system mounted as /dev/shm is "1004" megabytes which is less than the required size of "2048" megabytes on node ""
PRVE-0426 : The size of in-memory file system mounted as /dev/shm is "1004" megabytes which is less than the required size of "2048" megabytes on node ""

Check for /dev/shm mounted as temporary file system failed
******************************************************************************************
Following is the list of fixable prerequisites selected to fix in this session
******************************************************************************************

--------------                ---------------     ----------------
Check failed.                 Failed on nodes     Reboot required?
--------------                ---------------     ----------------
OS Kernel Parameter: semmsl   s2,s1               no
OS Kernel Parameter: semmns   s2,s1               no
OS Kernel Parameter: semopm   s2,s1               no
OS Kernel Parameter: semmni   s2,s1               no
OS Kernel Parameter: shmmni   s2,s1               no
OS Kernel Parameter:          s2,s1               no
file-max
OS Kernel Parameter:          s2,s1               no
ip_local_port_range
OS Kernel Parameter:          s2,s1               no
rmem_default
OS Kernel Parameter:          s2,s1               no
rmem_max
OS Kernel Parameter:          s2,s1               no
wmem_default
OS Kernel Parameter:          s2,s1               no
wmem_max
OS Kernel Parameter:          s2,s1               no
aio-max-nr
Hard Limit: maximum open      s2,s1               no
file descriptors
Hard Limit: maximum user      s2,s1               no
processes
Soft Limit: maximum user      s2,s1               no
processes

Execute "/tmp/CVU_12.1.0.1.0_oracle/runfixup.sh" as root user on nodes "s2,s1" to perform the fix up operations manually

Pre-check for cluster services setup was unsuccessful on all the nodes.

Since OS packages were installed at the beginning, there were only some issues with OS Kernel parameters and size of temporary file system (which I ignored). To fix the parameters I executed the script on both nodes under root. It’s worth mentioning that the process for generating fixup scripts has changed since 11g. Now they are placed in a fixup directory under CVU_12.1.0.1.0_oracle and are in XML format while previously there were 2 directories CVU*_fixup, CVU*_oracle in /tmp and the configuration file was in text format.

Further execution of the check showed that the script worked and applied changes to the kernel

NOTE:
No fixable verification failures to fix
...

Based on my experience of silent installation and after several tests, I came up with the following parameters for the response file of Grid Infrastructure installation and put them to text file /tmp/gi.rsp on first node s1

oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v12.1.0
SELECTED_LANGUAGES=en
INVENTORY_LOCATION=/u01/app/oraInventory
oracle.install.option=CRS_CONFIG
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/12.1.0/grid
oracle.install.asm.OSDBA=asmdba
oracle.install.asm.OSASM=asmadmin
oracle.install.crs.config.gpnp.scanName=s-scan.home
oracle.install.crs.config.gpnp.scanPort=1521
oracle.install.crs.config.gpnp.configureGNS=false
oracle.install.crs.config.autoConfigureClusterNodeVIP=false
oracle.install.crs.config.ClusterType=STANDARD
oracle.install.crs.config.clusterName=s-cluster
oracle.install.crs.config.clusterNodes=s1.home:s1-vip.home,s2.home:s2-vip.home
oracle.install.crs.config.networkInterfaceList=eth0:192.168.56.0:1,eth1:172.16.100.0:2
oracle.install.crs.managementdb.configure=false
oracle.install.crs.config.storageOption=LOCAL_ASM_STORAGE
oracle.install.asm.SYSASMPassword=ASM111pwd#
oracle.install.asm.diskGroup.name=CRS
oracle.install.asm.diskGroup.redundancy=EXTERNAL
oracle.install.asm.diskGroup.disks=/dev/asm-disk1
oracle.install.asm.diskGroup.diskDiscoveryString=/dev/asm*
oracle.install.asm.monitorPassword=ASM222mon#
oracle.installer.autoupdates.option=SKIP_UPDATES

GI software was installed and it required the execution of several scripts to finish configuring the Grid Infrastructure

[oracle@s1 grid]$ ./runInstaller -silent -responseFile /tmp/gi.rsp -showProgress -ignorePrereq
Starting Oracle Universal Installer...

Checking Temp space: must be greater than 120 MB.   Actual 18470 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 4095 MB    Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2013-09-19_02-38-55PM. Please wait ...[oracle@s1 grid]$ [WARNING] [INS-41170] You have chosen not to configure the Grid Infrastructure Management Repository. Not configuring the Grid Infrastructure Management Repository will permanently disable the Cluster Health Monitor, QoS Management, Memory Guard, and Rapid Home Provisioning features. Enabling of these features will require reinstallation of the Grid Infrastructure.
You can find the log of this install session at:
 /u01/app/oraInventory/logs/installActions2013-09-19_02-38-55PM.log

Prepare in progress.
..................................................   8% Done.

Prepare successful.

Copy files in progress.
..................................................   16% Done.
..................................................   21% Done.
..................................................   27% Done.
..................................................   32% Done.
..................................................   37% Done.
..................................................   42% Done.
........................................
Copy files successful.
..........
Link binaries in progress.
..........
Link binaries successful.
..................................................   56% Done.

Setup files in progress.

Setup files successful.
..................................................   62% Done.

Setup Inventory in progress.

Setup Inventory successful.
..................................................   68% Done.

Finish Setup successful.

Perform remote operations in progress.

Perform remote operations successful.
..................................................   75% Done.

Saving Cluster Inventory in progress.
..................................................   80% Done.

Saving Cluster Inventory successful.
The installation of Oracle Grid Infrastructure 12c was successful.
Please check '/u01/app/oraInventory/logs/silentInstall2013-09-19_02-38-55PM.log' for more details.

Prepare for configuration steps in progress.

Prepare for configuration steps successful.
..................................................   85% Done.

Update Inventory in progress.

Update Inventory successful.
..................................................   95% Done.

As a root user, execute the following script(s):
        1. /u01/app/oraInventory/orainstRoot.sh
        2. /u01/app/12.1.0/grid/root.sh

Execute /u01/app/oraInventory/orainstRoot.sh on the following nodes:
[s1, s2]
Execute /u01/app/12.1.0/grid/root.sh on the following nodes:
[s1, s2]

Run the script on the local node first. After successful completion, you can start the script in parallel on all other nodes.

..................................................   100% Done.
Successfully Setup Software.
As install user, execute the following script to complete the configuration.
        1. /u01/app/12.1.0/grid/cfgtoollogs/configToolAllCommands RESPONSE_FILE=<response_file>

        Note:
        1. This script must be run on the same host from where installer was run.
        2. This script needs a small password properties file for configuration assistants that require passwords (refer to install guide documentation).

I executed /u01/app/oraInventory/orainstRoot.sh on both nodes and it did not cause any issues.

Since it was a silent installation OUI_SILENT parameter in /u01/app/12.1.0/grid/install/utl/rootmacro.sh (which is part of root.sh) was set to true and to see the execution output on a screen, not through a generated log, I set the parameter to false and executed the script. It was completed successfully on both nodes and the Grid Infrastructure was configured

...Configure Oracle Grid Infrastructure for a Cluster ... succeeded

For the configuration script, I created text file /tmp/conf.rsp which had 2 lines

oracle.assistants.asm|S_ASMPASSWORD=ASM111pwd#
oracle.assistants.asm|S_ASMMONITORPASSWORD=ASM222mon#

and executed the script

[oracle@s1 grid]$ /u01/app/12.1.0/grid/cfgtoollogs/configToolAllCommands RESPONSE_FILE=/tmp/conf.rsp
Setting the invPtrLoc to /u01/app/12.1.0/grid/oraInst.loc

perform - mode is starting for action: configure

Sep 19, 2013 4:40:08 PM oracle.install.driver.oui.UpdateNodelistJob call
INFO: UpdateNodelist data:
Sep 19, 2013 4:40:08 PM oracle.install.driver.oui.UpdateNodelistJob call
INFO: oracle.installer.oui_loc:/u01/app/12.1.0/grid/oui
Sep 19, 2013 4:40:08 PM oracle.install.driver.oui.UpdateNodelistJob call
INFO: oracle.installer.jre_loc:/u01/app/12.1.0/grid/jdk/jre
Sep 19, 2013 4:40:08 PM oracle.install.driver.oui.UpdateNodelistJob call
INFO: oracle.installer.doNotUpdateNodeList:true
Sep 19, 2013 4:40:08 PM oracle.install.driver.oui.UpdateNodelistJob call
INFO: OracleHomeToUpdate:/u01/app/12.1.0/grid;isCRS:true;isCFS:false;isLocal:false
Sep 19, 2013 4:40:08 PM oracle.install.driver.oui.UpdateNodelistJob call
INFO: From map: Hosts:[s1, s2] => Nodelist:[s1, s2]
Sep 19, 2013 4:40:08 PM oracle.install.driver.oui.UpdateNodelistJob call
INFO: Before calling api: Hosts:[s1, s2] => Nodelist:[s1, s2], update localnode? true
Sep 19, 2013 4:41:20 PM oracle.install.config.common.NetCAInternalPlugIn invoke
INFO: NetCAInternalPlugIn: ... adding </ouiinternal>
Sep 19, 2013 4:41:20 PM oracle.install.driver.oui.config.GenericInternalPlugIn invoke
INFO: Executing NETCA
Sep 19, 2013 4:41:20 PM oracle.install.driver.oui.config.GenericInternalPlugIn invoke
INFO: Command /u01/app/12.1.0/grid/bin/netca /orahome /u01/app/12.1.0/grid /orahnam OraGI12Home1 /instype typical /inscomp client,oraclenet,javavm,server,ano /insprtcl tcp /cfg local /authadp NO_VALUE /responseFile /u01/app/12.1.0/grid/network/install/netca_typ.rsp /silent  /silent   /ouiinternal
Sep 19, 2013 4:41:21 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: ... GenericInternalPlugIn.handleProcess() entered.
Sep 19, 2013 4:41:21 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: ... GenericInternalPlugIn: getting configAssistantParmas.
Sep 19, 2013 4:41:21 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: ... GenericInternalPlugIn: checking secretArguments.
Sep 19, 2013 4:41:21 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: No arguments to pass to stdin
Sep 19, 2013 4:41:21 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: ... GenericInternalPlugIn: starting read loop.
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Read:
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
WARNING: Skipping line:
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: End of argument passing to stdin
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Read: Parsing command line arguments:
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
WARNING: Skipping line: Parsing command line arguments:
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Exceeded the number of arguments passed to stdin. CurrentCount:1 Total args:0
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Read:     Parameter "orahome" = /u01/app/12.1.0/grid
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
WARNING: Skipping line:     Parameter "orahome" = /u01/app/12.1.0/grid
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Exceeded the number of arguments passed to stdin. CurrentCount:1 Total args:0
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Read:     Parameter "orahnam" = OraGI12Home1
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
WARNING: Skipping line:     Parameter "orahnam" = OraGI12Home1
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Exceeded the number of arguments passed to stdin. CurrentCount:1 Total args:0
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Read:     Parameter "instype" = typical
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
WARNING: Skipping line:     Parameter "instype" = typical
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Exceeded the number of arguments passed to stdin. CurrentCount:1 Total args:0
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Read:     Parameter "inscomp" = client,oraclenet,javavm,server,ano
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
WARNING: Skipping line:     Parameter "inscomp" = client,oraclenet,javavm,server,ano
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Exceeded the number of arguments passed to stdin. CurrentCount:1 Total args:0
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Read:     Parameter "insprtcl" = tcp
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
WARNING: Skipping line:     Parameter "insprtcl" = tcp
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Exceeded the number of arguments passed to stdin. CurrentCount:1 Total args:0
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Read:     Parameter "cfg" = local
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
WARNING: Skipping line:     Parameter "cfg" = local
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Exceeded the number of arguments passed to stdin. CurrentCount:1 Total args:0
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Read:     Parameter "authadp" = NO_VALUE
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
WARNING: Skipping line:     Parameter "authadp" = NO_VALUE
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Exceeded the number of arguments passed to stdin. CurrentCount:1 Total args:0
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Read:     Parameter "responsefile" = /u01/app/12.1.0/grid/network/install/netca_typ.rsp
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
WARNING: Skipping line:     Parameter "responsefile" = /u01/app/12.1.0/grid/network/install/netca_typ.rsp
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Exceeded the number of arguments passed to stdin. CurrentCount:1 Total args:0
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Read:     Parameter "silent" = true
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
WARNING: Skipping line:     Parameter "silent" = true
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Exceeded the number of arguments passed to stdin. CurrentCount:1 Total args:0
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Read:     Parameter "silent" = true
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
WARNING: Skipping line:     Parameter "silent" = true
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Exceeded the number of arguments passed to stdin. CurrentCount:1 Total args:0
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Read:     Parameter "ouiinternal" = true
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
WARNING: Skipping line:     Parameter "ouiinternal" = true
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Exceeded the number of arguments passed to stdin. CurrentCount:1 Total args:0
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Read: Done parsing command line arguments.
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
WARNING: Skipping line: Done parsing command line arguments.
Sep 19, 2013 4:41:23 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Exceeded the number of arguments passed to stdin. CurrentCount:1 Total args:0
Sep 19, 2013 4:41:26 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Read: Oracle Net Services Configuration:
Sep 19, 2013 4:41:26 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
WARNING: Skipping line: Oracle Net Services Configuration:
Sep 19, 2013 4:41:26 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Exceeded the number of arguments passed to stdin. CurrentCount:1 Total args:0
Sep 19, 2013 4:41:28 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Read: Profile configuration complete.
Sep 19, 2013 4:41:28 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
WARNING: Skipping line: Profile configuration complete.
Sep 19, 2013 4:41:28 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Exceeded the number of arguments passed to stdin. CurrentCount:1 Total args:0
Sep 19, 2013 4:41:28 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Read: Profile configuration complete.
Sep 19, 2013 4:41:28 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
WARNING: Skipping line: Profile configuration complete.
Sep 19, 2013 4:41:28 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Exceeded the number of arguments passed to stdin. CurrentCount:1 Total args:0
Sep 19, 2013 4:41:28 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Read: Listener "LISTENER" already exists.
Sep 19, 2013 4:41:28 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
WARNING: Skipping line: Listener "LISTENER" already exists.
Sep 19, 2013 4:41:28 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Exceeded the number of arguments passed to stdin. CurrentCount:1 Total args:0
Sep 19, 2013 4:41:28 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Read: Oracle Net Services configuration successful. The exit code is 0
Sep 19, 2013 4:41:28 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
WARNING: Skipping line: Oracle Net Services configuration successful. The exit code is 0
Sep 19, 2013 4:41:28 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Exceeded the number of arguments passed to stdin. CurrentCount:1 Total args:0
Sep 19, 2013 4:41:28 PM oracle.install.driver.oui.config.GenericInternalPlugIn invoke
INFO: Executing ASMCA
Sep 19, 2013 4:41:28 PM oracle.install.driver.oui.config.GenericInternalPlugIn invoke
INFO: Command /u01/app/12.1.0/grid/bin/asmca -silent -postConfigureASM -oui_internal
Sep 19, 2013 4:41:28 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: ... GenericInternalPlugIn.handleProcess() entered.
Sep 19, 2013 4:41:28 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: ... GenericInternalPlugIn: getting configAssistantParmas.
Sep 19, 2013 4:41:28 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: ... GenericInternalPlugIn: checking secretArguments.
Sep 19, 2013 4:41:28 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: ... GenericInternalPlugIn: starting read loop.
Sep 19, 2013 4:41:34 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Read: SYS_PASSWORD_PROMPT
Sep 19, 2013 4:41:34 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Processing: SYS_PASSWORD_PROMPT for argument tag -sysAsmPassword
Sep 19, 2013 4:41:34 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Read: ASMSNMP_PASSWORD_PROMPT
Sep 19, 2013 4:41:34 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Processing: ASMSNMP_PASSWORD_PROMPT for argument tag -asmMonitorPassword
Sep 19, 2013 4:41:34 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: End of argument passing to stdin
Sep 19, 2013 4:41:37 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Read:
Sep 19, 2013 4:41:37 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
WARNING: Skipping line:
Sep 19, 2013 4:41:37 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Exceeded the number of arguments passed to stdin. CurrentCount:3 Total args:2
Sep 19, 2013 4:41:37 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Read: PostConfiguration completed successfully
Sep 19, 2013 4:41:37 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
WARNING: Skipping line: PostConfiguration completed successfully
Sep 19, 2013 4:41:37 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Exceeded the number of arguments passed to stdin. CurrentCount:3 Total args:2
Sep 19, 2013 4:41:37 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Read:
Sep 19, 2013 4:41:37 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
WARNING: Skipping line:
Sep 19, 2013 4:41:37 PM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess
INFO: Exceeded the number of arguments passed to stdin. CurrentCount:3 Total args:2

perform - mode finished for action: configure

You can see the log file: /u01/app/12.1.0/grid/cfgtoollogs/oui/configActions2013-09-19_04-40-07-PM.log

GI was installed and it was up and running

[oracle@s1 grid]$ srvctl status asm
ASM is running on s2,s1

But how about the database itself and disk group creation (for which device /dev/asm-disk2 was ready)?

To create another ASM disk group, I used syntax that mkdg could understand and mounted the disk group on second node as well

ASMCMD> mkdg '<dg name="data" redundancy="external"><dsk string = "/dev/asm-disk2" /> <a name="compatible.asm" value="12.1" /> </dg>'

[oracle@s1 grid]$ srvctl status diskgroup -diskgroup data
Disk Group data is running on s1

[oracle@s1 grid]$ srvctl start diskgroup -diskgroup data -n s2

[oracle@s1 grid]$ srvctl status diskgroup -diskgroup data
Disk Group data is running on s2,s1

After that, the only steps left were to install the RDBMS and create the database, so I proceeded with the installation of RDBMS creating response file /tmp/db.rsp with following contents (database software was uploaded to the server s1 and unzipped under /home/oracle/install/database)

oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v12.1.0
oracle.install.option=INSTALL_DB_SWONLY
INVENTORY_LOCATION=/u01/app/oraInventory
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1
oracle.install.db.InstallEdition=EE
oracle.install.db.DBA_GROUP=dba
oracle.install.db.BACKUPDBA_GROUP=dba
oracle.install.db.DGDBA_GROUP=dba
oracle.install.db.KMDBA_GROUP=dba
oracle.install.db.CLUSTER_NODES=s1,s2
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
DECLINE_SECURITY_UPDATES=true
oracle.installer.autoupdates.option=SKIP_UPDATES

Silent installation was completed by execution of OUI in silent mode and I executed root.sh script (using the same change OUI_SILENT=false in rootmacro.sh to get output to the same screen) on both nodes successfully

[oracle@s1 database]$ ./runInstaller -silent -responseFile /tmp/db.rsp -showProgress -ignorePrereq
Starting Oracle Universal Installer...

Checking Temp space: must be greater than 500 MB.   Actual 7310 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 4083 MB    Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2013-09-19_09-38-36PM. Please wait ...[oracle@s1 database]$ You can find the log of this install session at:
 /u01/app/oraInventory/logs/installActions2013-09-19_09-38-36PM.log

Prepare in progress.
..................................................   8% Done.

Prepare successful.

Copy files in progress.
..................................................   13% Done.
..................................................   18% Done.
..................................................   23% Done.
..................................................   28% Done.
..................................................   33% Done.
..................................................   38% Done.
..................................................   43% Done.
..................................................   48% Done.

Copy files successful.

Link binaries in progress.

Link binaries successful.
..................................................   59% Done.

Setup files in progress.

Setup files successful.
..................................................   65% Done.

Setup Inventory in progress.

Setup Inventory successful.
..........
Finish Setup in progress.
..................................................   72% Done.

Finish Setup successful.

Perform remote operations in progress.

Perform remote operations successful.
..................................................   79% Done.

Saving Cluster Inventory in progress.
..................................................   84% Done.

Saving Cluster Inventory successful.
The installation of Oracle Database 12c was successful.
Please check '/u01/app/oraInventory/logs/silentInstall2013-09-19_09-38-36PM.log' for more details.

Update Inventory in progress.

Update Inventory successful.
..................................................   95% Done.

As a root user, execute the following script(s):
        1. /u01/app/oracle/product/12.1.0/dbhome_1/root.sh

Execute /u01/app/oracle/product/12.1.0/dbhome_1/root.sh on the following nodes:
[s1, s2]

..................................................   100% Done.
Successfully Setup Software.

/u01/app/oracle/product/12.1.0/dbhome_1/root.sh
Performing root user operation for Oracle 12c

The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /u01/app/oracle/product/12.1.0/dbhome_1

Enter the full pathname of the local bin directory: [/usr/local/bin]:
The contents of "dbhome" have not changed. No need to overwrite.
The contents of "oraenv" have not changed. No need to overwrite.
The contents of "coraenv" have not changed. No need to overwrite.

Entries will be added to the /etc/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.

Now it was just a matter of creating the database in silent mode.
Since ASM was created in automatic memory management mode, I decreased memory usage allocating SGA manually changing spfile of ASM.

alter system reset memory_target scope=spfile sid='*';
alter system reset memory_max_target scope=spfile sid='*';
alter system set sga_max_size=256m scope=spfile sid='*';
alter system set sga_target=256m scope=spfile sid='*';

I executed dbca in silent mode and got the database up and running and registered in clusterware

./dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbName d -adminManaged \
-sysPassword sys_pwd -systemPassword sys_pwd -emConfiguration NONE -storageType ASM \
-diskGroupName DATA -nodelist s1,s2 -totalMemory 600
Copying database files
1% complete
3% complete
9% complete
15% complete
21% complete
27% complete
30% complete
Creating and starting Oracle instance
32% complete
36% complete
40% complete
44% complete
45% complete
48% complete
50% complete
Creating cluster database views
52% complete
70% complete
Completing Database Creation
73% complete
76% complete
85% complete
94% complete
100% complete
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/d/d.log" for further details.

That’s how it was done. I definitely see a place for silent installation nowadays and, if you are doing many installations, it is certainly worth performing.

Happy doing silent installations!

4 Responses to “Silent Installation of RAC 12c database”

Leave a Reply

  • (will not be published)

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>