top of page

Oracle Database RAC 19c Installation on Oracle Linux 7.9 Using VirtualBox Part 1 of 2

  • ousseinioumarou68
  • 31. Okt. 2021
  • 15 Min. Lesezeit

Aktualisiert: 22. Okt.

Description and Scope


In this article I will describe the steps to setup a two nodes Oracle RAC 19c on Oracle Linux 7.9 using VirtualBox.

For a RAC system at least 2 nodes are required, as well shared storage and since Oracle 11g R2, also a DNS for SCAN IPs to be resolved. These requirements of shared storage and DNS resolution are one of the biggest obstacles preventing people from setting up test RAC environment.


Storage is very expensive. In a company the required shared storage is often provided by a SAN or high-end NAS device and probably by the storage team and the DNS configuration is handled by the network or operating system teams.

When you want to get some experiences in installing and using RAC, a cheaper alternative is to use virtualization to „fake“ shared storage and to build up a simple DNS server. You can have a DNS server as a separate machine or use one of the RAC nodes. I will go for the second option and thus, I will configure the DNS on the first node (oradbhost1).


I am neither a storage guy nor an administrator for network and operating system. I would like just to share my experiences.



Setup Environment Details


ree


Oracle RAC 19c Environment Details


ree

NOTE: The adapter of the private interconnect should be on different subnet,

otherwise the grid infrastructure installation will fail.




High level steps:

  1. Virtualbox Setup for Oracle Linux 7.9 (OEL 7.9) Installation

  2. Oracle Linux 7.9 Installation

  3. Oracle Linux Post Installation Configuration for RAC (groups, users, DNS, firewall, NTP/Chrony, cloning 1st node, shared Disks, ASM configuration)

  4. Grid Infrastructure Pre-check for RAC Setup

  5. Grid Infrastructure Installation and Configuration

  6. Oracle Database Software Only Installation

  7. Oracle 19c Database Creation using DBCA

  8. Post Installation Verification: Check of the whole RAC System Setup


Download Software:


Please download the following software:


Virtualbox


Oracle Linux Dowloads from edelivery


Oracle Database 19c from edelivery



I. Step 1: Oracle Virtualbox Setup


1. Check and change the virtualbox preferences, if necessary


ree

2. Specify hostname and operating system type (Linux)


ree

3. Memory Size

Specify the memory size.


Note: Oracle recommends at least 8GB RAM for Grid Installation. I have

allocated 12,5 GB or 12800MB for my installation. For more details, see also

the oracle documentation guides in Appendix.

ree

4. Virtual Disk

Create the virtual disk: VDI, dynamically allocated

ree
ree
ree
ree

5. Shared Ciplboard

Change the Shared Clipboard and Drag and Drop to Bidirectional

ree

6. Number of CPUs

Optionally increase the number oft he CPUs, if your system have enough

ree
ree

7. Storage: Select the Disk Image .iso for the Installation


ree

ree


8. Network Settings: For Oracle RAC, you need 3 Adapters


Adapter1: Host-Only, for RAC nodes internal communication, cable connected.

ree
ree


Adapter2: Internal Network, for RAC Private Network

ree

Adapter3: Bridge Adapter, to connect to internet for Installation Purpose


ree

ree

9. Shared Forders:

Add a shared for the Software Installation and log Files for example.

Make sure Auto-mount is checked, Access is full


ree

ree

10. Summary settings

Verification before beginning with Linux Installation


Double check the configuration before starting with the Installation


ree


II. Step 2: Oracle Linux 7.9 Installation


Assumptions/Prerequisites


VirtualBox has been setup as described above


1. Start the installation by powering on the virtual machine, with the OS image attached as optical Disk:

Storage --> Storage Devices --> Controller: IDE --> Optical Drive -->

OS image.iso


Note: I skipped the Test option, since i have already used this media for another

Installation.

ree

2. Select the Language and Press Continue

ree

3. Change Keyboard, Date&Time and so on

ree

a. Change Keyboard

ree

b. Change Date & Time


ree

4. Software Packages selection

  • Server with GUI

- Hardware Monitoring Tools

- Network File System Client

- Performance Tools

- Large Systems Performance

- Compatibility Libreairies

- Development Tools


5. Installation Destination modification(I prefer to do a partinionning)

ree
ree
ree
ree
ree
ree

Accept the Changes

ree

6. KDUMP (optionally disabled here for my test lab)

ree

7. Network Settings and Hostname Configuration

a. Adapter 1 – enp0s3 (BridgedAdapter)


ree
ree
ree

