Oracle Database 19c a fost lansat în Aprilie 2019 și este versiunea finală a familiei de produse Oracle Database 12c. Oracle Database 19c vine cu patru ani de suport premium și minimum trei de asistență extinsă. De asemenea, constituie o bază pentru următoarea fază Oracle de optimizare a bazelor de date autonome.
Actualizarea la Oracle Database 19c este încurajată și, deoarece este versiunea finală 12.2, dovedește o arhitectură stabilă. Cu toate acestea, pentru actualizarea la o noua versiune a bazei de date ar trebui luat in considerare un proiect care necesită metodologie, planificare, testare și experiență.
In acest articol voi prezenta pas cu pas procesul de pregătire și instalare a produsului Oracle Database 19c folosind o infrastructură Oracle Enterprise Linux 7.7 și VMware Workstation 15.5.
Sumar pași pregatire instalare Grid Infrastructure:
- Download Software
- Configurare VM și instalare OS
- Configurări adiționale sistemului de operare
- Instalare / configurare DNS
- Crearea discurilor partajate
- Configurarea discurilor ASM
- Crearea celui de-al doilea nod
Download Software
In acest articol am folosit produsele de mai jos descărcate de pe site-urile oficiale folosind următoarele link-uri:
- Oracle Database 19c Grid Infrastructure (19.3) for Linux x86-64
- Oracle Database 19c (19.3) for Linux x86-64
- Linux (Oracle Linux 7.7 64-bit)
- VMware Workstation 15.5 Pro
Configurare VM și OS
In articolele mele precedente am descris parcursul instalării sistemului de operare OEL, de aceea nu voi insista pe acest pas, asta și pentru că procesul decurge straightforward folosind wizard-ul de instalare.
Mașina virtuală a fost configurată ca în imaginea de mai jos:
- „Network Adapter 1” setat pe „NAT”,
- „Network Adapter 2” setat pe „Host-only”,
eth1: IP=192.168.101.128, Subnet=255.255.255.0, Gateway=192.168.101.1, DNS=192.168.101.128, Search=localdomain (Connect Automatically)
eth2: IP=192.168.245.128, Subnet=255.255.255.0, Gateway=, DNS=, Search= (Connect Automatically)
Configurări adiționale sistemului de operare
- Înainte de a începe pregătirea sistemului este recomandat sa instalați toate update-urile sistemului de operare:
# yum update
- Dacă nu ați dezactivat Security-Enhanced Linux atunci editați acum fișierul “/etc/selinux/config”
SELINUX=disabled
- Dezactivăm firewall-ul:
[root@nod1 named]# service firewalld stop Redirecting to /bin/systemctl stop firewalld.service [root@nod1 named]# chkconfig firewalld off Note: Forwarding request to 'systemctl disable firewalld.service'. Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [root@nod1 named]#
- instalare librarii prerechizite
Vom folosi pachetul oracle-rdbms-server-19-preinstall, disponibil în repository-ul din Oracle Linux 7, pentru instalarea librăriilor și configurarea parametrilor sistemului de operare
# yum install oracle-database-preinstall-19c
- Editați fișierul “/etc/hosts” și adăugați informațiile de conectivitate ale cele două noduri:
127.0.0.1 localhost.localdomain localhost
# Public
192.168.101.128 nod1.localdomain nod1
192.168.101.129 nod2.localdomain nod2
# Private
192.168.245.128 nod1-priv.localdomain nod1-priv
192.168.245.129 nod2-priv.localdomain nod2-priv
# Virtual
192.168.101.130 nod1-vip.localdomain nod1-vip
192.168.101.131 nod2-vip.localdomain nod2-vip
- Dezactivare Network Time Protocol (NTP)
Dacă este instalat serviciul ntpd
atunci acesta trebuie oprit. În acest tutorial vom folosi procesul Oracle Cluster Time Synchronization Service (ctssd) pentru a sincroniza data și ora intre cele două noduri. Pentru asta va trebui să ștergem configurările serviciului Network Time Protocol (NTP), cu root:
#service ntpd stop
#chkconfig ntpd off
#mv /etc/ntp.conf /etc/ntp.conf.orig
#rm /var/run/ntpd.pid
- Crearea directoarelor unde va fi instalat Oracle:
#mkdir -p /opt/app/oracle
#mkdir -p /opt/app/grid/19c
#chown -R oracle:oinstall /opt/app/
- Profil utilizator
Logați-vă cu utilizatorul oracle și adaugăți următoarele linii în fișierul “.bash_profile”
export ORACLE_BASE=/opt/app/oracle
export GRID_HOME=/opt/app/grid/19c
export ORACLE_HOME=/opt/app/oracle/product/19c/dbhome_1
export ORACLE_SID=cdbrac1
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
Configurarea DNS-ului
Rezolvarea numelui de scan este un pas necesar instalării Oracle Grid Infrastructure, într-un environment de producție există un server dedicat pentru serviciul de DNS. In acest articol nu am un server de DNS de aceea voi instala unul care va deservi scopului de rezolvare a numelui de scan. Procesul nu este complex dar necesită atenție la editarea câtorva fișiere de configurare.
Toate operațiile de mai jos se vor executa cu privilegii de root
- instalăm pachetul bind:
yum install bind
- editați fișierul “/etc/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.101.128; };
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; 192.168.101.0/24; };
/*
- 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 "101.168.192.in-addr.arpai." IN {
type master;
file "101.168.192.in-addr.arpa";
allow-update { none; };
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
- Creați fișierul “/var/named/localdomain.zone” cu următorul conținut:
$TTL 86400 @ IN SOA nod1.localdomain. root.localdomain. ( 2014051001 ; serial 3600 ; refresh 1800 ; retry 604800 ; expire 86400 ; minimum ) @ IN NS nod1.localdomain. localhost IN A 127.0.0.1 nod1 IN A 192.168.101.128 nod2 IN A 192.168.101.129 nod1-priv IN A 192.168.245.128 nod2-priv IN A 192.168.245.129 nod1-vip IN A 192.168.101.130 nod2-vip IN A 192.168.101.131 ora19-scan IN A 192.168.101.132 ora19-scan IN A 192.168.101.133 ora19-scan IN A 192.168.101.134
- Creați fișierul “/var/named/101.168.192.in-addr.arpa” cu următorul conținut:
$TTL 86400 @ IN SOA nod1.localdomain. root.localdomain. ( 2 3H 1H 1W 1H ) @ IN NS nod1.localdomain. @ IN PTR localdomain. nod1 IN A 192.168.101.128 ora19-scan IN A 192.168.101.132 ora19-scan IN A 192.168.101.133 ora19-scan IN A 192.168.101.134 128 IN PTR nod1.localdomain.com. 132 IN PTR ora19-scan.localdomain. 133 IN PTR ora19-scan.localdomain. 134 IN PTR ora19-scan.localdomain.
- Configurarea IP-ului de DNS în fișierul „/etc/resolv.conf” :
# Generated by NetworkManager
search localdomain
nameserver 192.168.101.128
- Configurarea permisiunilor:
# cd /var/named/
# chgrp named localdomain.zone
# chgrp named 101.168.192.in-addr.arpa
- După aceste configurări porniți serviciul de DNS:
# systemctl start named.service
- Pentru a porni automat la rebootarea sistemului, executați:
# chkconfig named on
Note: Forwarding request to 'systemctl enable named.service'.
Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.
- Verificați că funcționează astfel:
#nslookup ora19-scan.localdomain
Server: 192.168.101.128
Address: 192.168.101.128#53
Name: ora19-scan.localdomain
Address: 192.168.101.133
Name: ora19-scan.localdomain
Address: 192.168.101.134
Name: ora19-scan.localdomain
Address: 192.168.101.132
Crearea Discurilor Partajate
Oprim mașina virtuală și executăm pașii pentru a crea discurile ca în exemplul de mai jos:
- Este foarte important să se bifeze „Allocate all disk space now” și „Store virtual disk as a single file”
Acest pas se repetă pentru fiecare disc pe care dorim să-l atașăm mașinii virtuale. In acest exemplu am creat 5 discuri de 10 GB.
Crearea discurilor ASM
Pornim mașina virtuală, ne logăm cu un utilizatorul root și formatăm discurile nou instalate, in acest exemplu discurile adaugate sunt: sdb sdc sdd sde sdf
# cd /dev
# ls sd*
sda sda1 sda2 sdb sdc sdd sde sdf
# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x3b25658a.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-20971519, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519):
Using default value 20971519
Partition 1 of type Linux and of size 10 GiB is set
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
Vom proceda asemănător și pentru celelalte discuri sdc, sdd, sde, sdf
în fiecare caz, vom răspunde în următoarea ordine pentru a formata discurile nou adaugate: „n”, „p”, „1”,”Return”, „Return” and „w”.
- Instalăm librăriile necesare configurării discurilor ASM
#yum install oracleasm-support oracleasm
- Configurăm ASMLib
# 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 ('[]'). Hitting without typing an
answer will keep that current value. Ctrl-C will abort.
Default user to own the driver interface []: oracle
Default group to own the driver interface []: dba
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]:
Writing Oracle ASM library driver configuration: done
- Încărcăm modulul de kernel
# /usr/sbin/oracleasm init
Loading module "oracleasm": oracleasm
Mounting ASMlib driver filesystem: /dev/oracleasm
- Creăm cele patru discuri după cum urmează:
# /usr/sbin/oracleasm createdisk DISK1 /dev/sdb1
Writing disk header: done
Instantiating disk: done
# /usr/sbin/oracleasm createdisk DISK2 /dev/sdc1
Writing disk header: done
Instantiating disk: done
# /usr/sbin/oracleasm createdisk DISK3 /dev/sdd1
Writing disk header: done
Instantiating disk: done
# /usr/sbin/oracleasm createdisk DISK4 /dev/sde1
Writing disk header: done
Instantiating disk: done
# /usr/sbin/oracleasm createdisk DISK5 /dev/sdf1
Writing disk header: done
Instantiating disk: done
- Nu este absolut necesar dar putem rula “scandisks” pentru a reîmprospăta configurația discurilor ASM.
# /usr/sbin/oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...
- Dacă rulam “listdisks” vor fi afișate discurile ASM
# /usr/sbin/oracleasm listdisks
DISK1
DISK2
DISK3
DISK4
DISK5
Crearea celui de-al doilea nod
- Opriți mașina virtuală
shutodown -P
- Deschideți, cu ajutorul unui editor, fișierul .vmx din VMware de pe mașina gazdă și adăugați următoarele instrucțiuni:
disk.locking = "FALSE"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.dataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"
scsi1.sharedBus = "virtual"
- Retragerea discurilor partajate inainte de clonare
Inainte de a sterge discurile partajate:
După stergerea discurilor partajate componentele masinii virtuale ar trebui sa fie asematoare cu cele din captura de mai jos:
- Clonați mașina Virtuala ca în exemplul de mai jos:
- Adăugați discurile virtuale partajate pentru ambele mașini virtuale
Discurile virtuale care au fost retrase inainte de clonare vor trebui adăugate din nou, de data aceasta si pe masina virtuală sursă, rac1 cat si pe masina virtuală clonată, rac2.
In final ambele masini virtuale trebuie sa fie configurate ca in imaginea de mai jos:
- Porniți ambele mașin virtuale si logați-va cu root după care setati hostname-ul pentru fiecare masină in parte:
hostnamectl set-hostname nod1 <--pentru nodul 1
hostnamectl set-hostname nod2 <--pentru nodul 2
- Verificați dacă adresa de scanare este rezolvată în mod adecvat pe ambele noduri.
#nslookup ora19-scan.localdomain
Server: 192.168.101.128
Address: 192.168.101.128#53
Name: ora19-scan.localdomain
Address: 192.168.101.133
Name: ora19-scan.localdomain
Address: 192.168.101.134
Name: ora19-scan.localdomain
Address: 192.168.101.132
In urmatorul articol voi descrie procesul de deploy folosind wizard-ul de instalare Grid Infrastructure 19c.