Installazione Oracle Database 19c su Centos 7

La presente guida è stata realizzata a partire dal manuale di installazione reperibile dal sito Oracle. Si tratta di installazione single instance con creazione di un Container e Pluggable database.

Configurazione Server Hardware Memoria
- Runlevel 3 or 5
#who -r

- RAM
grep MemTotal /proc/meminfo
Minima:1 GB of RAM
Raccomandata: 2 GB of RAM or more
At least 8 GB RAM for Oracle Grid Infrastructure installations.

--Sistema operativo
Linux x86-64 operating system requirements
[root@coslab02 ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
[root@coslab02 etc]# uname -m
x86_64

-- /tmp: almeno un 1GB
[root@coslab02 ~]# df -h /tmp
File system Dim. Usati Dispon. Uso% Montato su
/dev/mapper/centos-root 46G 6,0G 40G 14% /

- SWAP desiderata:
Ram Swap Space
-----------------------------------------------------------------------------------------------------
Between 1 GB and 2 GB 1.5 times the size of the RAM
Between 2 GB and 16 GB Equal to the size of the RAM
More than 16 GB 16 GB

Questa è la dimensione attuale.
[root@coslab02 ~]# grep SwapTotal /proc/meminfo
SwapTotal: 4063228 kB
[root@coslab02 ~]# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 4063228 0 -1

La Ram è di 8GB quindi occorre aumentare la swap alla stessa dimensione della Ram.
[root@coslab02 ~]# cat /proc/swaps
Filename Type Size Used Priority
/dev/dm-1 partition 4063228 0 -1
[root@coslab02 ~]# cat /etc/fstab
/dev/mapper/centos-root / xfs defaults 0 0
UUID=7c7afa8f-a8e6-4c2f-9ec2-aabb04d72b8b /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0

- Spazio disco
# df -h
Per Linux x86_64 servono almeno 7.5 GB per Oracle Database Enterprise Edition.



Installazione pacchetti Centos
Al seguente link trovate i pacchetti da installare


bc
binutils
compat-libcap1
compat-libstdc++33
elfutils-libelf
elfutils-libelf-devel
fontconfig-devel
glibc
glibc-devel
ksh
libaio
libaio-devel
libX11
libXau
libXi
libXtst
libXrender
libXrender-devel
libgcc
libstdc++
libstdc++-devel
libxcb
make
smartmontools
sysstat

Oppure essendo una Redhat 7 usare i pacchetti preinstallati dal repositori Oracle  
Oracle Preinstallation RPM.

https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/installing-oracle-linux-with-public-yum-repository-support.html#GUID-190BAEE2-2B77-4AA2-AA6B-5D6AF73A4005

Scaricare yum repository

cd /etc/yum.repos.d/ 

[root@coslab02 yum.repos.d]# wget http://yum.oracle.com/public-yum-ol7.repo
--2020-07-01 10:36:16--  http://yum.oracle.com/public-yum-ol7.repo
Resolving yum.oracle.com (yum.oracle.com)... 184.51.73.173
Connecting to yum.oracle.com (yum.oracle.com)|184.51.73.173|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 16402 (16K) [text/plain]
Saving to: ‘public-yum-ol7.repo’
100%[======================================>] 16,402      --.-K/s   in 0s
2020-07-01 10:36:16 (63.6 MB/s) - ‘public-yum-ol7.repo’ saved [16402/16402]

[root@coslab02 yum.repos.d]# ls -lrt
total 24
-rw-r--r--  1 root root 16402 Aug 26  2019 public-yum-ol7.repo
-rw-r--r--. 1 root root   882 Dec 20  2019 cosrep7.repo
drwxr-xr-x. 2 root root   187 Dec 20  2019 old

[root@coslab02 yum.repos.d]#  yum install oracle-database-preinstall-19c

Potrebbe terminare in errore con il seguente comando:
GPG key retrieval failed: [Errno 14] curl#37 - "Couldn't open file /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle"

Allora occorre scaricare la chiave GPG.
# wget http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol7 -O /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle

Prima della installazione Disabilitare  Transparent HugePages
Transparent HugePages è un parametro del kernel:  khugepaged thread alloca memoria dinamicamente  e Oracle consiglia di disabilitarlo per evitare problemi di performance.
Verificare che sia abilitato:
[root@coslab02 yum.repos.d]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never

Modificare il file aggiungendo transparent_hugepage=never
vi /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="nomodeset crashkernel=auto rd.lvm.lv=vg_os/lv_root rd.lvm.lv=vg_os/lv_swap rhgb quiet transparent_hugepage=never"
GRUB_DISABLE_RECOVERY="true"

Ricostruiire il file /boot/grub2/grub.cfg eseguendo il comando seguente.
Fare prima il backup del file /boot/grub2/grub.cfg.
[root@coslab02 yum.repos.d]# grub2-mkconfig -o /boot/grub2/grub.cfg
[root@coslab02 yum.repos.d]# shutdown -r now

Verifica
[root@coslab02 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]


Creare user e gruppi del sistema operativo
Creazione gruppi oinstall e dba
# /usr/sbin/groupadd -g 54321 oinstall
Questo gruppo possiede l'Oracle Inventory cioè il catalogo di tutto il software Oracle da installare sul sistema.
# /usr/sbin/groupadd -g 54322 dba
Questo gruppo identifica gli utenti Linux con privilegi di amministratore del db
# /usr/sbin/groupadd -g 54323 oper
Il gruppo OSOPER è opzionale e identifica un gruppo di utenti del sistema operativo con un set limitato di privilegi di amministratore del database (operatore SYSOPER privilegi).

#/usr/sbin/groupadd -g 54324 backupdba
#/usr/sbin/groupadd -g 54327 asmdba
/usr/sbin/groupadd -g 54328 asmoper
/usr/sbin/groupadd -g 54326 kmdba
 /usr/sbin/groupadd -g 54325 dgdba
/usr/sbin/groupadd -g 54330 racdba

Aggiungere gruppo all'utente oracle
# /usr/sbin/useradd -u 54321 -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,racdba oracle
Questo comando crea l'utente oracle (che serve per eseguire l'installazione) e lo associa al gruppo primario oinstall e ai secondari dba, oper.......