b. Adapter 2 – enp0s8 (Private Network) for private interconnect


NOTE: Important!! Make sure that the private network has different subnet


ree

c. Adapter 3 – enp0s9 (Host Only Adapter)

ree

8. Security policy (optionally disabled for my test purposes)

ree

9. Double check and click Begin Installation

ree

10. User settings

Specify root password and create a user (here ooumarou)

ree
ree
ree
ree
ree

11. Finish pre-configuration and start the installation

Check Network connection, license information. Then Click Finish Configuration


ree
ree
ree
ree
ree

Done with the first part of the Installation. Verification and further configuration.


ree
ree
ree
ree


12.1 VirtualBox Guest Additions Installation

Devices --> Insert Guest Additions CD Image --> Run


ree
ree

Press Return to close the Guest Additions Installation


ree

Press Return and then eject the Disk Image


ree



12.2 Additional configuration changes and steps


12.2.1 Display resolution


ree

12.2.2 Screen timeout

ree


13. DHCP configuration of the bridged Adapter for YUM Setup/Update


ree

ree
ree
ree


14. YUM repository Setup and Update


Check the internet connection by pinging oracle.com for example


ree

Refenrence:



Download the Latest Oracle Linux Repo File


Oracle are constantly amending the contents of their repository files, so it's a good idea to refresh the repo files from time to time to see the latest entries.


Oracle Linux 7 (Post January 2019)


From January 2019 the previous method of refreshing the Yum repositories has altered. The single large "public-yum-ol7.repo" file has been replaced by a number of smaller, more targetted files. You get these by installing the following package.


a. Configure YUM repository


ree

ree

ree

b. Run a yum update


# yum update -y


ree

ree


15. Oracle Database Preinstallation for Oracle Database 19c



ree

16. SELINUX: change SELINUX to permisse for firewall issues



ree

17. Yum install oracleasm-support


#yum install -y oracleasm-support


ree

18. Yum install BIND*

#yum install -y bind* -y


ree

ree

ree

ree

19. Further configuration and verification


[root@oradbhost1 yum.repos.d]# cd /etc

[root@oradbhost1 etc]#


[root@oradbhost1 etc]# ls -ld sys*

drwxr-xr-x. 7 root root 4096 Oct 10 00:10 sysconfig

-rw-r--r--. 1 root root 1966 Oct 9 23:57 sysctl.conf

drwxr-xr-x. 2 root root 111 Oct 9 23:57 sysctl.d

drwxr-xr-x. 4 root root 4096 Oct 9 23:47 systemd

lrwxrwxrwx. 1 root root 14 Oct 9 20:48 system-release -> oracle-release

-rw-r--r--. 1 root root 31 Sep 30 2020 system-release-cpe

[root@oradbhost1 etc]#


[root@oradbhost1 etc]# tail -15 sysctl.conf

# oracle-database-preinstall-19c setting for net.core.wmem_max is 1048576

net.core.wmem_max = 1048576


# oracle-database-preinstall-19c setting for net.ipv4.conf.all.rp_filter is 2

net.ipv4.conf.all.rp_filter = 2


# oracle-database-preinstall-19c setting for net.ipv4.conf.default.rp_filter is 2

net.ipv4.conf.default.rp_filter = 2


# oracle-database-preinstall-19c setting for fs.aio-max-nr is 1048576

fs.aio-max-nr = 1048576


# oracle-database-preinstall-19c setting for net.ipv4.ip_local_port_range is

9000 65500

net.ipv4.ip_local_port_range = 9000 65500

[root@oradbhost1 etc]#


[root@oradbhost1 etc]# ls -lrt sysctl.d

total 8

lrwxrwxrwx. 1 root root 14 Oct 9 23:48 99-sysctl.conf -> ../sysctl.conf

-rw-r--r--. 1 root root 449 Oct 9 23:57 99-initial-sysctl.conf

-rw-r--r--. 1 root root 1966 Oct 9 23:57 99-oracle-database-preinstall-19c-

sysctl.conf

[root@oradbhost1 etc]#


[root@oradbhost1 etc]# sysctl -p

fs.file-max = 6815744

kernel.sem = 250 32000 100 128

kernel.shmmni = 4096

kernel.shmall = 1073741824

kernel.shmmax = 4398046511104

kernel.panic_on_oops = 1

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048576

net.ipv4.conf.all.rp_filter = 2

net.ipv4.conf.default.rp_filter = 2

fs.aio-max-nr = 1048576

net.ipv4.ip_local_port_range = 9000 65500

