Installazione Oracle Database 12cR2 su CentOS 7.7 - Container db

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 
Utilizzare i pacchetti offerti dal repository "Oracle Public Yum".
Andare come root sotto /etc/yum.repos.d e scaricare il file di configurazione repo.

Per verificare se i canali sono registrati
 # yum repolist
Controllo pacchetti installati
# yum info <nome pacchetto>
oppure
# rpm -qa  <nome pacchetto>
dove q sta per query e a all

Per installare l'ultimo pacchetto bc, ad esempio:
yum install bc

Per aggiornare un pacchetto
rpm -Uvh <nome pacchetto>
oppure 
yum update <nome pacchetto>


Centos7
Installare i seguenti pacchetti (o una versione successiva) se non già presenti:
bc
binutils-2.23.52.0.1-12.el7 (x86_64)
compat-libcap1-1.10-3.el7 (x86_64)
compat-libstdc++-33-3.2.3-71.el7 (i686)
compat-libstdc++-33-3.2.3-71.el7 (x86_64)
glibc-2.17-36.el7 (i686)
glibc-2.17-36.el7 (x86_64)
glibc-devel-2.17-36.el7 (i686)
glibc-devel-2.17-36.el7 (x86_64)
ksh
libaio-0.3.109-9.el7 (i686)
libaio-0.3.109-9.el7 (x86_64)
libaio-devel-0.3.109-9.el7 (i686)
libaio-devel-0.3.109-9.el7 (x86_64)
libgcc-4.8.2-3.el7 (i686)
libgcc-4.8.2-3.el7 (x86_64)
libstdc++-4.8.2-3.el7 (i686)
libstdc++-4.8.2-3.el7 (x86_64)
libstdc++-devel-4.8.2-3.el7 (i686)
libstdc++-devel-4.8.2-3.el7 (x86_64)
libxcb-1.9-5.el7 (i686)
libxcb-1.9-5.el7 (x86_64)
libX11-1.6.0-2.1.el7 (i686)
libX11-1.6.0-2.1.el7 (x86_64)
libXau-1.0.8-2.1.el7 (i686)
libXau-1.0.8-2.1.el7 (x86_64)
libXi-1.7.2-1.el7 (i686)
libXi-1.7.2-1.el7 (x86_64)
libXtst-1.2.2-1.el7 (i686)
libXtst-1.2.2-1.el7 (x86_64)
libXrender (i686)
libXrender (x86_64)
libXrender-devel (i686)
libXrender-devel (x86_64)
make-3.82-19.el7 (x86_64)
net-tools-2.0-0.17.20131004git.el7 (x86_64) (for Oracle RAC and Oracle Clusterware)
nfs-utils-1.3.0-0.21.el7.x86_64 (for Oracle ACFS)
smartmontools-6.2-4.el7 (x86_64)
sysstat-10.1.5-1.el7 (x86_64)

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).

- Creazione utente oracle e gruppi
# /usr/sbin/useradd -u 54321 -g oinstall -G dba,oper 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)
# more /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 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


Configurare i parametri del Kernel e i limiti delle Resource
vi /etc/sysctl.conf 
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
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

Verifica
cat /etc/sysctl.conf  | grep -i fs.aio-max-nr
cat /etc/sysctl.conf  | grep fs.aio-max-nr
cat /etc/sysctl.conf  | grep fs.file-max
cat /etc/sysctl.conf  | grep kernel.shmall
cat /etc/sysctl.conf  | grep kernel.shmmax
cat /etc/sysctl.conf  | grep kernel.shmmni
cat /etc/sysctl.conf  | grep kernel.sem
cat /etc/sysctl.conf  | grep net.ipv4.ip_local_port_range
cat /etc/sysctl.conf  | grep net.core.rmem_default
cat /etc/sysctl.conf  | grep net.core.rmem_max
cat /etc/sysctl.conf  | grep net.core.wmem_default
cat /etc/sysctl.conf  | grep net.core.wmem_max

Per rendere consistente la modifica, effettuare o il restart del sistema o eseguire il comando sysctl -p per rendere i cambiamenti del file /etc/sysctl.conf disponibili nella memoria del kernel.

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

Questi sono i minimi valori ammessi.

Se necessario aggiornare il file /etc/security/limits.conf aggiungendo queste righe.
oracle   soft   nofile   4096
oracle   hard   nofile   65536
oracle   soft   nproc    16384
oracle   hard   nproc    16384
oracle   soft   stack    10240
oracle   hard   stack    32768