Verifica
# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper)
# cat /etc/group
Inseriamo la password per l'utente oracle
# passwd oracle

Verificare la shell utilizzata sotto /home/oracle
echo $SHELL
/bin/bash
ls -a
. .. .bash_history .bash_logout .bash_profile .bashrc dbca.rsp db.rsp .kshrc .oracle_jre_usage oradiag_oracle oraenv_DG.sh .viminfo .Xauthority

Verificare che umask sia settato a 002 per assicurare che i file creati hanno permessi -rw-r–r– cioè 644.

/home/oracle # umask
0022
Il file contenente umask è /etc/bashrc
Altrimenti modificare il file ".bash_profile" dell'user oralce e aggiungere umask 002.
# vi .bash_profile
TMP=/tmp
TMPDIR=/tmp
export TMP TMPDIR
umask 002

Controllo dei limiti delle Risorse dell'utente oracle
# su – oracle
Soft e Hard limit della risorsa nofile (Open file descriptors)
[oracle@oradbs06 ~]$ ulimit -Sn
1024
[oracle@oradbs06 ~]$ ulimit -Hn
65536

Soft e Hard limit della risorsa nproc (Numero massimo di processi disponibili per un singolo utente)
[oracle@oradbs06 ~]$ ulimit -Su
2047
[oracle@oradbs06 ~]$ ulimit -Hu
16384

Soft e Hard limit della risorsa stack (dimensione dei stack segment del processo)
[oracle@oradbs06 ~]$ ulimit -Ss
10240
[oracle@oradbs06 ~]$ ulimit -Hs
32768

Quelli di sopra  sono i minimi valori ammessi.

Se necessario aggiornare il file /etc/security/limits.conf aggiungendo queste righe.
oracle   soft   nofile    1024
oracle   hard   nofile    65536
oracle   soft   nproc    16384
oracle   hard   nproc    16384
oracle   soft   stack    10240
oracle   hard   stack    32768
Configurare i parametri del Kernel e i limiti delle Resource
https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/minimum-parameter-settings-for-installation.html#GUID-CDEB89D1-4D48-41D9-9AC2-6AD9B0E944E3