[root@oradbhost1 etc]#


Now the system is ready to create shared Disks for RAC and for other steps (user groups, directories, firewall, NTP configuration, ASM Disks and Diskgroups creation and so on).



III. Step 3: Oracle Linux Post Installation Configuration for RAC (groups, users, DNS, firewall, NTP/Chrony, cloning 1st node, shared Disks, ASM configuration)


1. Groups and directories creation and oracle user permissions modification


1.1 Creating groups


[root@oradbhost1 ~]# date

Sun 10 Oct 08:55:10 CEST 2021

[root@oradbhost1 ~]# cat /etc/group | egrep -i 'asm|vbox'

vboxsf:x:981:

[root@oradbhost1 ~]#

[root@oradbhost1 ~]# groupadd -g 54327 asmdba

[root@oradbhost1 ~]# groupadd -g 54328 asmoper

[root@oradbhost1 ~]# groupadd -g 54329 asmadmin

[root@oradbhost1 ~]#

[root@oradbhost1 ~]# cat /etc/group | egrep -i 'asm|vbox'

vboxsf:x:981:

asmdba:x:54327:

asmoper:x:54328:

asmadmin:x:54329:

[root@oradbhost1 ~]#


ree

1.2 Verifying and modifying oracle user groups


[root@oradbhost1 ~]# id oracle

uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54330(racdba)

[root@oradbhost1 ~]#

[root@oradbhost1 ~]# usermod -G asmdba,asmoper,asmadmin,vboxsf oracle

[root@oradbhost1 ~]#

[root@oradbhost1 ~]# id oracle

uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),981(vboxsf),54327(asmdba),54328(asmoper),54329(asmadmin)

[root@oradbhost1 ~]#


1.3 Changing oracle user password


[root@oradbhost1 ~]# passwd oracle

Changing password for user oracle.

New password: xxxxx


Retype new password:

passwd: all authentication tokens updated successfully.

[root@oradbhost1 ~]#



1.4 Creating the directories for ORACLE_BASE, ORACLE_HOME …


[root@oradbhost1 ~]# mkdir -p /u01/app/19.3.0/grid

[root@oradbhost1 ~]# mkdir -p /u01/app/oracle/product/19.3.0/db_1

[root@oradbhost1 ~]# chown -R oracle:oinstall /u01

[root@oradbhost1 ~]# chmod -R 775 /u01/

[root@oradbhost1 ~]#

[root@oradbhost1 ~]# ls -ld /u01

drwxrwxr-x. 3 oracle oinstall 17 Oct 10 09:18 /u01

[root@oradbhost1 ~]#


1.4 Configuring Bash Profiles for oracle or grid user and ENV aliases


I will use only oracle user for both grid infrastructure and RAC database installation, of course with different environment variables. Update the bash profile files respectively.


[root@oradbhost1 ~]# su - oracle

[oracle@oradbhost1 ~]$ ls -la .bash*

-rw-r--r--. 1 oracle oinstall 18 Nov 22 2019 .bash_logout

-rw-r--r--. 1 oracle oinstall 193 Nov 22 2019 .bash_profile

-rw-r--r--. 1 oracle oinstall 231 Nov 22 2019 .bashrc

[oracle@oradbhost1 ~]$ cp .bash_profile .bash_profile.orig

[oracle@oradbhost1 ~]$ vim .bash_profile

[oracle@oradbhost1 ~]$

[oracle@oradbhost1 ~]$ cat .bash_profile

# .bash_profile


# Get the aliases and functions

if [ -f ~/.bashrc ]; then

. ~/.bashrc

fi


# User specific environment and startup programs


PATH=$PATH:$HOME/.local/bin:$HOME/bin


export PATH


# Oracle Settings

export TMP=/tmp

export TMPDIR=$TMP

export ORACLE_HOSTNAME=oradbhost1.localdomain

export ORACLE_UNQNAME=CDBRAC

export ORACLE_BASE=/u01/app/oracle

export GRID_HOME=/u01/app/19.3.0/grid

export DB_HOME=$ORACLE_BASE/product/19.3.0/db_1

export ORACLE_HOME=$DB_HOME

export ORACLE_SID=cdbrac1

export ORACLE_TERM=xterm

export BASE_PATH=/usr/sbin:$PATH

export PATH=$ORACLE_HOME/bin:$BASE_PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib


alias grid_env='. /home/oracle/grid_env'

alias db_env='. /home/oracle/db_env'


[oracle@oradbhost1 ~]$


Create a file called "/home/oracle/grid_env" with the following contents.