Creare le directory
# mkdir -p /mount_point/app/
# chown -R oracle:oinstall /mount_point/app/
# chmod -R 775 /mount_point/app/

Per esempio:
# mkdir -p /u01/app/
# chown -R oracle:oinstall /u01/app/
# chmod -R 775 /u01/app/

Configurare Host name
Verifica che l'hostname è risolvibile
ping oradbs06
vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
xxx.xxxx.xxxx.xxx coslab02.example.it coslab02
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6


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
##### consiglio di configurare dopo installazione
#ORACLE_HOME=$ORACLE_BASE/product/12.2.0/dbhome_1
#export ORACLE_HOME
#ORACLE_SID=dbtest
#export ORACLE_SID
PATH=$PATH:$ORACLE_HOME/bin
export PATH
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:$ORACLE_HOME/lib64:$ORACLE_HOME/ctx/lib:$ORACLE_HOME/jdbc/lib:
export LD_LIBRARY_PATH



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
Avviare un server X sul pc locale ad esempio su windows usare MobaXterm.
Entrare come utente root:
# xhost +
# su - oracle
# export DISPLAY=local_host:0.0
local_host è host name o IP address della workstation dove si vuole vedere il display dell'Installer.

Lanciare xclock che esegue un programma base X11 e appare un orologio a video.
Se non funziona installare i seguenti pacchetti:
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*

Xclock serve per fare una verifica.
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

Installare il software Oracle Database
Effettuare il download dei file di installazione sotto 
/u01/software> unzip linuxx64_12201_database.zip
Viene creata una directory database.

Accedere al server direttamente con l'utenza oracle, senza passare per root e poi con il comando "su - oracle".
cd /u01/software/database>./runInstaller
Starting Oracle Universal Installer...
Checking Temp space: must be greater than 500 MB.   Actual 36718 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 8187 MB    Passed
Checking monitor: must be configured to display at least 256 colors
    >>> Could not execute auto check for display colors using command /usr/bin/xdpyinfo. Check if the DISPLAY variable is set.    Failed <<<<
Some requirement checks failed. You must fulfill these requirements before
continuing with the installation,
Continue? (y/n) [n] y









Installare il pacchetto mancante.


Rifare il check dei prerequisiti.


Cliccare su Fix & Check Again




Cliccare su Ok e se il fix ha funzionato compare la schermata seguente.


Cliccare su Install.


Al termine lanciare
/u01/app/oraInventory/orainstRoot.sh



Lanciare lo script
/u01/app/oracle/product/12.2.0/dbhome_1/root.sh


Cliccare su OK.



Configurare nuovmaente le variabili d'ambiente per l'utente oracle
vi .bash_profile
ORACLE_BASE=/u01/app/oracle
export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/12.2.0/dbhome_1
export ORACLE_HOME
#ORACLE_SID=dbtest
#export ORACLE_SID
PATH=$PATH:$ORACLE_HOME/bin
export PATH
Rieseguire il file bash per rendere consistenti le modifiche.
[oracle@coslab02 ~]$ . ./.bash_profile


Installare Oracle Database
Per la creazione del Db lanciarea dbca sotto
Accedere al server direttamente con l'utenza oracle, senza passare per root e poi con il comando "su - oracle".
cd /u01/app/oracle/product/12.2.0/dbhome_1/bin
[oracle@coslab02 bin]$ ./dbca &

Usare "&" per lavorare in backgorund così se cade la connessione al server, la sessione è ancora viva e si può continuare ad utilizzare il tool grafico.





Selezionare Local Undo perchè  prevede sia un datafile undo nel container root che uno per ogni pluggable. Questa impostazione è di default nella versione 18c. 
Il vantaggio nell'uso del Local Undo è la posssibilità di clonare i pdb senza riscontrare errori.
In questo caso le transazioni non committate non vengono clonate.




Cliccare su “Edit archive mode parameters”




Cliccare su Next.


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.


Non configuro EM ma in un secondo momento.






Cliccare su Next.


VERIFICHE post installazione
  • Controllare che il db e il listener. siano attivi.
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....................................
#
# Multiple entries with the same $ORACLE_SID are not allowed.
#
#
CDB12S:/u01/app/oracle/product/12.2.0/dbhome_1:Y


Post popolari in questo blog

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

Create e Drop Pluggable Database