Se hai usato Oracle Preinstallation RPM allora vengono settati questi kernel parameters in automatico nel file /etc/sysctl.d/99-oracle-database-preinstall-19c-sysctl.conf

Invece se sono stati aggiunti i pacchetti a mano allora modificare il seguente file:
vi /etc/sysctl.d/97-oracle-database-sysctl.conf
oppure
vi /etc/sysctl.d/99-sysctl.conf

kernel.sem = 250 32000 100 128
kernel.shmall = 2097152        
kernel.shmmax = 4294967295
kernel.shmmni = 4096
fs.aio-max-nr = 1048576
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576

Per cambiare il valore attuale dei parametri del kernel
/sbin/sysctl --system

Verifica dei valori minini dei parametri:
This command displays the value of the semaphore parameters in the order listed.
# /sbin/sysctl -a | grep sem


This command displays the details of the shared memory segment sizes.
# /sbin/sysctl -a | grep shm


The maximum size of a shared memory segment è teoricamente limitato dalla dimensione della RAM ma per evitare di trovarsi in una situazione in cui non la memoria di sistema non è più disponibile per nessuno impostare shmmax al 1/2 del valore della RAM.
kernel.shmall = 2097152        -- valore di default 
kernel.shmmax = 4294967295  -- corrisponde a 4GB
                            8589934592  --corrisponde a 8GB

This command displays the maximum number of file handles.
# /sbin/sysctl -a | grep file-max

This command displays a range of port numbers.
# /sbin/sysctl -a | grep ip_local_port_range
# /sbin/sysctl -a | grep rmem_default
# /sbin/sysctl -a | grep rmem_max
# /sbin/sysctl -a | grep wmem_default
# /sbin/sysctl -a | grep wmem_max
# /sbin/sysctl -a | grep aio-max-nr



Dopo la verifica per rendere consistente la modifica, effettuare /sbin/sysctl -p e il restart del sistema.


Requirements for Installing Oracle 11.2.0.4 RDBMS on OL7 or RHEL7 64-bit (x86-64) (Doc ID 1962100.1)

Aggiunti questi due parametri:
vi /etc/sysctl.conf
# sysctl kernel.numa_balancing
kernel.numa_balancing = 0

vi /etc/pam.d/login
session required pam_limits.so


Crezione della directory di instllazione
Scelgo la directory /u01 dove ho montato la nuova partizione.
mkdir -p /u01/app/

Cambiamo proprietario, che ora è root, in oracle.
[root@localhost oracle]# chown -R oracle:oinstall /u01

Cambiamo i permessi:
[root@localhost oracle]# chmod -R 775 /u01


Configurare le variabili d'ambiente per l'utente oracle
Verificare la shell utilizzata sotto /home/oracle
echo $SHELL
/bin/bash
ls -a
. .. .bash_history .bash_logout .bash_profile .bashrc dbca.rsp db.rsp .kshrc .oracle_jre_usage oradiag_oracle oraenv_DG.sh .viminfo .Xauthority
Verificare che umask sia settato a 002 per assicuarare che i file creati hanno permessi -rw-r–r– cioè 644.
/home/oracle # umask
0022
Il file contenente umask è /etc/bashrc
Altrimenti modificare il file ".bash_profile" dell'user oralce e aggiungere umask 002.
# vi .bash_profile
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=ora19s
export ORACLE_UNQNAME=SVIL1901
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1
export ORA_INVENTORY=/u01/app/oraInventory
export ORACLE_SID=SVIL1901
#export PDB_NAME=pdb1
PATH=$PATH:$ORACLE_HOME/bin
export PATH
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib

Rieseguire il profile
. ./.bash_profile

$ unset ORACLE_HOME
$ unset ORACLE_BASE
$ unset ORACLE_SID
$ unset TNS_ADMIN

Per verificare che le variabili d'ambiente siano state configurate correttamente
$ env | more

Server X
Accedere come oracle al server

$ export DISPLAY=local_host:0.0
local_host è host name o IP address della workstation dove si vuole vedere il display dell' Installer.
Per individuare usare il comando:
# who

Per verificare che X application display è settato correttamente lanciare xclok che esegue un programma base X11. Se non funziona allora installare.

xorg-x11-utils-<version>.x86_64.rpm

xorg-x11-xauth-<version>.x86_64.rpm