[oracle@oradbhost1 ~]$ vim /home/oracle/grid_env

[oracle@oradbhost1 ~]$

[oracle@oradbhost1 ~]$ cat /home/oracle/grid_env

export ORACLE_SID=+ASM1

export ORACLE_HOME=$GRID_HOME

export PATH=$ORACLE_HOME/bin:$BASE_PATH


export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

[oracle@oradbhost1 ~]$


Create a file called "/home/oracle/db_env" with the following contents.


[oracle@oradbhost1 ~]$ vim db_env

[oracle@oradbhost1 ~]$ cat db_env

export ORACLE_SID=cdbrac1

export ORACLE_HOME=$DB_HOME

export PATH=$ORACLE_HOME/bin:$BASE_PATH


export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib


[oracle@oradbhost1 ~]$

[oracle@oradbhost1 ~]$ . db_env

[oracle@oradbhost1 ~]$

[oracle@oradbhost1 ~]$ env | grep ORA

ORACLE_UNQNAME=CDBRAC

ORACLE_SID=cdbrac1

ORACLE_BASE=/u01/app/oracle

ORACLE_HOSTNAME=oradbhost1.localdomain

ORACLE_TERM=xterm

ORACLE_HOME=/u01/app/oracle/product/19.3.0/db_1

[oracle@oradbhost1 ~]$



2. Firewall and NTP configuration


2.1 Firewall Stop and Disable


[root@oradbhost1 ~]# systemctl status firewalld.service

[root@oradbhost1 ~]# systemctl stop firewalld.service

[root@oradbhost1 ~]# systemctl disable firewalld.service

[root@oradbhost1 ~]# systemctl status firewalld.service

ree

2.2 Chrony NTP Configuration


[root@oradbhost1 ~]# systemctl status chronyd.service

[root@oradbhost1 ~]# systemctl enable chronyd.service

[root@oradbhost1 ~]# systemctl restart chronyd.service

[root@oradbhost1 ~]# chronyc -a 'burst 4/4'

[root@oradbhost1 ~]# chronyc -a makestep

[root@oradbhost1 ~]# systemctl status chronyd.service

ree

3. DNS Configuration


For RAC Installation the SCAN IPs should be resolvable from a DNS Server. The DNS may be setup on a separate server and this is normally done by the network team in a company.


Also for a RAC Installation in a VirtualBox, a DNS configuration is necessary since the introduction of Single Client Access Name (SCAN), introduced in Oracle RAC11gR2. It can be configured on a separate server or on one of the RAC nodes., better of course on the first node. Thus, I will setup my DNS on the first RAC node.


Note: more specifically, it should be a server installation with a minimum of 8GB swap, firewall disabled, SELinux set to permissive and the following package groups installed.


3.1 Check Bind Packages

[root@oradbhost1 ~]# rpm -qa | grep bind

ree

3.2 Check Network Adapter Settings and /etc/hosts


I will set the adapter manually instead of using DHCP, to avoid the IP address to change


First Network Adapter

ree

ree

ree

Second Network Adapter


ree

ree

ree

Note: make sure that the private VIP adapter is not connect for the Grid Installation start, otherwise, the grid installation will fail with the cause, that the interface is already used. Important. This Network Adapter should have a different subnet.


Third Network Adapter



ree

ree

ree

[root@oradbhost1 ~]# ifconfig -a | egrep 'enp0|inet 192'


ree

root@oradbhost1 ~]# cat /etc/hosts


ree

Note: the SCAN Ips are commented. It is just to document ín the /etc/hosts how there are called.



If you are using Dnsmasq, put the RAC-specific entries in the hosts machines

"/etc/hosts" file, with the SCAN entries uncommented, and restart Dnsmasq.


After Checking required packages, and verifying network details and /etc/hosts, you have to configure the name server for DNS name resolution:

  • /etc/named.conf

  • /var/named/xxxx.zone files


3.3 Edit the name server configuration

Backup the default named.conf and change it accordingly to your need. The

changes are colored.


[root@oradbhost1 etc]# ls -l named.conf

-rw-r-----. 1 root named 1806 Oct 10 00:10 named.conf

[root@oradbhost1 etc]#

[root@oradbhost1 etc]# cp named.conf named.conf.bak-4-rac19

[root@oradbhost1 etc]# vim named.conf

[root@oradbhost1 etc]# cat named.conf

//

// named.conf

//

// Provided by Red Hat bind 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.

//

// See the BIND Administrator's Reference Manual (ARM) for details about the

// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html


options {

listen-on port 53 { 127.0.0.1; 192.168.0.101; };

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";

recursing-file "/var/named/data/named.recursing";

secroots-file "/var/named/data/named.secroots";

allow-query { localhost; };

forwarders {192.168.0.1;};


/*

- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.

- If you are building a RECURSIVE (caching) DNS server, you need to enable recursion.

- If your recursive DNS server has a public IP address, you MUST enable access

control to limit queries to your legitimate users.

Failing to do so will cause your server to become part of large scale DNS

amplification attacks. Implementing BCP38 within your network would greatly

reduce such attack surface

*/

recursion yes;

dnssec-enable yes;

dnssec-validation yes;


/* Path to ISC DLV key */

bindkeys-file "/etc/named.root.key";


managed-keys-directory "/var/named/dynamic";


pid-file "/run/named/named.pid";

session-keyfile "/run/named/session.key";

};


logging {

channel default_debug {

file "data/named.run";

severity dynamic;

};

};


zone "." IN {

type hint;

file "named.ca";

};


zone "localdomain" IN {

type master;

file "localdomain.zone";

allow-update { none; };

};


zone "0.168.192.in-addr.arpa." IN {

type master;

file "0.168.192.in-addr.arpa";

allow-update { none; };

};


include "/etc/named.rfc1912.zones";

include "/etc/named.root.key";


[root@oradbhost1 etc]#


Another command to check the entries in /etc/named.conf


[root@oradbhost1 etc]# echo ' '; echo 'listen ports and forwarders';echo '-------

--------------------'; head -25 named.conf | egrep 'listen-on|forwarders';

echo ' '; echo '----------------------------- '; echo 'localdomain and

0.168.192.xxxx ';echo '-----------------------------'; echo ' '; tail -20 named.conf


ree

The "file" parameter specifies the name of the file in the "/var/named/" directory that contains the configuration for this zone.


If you only care about forward lookups then you are now finished with the "/etc/named.conf" file. If you want to also cope with reverse lookups you will need to add an extra zone to cope with those. In the case of a RAC installation, I want to create reverse lookups for my public (192.168.0.*) network, so I must add the following zone entry.


Create the forward and reverse zone files as mentioned in named.conf, in the line file, as in this case:

  • forward zone = localdomain.zone

  • reverse zone = 0.168.192localdomain.zone


3.4 Edit the /var/named/xxxx.zone files


Forward zone (localdomain.zone) in /var/named


[root@oradbhost1 named]# vim localdomain.zone

[root@oradbhost1 named]# cat localdomain.zone

$TTL 86400

@ IN SOA oradbhost1.localdomain. root.localdomain.(

42 ; serial (d. adams)

3H ; refresh

15M ; retry

1W ; expiry

1D ) ; minimum

@ IN NS oradbhost1.localdomain.

localhost IN A 127.0.0.1


oradbhost1.localdomain. IN A 192.168.0.101

oradbhost2.localdomain. IN A 192.168.0.102


oradbhost1-priv.localdomain. IN A 192.168.1.101

oradbhost2-priv.localdomain. IN A 192.168.1.102


oradbhost1-vip.localdomain. IN A 192.168.0.111

oradbhost2-vip.localdomain. IN A 192.168.0.112


oradbhost-scan.localdomain. IN A 192.168.0.103

oradbhost-scan.localdomain. IN A 192.168.0.104

oradbhost-scan.localdomain. IN A 192.168.0.105

[root@oradbhost1 named]#


ree

Reverse zone (0.168.192.in-addr.arpa) in /var/named


[root@oradbhost1 named]# vim 0.168.192.in-addr.arpa

[root@oradbhost1 named]# cat 0.168.192.in-addr.arpa

$TTL 86400

$ORIGIN 0.168.192.in-addr.arpa.


@ IN SOA oradbhost1.localdomain. root.localdomain.( 2

3H

1H

1W

1H )

@ IN NS oradbhost1.localdomain.

@ IN PTR localdomain.


oradbhost1 IN A 192.168.0.101

oradbhost2 IN A 192.168.0.102


oradbhost1-vip IN A 192.168.0.111

oradbhost2-vip IN A 192.168.0.112


oradbhost-scan IN A 192.168.0.103

oradbhost-scan IN A 192.168.0.104

oradbhost-scan IN A 192.168.0.105


102 IN PTR oradbhost2.localdomain.

111 IN PTR oradbhost1-vip.localdomain.

112 IN PTR oradbhost2-vip.localdomain.

103 IN PTR oradbhost-scan.localdomain.