La conferma che  xdpyinfo utility ora esiste è il seguente file:
ls -la /usr/bin/xdpyinfo
-rwxr-xr-x 1 root root 37192 Jul 19  2006 /usr/bin/xdpyinfo*

Test:
[oracle@dbserver1 ~]$ xclock
Funziona se appare l'orologio a video.

Il server su cui si sta effettuando l'installazione del db e la workstation su cui è avviato il server X comunicano tramite protocollo TCP sulla porta 6000
netstat -nap | grep 6000

Xserver fa lo stream dell'immagine associata alla sessione conessa.


Installare il software Oracle Database
Effettuare il download dei file di installazione sotto /u01/

Creare le directory in cui verrà installato il software Oracle
# mkdir -p /u01/app/oracle
# mkdir -p /u01/app/oraInventory
# chown -R oracle:oinstall /u01/app/oracle
# chown -R oracle:oinstall /u01/app/oraInventory
# chmod -R 775 /u01/app

Creare la ORACLE_HOME
mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1

Scaricare il file zip sotto la Oracle home: 
Acceder come oracle
# cd /u01/app/oracle/product/19.0.0/dbhome_1
# unzip LINUX.X64_193000_db_home.zip
# ./runInstaller

Attenzione: è possibile installare il software insieme alla patch
$ ./runInstaller -applyRU patch_directory_location


Installare prima la ultima versione di OPatch sovrascrivendo quella esistente.





Per installare solo il software selezionare il secondo.















Lanciare gli script:



Cliccare su OK



Installare Oracle Database

Per la creazione del Db lanciare dbca sotto
cd /u01/app/oracle/product/19.0.0/dbhome_1/bin
./dbca &
& serve per avviare il processo in background





Scegliere CUSTOM DATABASE








Clicca su "Enable archiving" e su "Edit...."






Next


Di defautl la SGA + PGA è il 40% della RAM totale del server su cui è installato.
Lasciare Automatic Shared Memory Management.
Se la memoria fisica del database è più grande di 4 GB, allora l'opzione Automatic Memory Management è di default disabilitata durante l'istallazione e creazione del database. Usare Automatic shared memory management che automaticamente distribuisce la memoria disponibile tra i vari componenti della SGA. Successivamente è possibile abilitare AMM e riavviare il database.


Configurare EM in un secondo momento.






Cliccare su Next.


VERIFICHE post installazione


Controllare che il db e il listener siano attivi.

Configurare le variabili d'ambiente per l'utente oracle
Verificare la shell utilizzata sotto /home/oracle
echo $SHELL
/bin/bash
ls -a
. .. .bash_history .bash_logout .bash_profile .bashrc dbca.rsp db.rsp .kshrc .oracle_jre_usage oradiag_oracle oraenv_DG.sh .viminfo .Xauthority
Verificare che umask sia settato a 002 per assicuarare che i file creati hanno permessi -rw-r–r– cioè 644.
/home/oracle # umask
0022
Il file contenente umask è /etc/bashrc
Altrimenti modificare il file ".bash_profile" dell'user oralce e aggiungere umask 002.
# vi .bash_profile
TMP=/tmp
TMPDIR=/tmp
export TMP TMPDIR
umask 002
ORACLE_BASE=/u01/app/oracle
export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
export ORACLE_HOME
ORACLE_SID=dbtest
export ORACLE_SID
PATH=$PATH:$ORACLE_HOME/bin
export PATH

Rieseguire il profile
. ./.bash_profile

Per verificare che le variabili d'ambiente siano state configurate correttamente
$ env | more


ps -ef | grep pmon
lsnrctl status

- Modificare tnsname.ora inserendo la stringa di connessione dei pdb.
- Provare a collegarsi da fuori.
- Verificare che non sia abilitato Unified Auditing
SELECT * FROM V$OPTION WHERE PARAMETER = 'Unified Auditing';

- Modificare il file /etc/oratab se si vuole far riavviare il db allo start del server su cui è installato il db.
Impostare il flag a Y
CDBSVIL:/u01/app/oracle/product/19.0.0/dbhome_1:Y


Post popolari in questo blog

Create e Drop Pluggable Database

ORA-12154: TNS: il listener non è attualmente a conoscenza del servizio richiesto nel descrittore di connessione