104 IN PTR oradbhost-scan.localdomain.

105 IN PTR oradbhost-scan.localdomain.

[root@oradbhost1 named]#


ree

NOTE: the created files have root group and this need to be changed to named group.


a) Change the root group to named group


[root@oradbhost1 named]# ls -lrt | egrep 'local|0.168'

[root@oradbhost1 named]# chgrp named localdomain.zone 0.168.192.in-addr.arpa

[root@oradbhost1 named]# ls -lrt | egrep 'local|0.168'

[root@oradbhost1 named]#


ree

a) Verify the context of the files under


[root@oradbhost1 named]# ls -lZd /etc/named.conf


It should be in the context of named_conf_t. If its different than this then we need to restore the context using:


[root@oradbhost1 named]# restorecon /etc/named.conf

[root@oradbhost1 named]# ls -lZd /etc/named.conf

-rw-r-----. root named system_u:object_r:named_conf_t:s0 /etc/named.conf

[root@oradbhost1 named]#


Start the DNS Service, check the status and correct potential errors


[root@oradbhost1 named]# systemctl status named.service

[root@oradbhost1 named]# systemctl start named.service

[root@oradbhost1 named]# systemctl status named.service

[root@oradbhost1 named]# systemctl enable named.service


ree

In case of errors, use journalctl -xe for trouble shooting


ree

3.5 Deploy iptables Rules to allow DNS service


If you have the Linux firewall enabled, you will need to disable or configure it, as shown here or here. The following is an example of disabling the firewall.

# service iptables status

# service iptables stop

# chkconfig iptables off


For more see also:


Example adding iptables rules could be

# iptables -A INPUT -i lo -j ACCEPT #iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT #iptables -A INPUT -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT #iptables -A INPUT -p tcp -m state –state NEW -m tcp –dport 53 -j ACCEPT #iptables -A INPUT -p udp -m state –state NEW -m udp –dport 53 -j ACCEPT #iptables -A INPUT -j DROP


I got some errors. Check the syntax


ree

3.6 Make the DNS server’s own IP address in the below file


The DNS server is now running, but each server must be told to use it. This is done by editing the "/etc/resolv.conf" file on each server, including the RAC nodes. Make sure the file contains the following entries, where the IP address and domain match those of your DNS server and the domain you have configured. For more see also for example this:



Make sure the "/etc/resolv.conf" file includes a nameserver entry that points to the correct nameserver. Also, if the "domain" and "search" entries are both present, comment out one of them. For this installation my "/etc/resolv.conf" looked like this.


[root@oradbhost1 named]# cat cat /etc/resolv.conf


ree

Now Check for the Available Hosts in DNS. Important the SCAN IPs should be resolvable through DNS


[root@oradbhost1 ~]# nslookup oradbhost1-priv

Server: 192.168.0.101

Address: 192.168.0.101#53


Name: oradbhost1-priv.localdomain

Address: 192.168.1.101

[root@oradbhost1 ~]#


[root@oradbhost1 ~]# nslookup oradbhost-scan

Server: 192.168.0.101

Address: 192.168.0.101#53


Name: oradbhost-scan.localdomain

Address: 192.168.0.104

Name: oradbhost-scan.localdomain

Address: 192.168.0.105

Name: oradbhost-scan.localdomain

Address: 192.168.0.103


[root@oradbhost1 ~]#


ree

4. Clone the 1st by Export/Import Appliance


Backup VMbox for build 2nd Node and adding Diskgroup


Now we will shut down the first node/server and clone it.


[root@oradbhost1 ~]# shutdown -h now

Or just


4.1 Export Appliance


Export Appliance

Then go to File à Export Applicance

ree

Select the location of backup and click NEXT


ree

ree

Then select Export


ree

4.2 Import Appliance


Then go to File à Import Appliance


ree

Then Import Appliance and change the VirtualBox Name, Storage location


ree

ree


5. Shared Disks creation and configuration


Note: You can create shared disks from VirtualBox Menu or on command line. I created the disks using the second option (on windows cmd)


5.1 Create shared disks


cd D:\VboxSharedDisks-D


"c:\Program Files\Oracle\VirtualBox\VBoxManage" createhd --filename ocr.vdi --size 15360 --format VDI --variant Fixed

"c:\Program Files\Oracle\VirtualBox\VBoxManage" createhd --filename mgmt.vdi --size 35840 --format VDI --variant Fixed

"c:\Program Files\Oracle\VirtualBox\VBoxManage" createhd --filename data.vdi --size 10240 --format VDI --variant Fixed

"c:\Program Files\Oracle\VirtualBox\VBoxManage" createhd --filename fra.vdi --size 20480 --format VDI --variant Fixed


ree

5.2 Make the Disks shareable


"c:\Program Files\Oracle\VirtualBox\VBoxManage" modifyhd ocr.vdi --type shareable

"c:\Program Files\Oracle\VirtualBox\VBoxManage" modifyhd mgmt.vdi --type shareable

"c:\Program Files\Oracle\VirtualBox\VBoxManage" modifyhd data.vdi --type shareable

"c:\Program Files\Oracle\VirtualBox\VBoxManage" modifyhd fra.vdi --type shareable


ree

5.3 Attach the ASM disks to both node


Attach the ASM disks to node oradbhost1


"c:\Program Files\Oracle\VirtualBox\VBoxManage" storageattach oradbhost1 --storagectl "SATA" --port 1 --device 0 --type hdd --medium ocr.vdi --mtype shareable

"c:\Program Files\Oracle\VirtualBox\VBoxManage" storageattach oradbhost1 --storagectl "SATA" --port 2 --device 0 --type hdd --medium mgmt.vdi --mtype shareable

"c:\Program Files\Oracle\VirtualBox\VBoxManage" storageattach oradbhost1 --storagectl "SATA" --port 3 --device 0 --type hdd --medium data.vdi --mtype shareable

"c:\Program Files\Oracle\VirtualBox\VBoxManage" storageattach oradbhost1 --storagectl "SATA" --port 4 --device 0 --type hdd --medium fra.vdi --mtype shareable



Attach the ASM disks to node oradbhost2


"c:\Program Files\Oracle\VirtualBox\VBoxManage" storageattach oradbhost2 --storagectl "SATA" --port 1 --device 0 --type hdd --medium ocr.vdi --mtype shareable

"c:\Program Files\Oracle\VirtualBox\VBoxManage" storageattach oradbhost2 --storagectl "SATA" --port 2 --device 0 --type hdd --medium mgmt.vdi --mtype shareable

"c:\Program Files\Oracle\VirtualBox\VBoxManage" storageattach oradbhost2 --storagectl "SATA" --port 3 --device 0 --type hdd --medium data.vdi --mtype shareable

"c:\Program Files\Oracle\VirtualBox\VBoxManage" storageattach oradbhost2 --storagectl "SATA" --port 4 --device 0 --type hdd --medium fra.vdi --mtype shareable


ree

Verify shareable disks are attached on both nodes



ree

ree


6. Re-configure the 2nd node oradbhost2


6.1 Change hostname


Start the 2nd node and change hostname, IP addresses settings and so on


[root@oradbhost1 ~]# nmcli general hostname

[root@oradbhost1 ~]# nmcli general hostname oradbhost2.localdomain

[root@oradbhost1 ~]# nmcli general hostname

[root@oradbhost1 ~]# service systemd-hostnamed restart

Redirecting to /bin/systemctl restart systemd-hostnamed.service

[root@oradbhost1 ~]# hostname


ree

6.2 Change Network


ree

ree

ree

Restart the network and verify ifconfig


[root@oradbhost2 ~]# systemctl restart network

[root@oradbhost2 ~]# ifconfig -a | egrep 'enp0|inet 192'


ree

Start the 1st node and check connectivity

ree

[root@oradbhost2 ~]# hostname

[root@oradbhost2 ~]# ping -c 3 oradbhost1

[root@oradbhost2 ~]# ping -c 3 oradbhost1-vip


Error on node 2: ping is working fine but nslookup/dig fails


[root@oradbhost2 ~]# nslookup oradbhost1

Server: 192.168.0.101

Address: 192.168.0.101#53


** server can't find oradbhost1: REFUSED


[root@oradbhost2 ~]# dig oradbhost1


; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.7 <<>> oradbhost1

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 23124

……..

[root@oradbhost2 ~]#


ree

7. Copy and unpack the grid software in $GRID_HOME


[oracle@oradbhost1 ~]$ . grid_env

[oracle@oradbhost1 ~]$

[oracle@oradbhost1 ~]$ cd $GRID_HOME

[oracle@oradbhost1 grid]$

[oracle@oradbhost1 grid]$ ls -l

total 2821472

-rwxr-x---. 1 oracle oinstall 2889184573 Oct 10 19:51 LINUX.X64_193000_grid_home.zip

[oracle@oradbhost1 grid]$

[oracle@oradbhost1 grid]$

[oracle@oradbhost1 grid]$ unzip LINUX.X64_193000_grid_home.zip

Archive: LINUX.X64_193000_grid_home.zip


ree


Install the package cvudisk from the grid home as the “root” user on all nodes.


1st Node


[root@oradbhost1 ~]# cd /u01/app/19.3.0/grid/cv/rpm


[root@oradbhost1 rpm]# rpm -Uvh cvuqdisk-1.0.10-1.rpm

Preparing... ############################ [100%]

Using default group oinstall to install package

Updating / installing...

1:cvuqdisk-1.0.10-1 ############################ [100%]

[root@oradbhost1 rpm]#


2nd Node


[root@oradbhost1 rpm]# scp cvuqdisk-1.0.10-1.rpm oradbhost2:


[root@oradbhost1 rpm]# ssh oradbhost2

[root@oradbhost2 ~]# ls -l cvuqdisk-1.0.10-1.rpm


[root@oradbhost2 ~]# rpm -Uvh cvuqdisk-1.0.10-1.rpm

Preparing... ################################# [100%]

Using default group oinstall to install package

Updating / installing...

1:cvuqdisk-1.0.10-1 ################################# [100%]

[root@oradbhost2 ~]#


[root@oradbhost2 ~]# rm -rf cvuqdisk-1.0.10-1.rpm

[root@oradbhost2 ~]# exit

[root@oradbhost1 rpm]#



8. Formatting ASM Disks for ASM Diskgroups configuration


[root@oradbhost1 ~]# cd /dev

[root@oradbhost1 dev]# ls sd*

sda sda1 sda2 sdb sdc sdd sde

[root@oradbhost1 dev]#

[root@oradbhost1 dev]# fdisk /dev/sdb

Welcome to fdisk (util-linux 2.23.2).

. . . . . . . . . . .


ree

Repeat for all disks


fdisk /dev/sdc, fdisk /dev/sdd, fdisk /dev/sde



At the end you will all partitions ending with 1


[root@oradbhost1 dev]# ls sd*

sda sda1 sda2 sdb sdb1 sdc sdc1 sdd sdd1 sde sde1

[root@oradbhost1 dev]#



9. Configure ASMLib


9.1 Configure oracleasm utility


[root@oradbhost1 dev]#/usr/sbin/oracleasm configure -i

ree

This can be verified using:


[root@oradbhost1 dev]#/usr/sbin/oracleasm configure


ree

Initialize the asmlib with the oracleasm init command to load oracleasm module and mount the oracleasm filesystem:-


[root@oradbhost1 dev]# /usr/sbin/oracleasm init


ree

ASMLIB Configuration create and mount /dev/oracleasm


[root@oradbhost1 dev]# df -ha | grep -i oracleasm



ree

ree

Verify that the created ASM disks are attached to both nodes, as shareable


ree

ree

10. ASM Disks creation for bildung ASM Diskgroups


10.1 ASM Configuration on Node 1


Create the disks on the filesystem


[root@oradbhost1 dev]# oracleasm createdisk OCR_DISK /dev/sdb1

[root@oradbhost1 dev]# oracleasm createdisk MGMT_DISK /dev/sdc1

[root@oradbhost1 dev]# oracleasm createdisk DATA_DISK1 /dev/sdd1

[root@oradbhost1 dev]# oracleasm createdisk FRA_DISK /dev/sde1

[root@oradbhost1 dev]#


ree

Verify the disks existence


[root@oradbhost1 dev]# ls -l /dev/oracleasm/disks/


ree

Scan and list them with oracleasm utilities on both nodes


ree

10.2 ASM Configuration on Node 2


ree


ree

ree

ree

11. Setup SSH Passwordless


Unzip the grid infrastructure software in $GRID_HOME and run the sshUserSetup.sh script to setup passwordless SSH. Then verify that oracle user can ssh passwordless to the second node


[root@oradbhost1 deinstall]# ./sshUserSetup.sh -user oracle -hosts "oradbhost1 oradbhost2" -noPromptPassphrase -confirm -advanced


The output of this script is also logged into /tmp/sshUserSetup_2021-10-11-00-12-08.log



ree

SSH from node 2 to node 1


ree

Now both Server are configured to use ASM. Next step is the grid infrastructure installation, see part 2 of 2:


https://ousseinioumarou68.wixsite.com/oracledbexperiences/post/oracle-rac-19c-installation-grid-and-database-installation








 
 
 

Kommentare


  • Facebook
  • Twitter
  • LinkedIn

©2021 Ousseini Oumarou. Erstellt mit Wix.com

bottom of page