L'installation du SGBDR Oracle 19c sous Linux n'est pas aussi facile que sous Windows car il y a beaucoup d'opérations à effectuer manuellement.
Préparer le système d'exploitation
- Effectuer une mise-à-jour générale du système :
# dnf update -y
- Oracle déconseille l'utilisation des "Transparent HudgePages" car cela peut causer des dysfonctionnements ou des problèmes de performances dans les instances. Pour vérifier si les "Transparent HudgPages" sont activée, taper la commande suivante. Celle-ci retourne alors 3 statuts possibles (always, madvise et never), le statut en cours étant celui entouré par des crochets :
# cat /sys/kernel/mm/transparent_hugepage/enabled [always] madvise never
- Pour désactiver les "Transparent HudgePages", il faut éditer GRUB et ajouter "transparent_hugepage=never" à la fin de la ligne GRUB_CMDLINE_LINUX :
# vim /etc/default/grub ... GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet transparent_hugepage=never"
- Regénerer le fichier grub.cfg et rebooter :
# grub2-mkconfig -o /boot/grub2/grub.cfg # reboot
- Vérifier le statut des "Transparent HudgePages" (voir étape 2)
- Désactiver SELinux :
# sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config # setenforce permissive
- Autoriser les requêtes Oracle dans le parefeu Linux :
# firewall-cmd --permanent --add-port=1521/tcp # firewall-cmd --reload
- Ajuster le noyaux linux en créant le fichier /etc/sysctl.d/98-oracle.conf avec les paramètres suivants puis en les chargeant :
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
# sysctl -p
- Créer l'arborescence de répertoires qui sera utilisée par Oracle :
# mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1 # mkdir -p /u02/oradata
Installer les pré-requis
Lancer la commande suivante pour installer tous les packages dont Oracle peut avoir besoin :
# dnf install -y bc binutils elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libXrender libXrender-devel libX11 libXau libXi libXtst libgcc librdmacm-devel libstdc++ libstdc++-devel libxcb make net-tools smartmontools sysstat unzip libnsl libnsl2
Créer et configurer les utilisateurs et groupes Oracle
- Oracle peut utiliser un certain nombre de comptes utilisateurs ou de groupes Linux. Taper les commandes suivantes pour les créer :
# groupadd -g 1501 oinstall # groupadd -g 1502 dba # groupadd -g 1503 oper # groupadd -g 1504 backupdba # groupadd -g 1505 dgdba # groupadd -g 1506 kmdba # groupadd -g 1507 racdba # useradd -u 1501 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba oracle # echo "oracle" | passwd oracle --stdin
- Attribuer les droits sur l'arborescence précédemment créée :
# chown -R oracle:oinstall /u01 /u02 # chmod -R 775 /u01 /u02
- Ajouter les variables d'environnement requises pour l'utilisateur oracle en modifiant son fichier .bash_profile :
# su - oracle # vim ~/.bash_profile
# Oracle Settings export TMP=/tmp export TMPDIR=$TMP export ORACLE_HOSTNAME=oracle-db-19c.centlinux.com export ORACLE_UNQNAME=cdb1 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=cdb1 export PDB_NAME=pdb1 export DATA_DIR=/u02/oradata export PATH=$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
# source ~/.bash_profile
- Créer le fichier de limites de sécurité /etc/security/limits.d/30-oracle.conf pour l'utilisateur oracle avec le contenu suivant :
# su -
oracle soft nofile 1024 oracle hard nofile 65536 oracle soft nproc 16384 oracle hard nproc 16384 oracle soft stack 10240 oracle hard stack 32768 oracle hard memlock 134217728 oracle soft memlock 134217728
Installer Oracle Database 19c
- Télécharger le package d'installation Oracle 19c pour Linux après avoir créé un compte et le décompresser dans le répertoire ORACLE_HOME :
# su - oracle # unzip LINUX.X64_193000_db_home.zip -d $ORACLE_HOME
- Créer la variable d'environnement suivant pour permettre à Oracle 19c de reconnaitre CentOS 8 :
# export CV_ASSUME_DISTID=RHEL8.0
- Se connecter en tant qu'utilisateur Oracle et lancer l'installation :
# su - oracle # cd $ORACLE_HOME # ./runInstaller -ignorePrereq -waitforcompletion -silent \ oracle.install.option=INSTALL_DB_SWONLY \ ORACLE_HOSTNAME=${ORACLE_HOSTNAME} \ UNIX_GROUP_NAME=oinstall \ INVENTORY_LOCATION=${ORA_INVENTORY} \ ORACLE_HOME=${ORACLE_HOME} \ ORACLE_BASE=${ORACLE_BASE} \ oracle.install.db.InstallEdition=EE \ oracle.install.db.OSDBA_GROUP=dba \ oracle.install.db.OSBACKUPDBA_GROUP=backupdba \ oracle.install.db.OSDGDBA_GROUP=dgdba \ oracle.install.db.OSKMDBA_GROUP=kmdba \ oracle.install.db.OSRACDBA_GROUP=racdba \ SECURITY_UPDATES_VIA_MYORACLESUPPORT=false \ DECLINE_SECURITY_UPDATES=true
- Se connecter en tant que root et lancer les scripts post-installation :
# su - # /u01/app/oraInventory/orainstRoot.sh # /u01/app/oracle/product/19.3.0/dbhome_1/root.sh
Configurer le démarrage du service
- Pour une prise en charge du service Oracle par systemD, créer le fichier /usr/lib/systemd/system/dbora.service avec le contenu suivant :
[Unit] Description=Oracle Database Service After=network.target [Service] Type=forking ExecStart=/u01/app/oracle/product/19.3.0/dbhome_1/bin/dbstart /u01/app/oracle/product/19.3.0/dbhome_1 ExecStop=/u01/app/oracle/product/19.3.0/dbhome_1/bin/dbshut /u01/app/oracle/product/19.3.0/dbhome_1 User=oracle TimeoutSec=300s [Install] WantedBy=multi-user.target
- Activer et vérifier ensuite le service avec les commandes suivantes :
# systemctl daemon-reload # systemctl enable --now dbora.service # systemctl status dbora.service
Créer la base-de-données
- Lancer le listener :
# lsnrctl start
- Créer la base de données avec la commande suivante :
# dbca -silent -createDatabase \ -templateName General_Purpose.dbc \ -gdbname ${ORACLE_SID} -sid ${ORACLE_SID} -responseFile NO_VALUE \ -characterSet AL32UTF8 \ -sysPassword SysPassword1 \ -systemPassword SysPassword1 \ -createAsContainerDatabase true \ -numberOfPDBs 1 \ -pdbName ${PDB_NAME} \ -pdbAdminPassword PdbPassword1 \ -databaseType MULTIPURPOSE \ -automaticMemoryManagement false \ -totalMemory 1000 \ -storageType FS \ -datafileDestination "${DATA_DIR}" \ -redoLogFileSize 50 \ -emConfiguration NONE \ -ignorePreReqs
Liens :
https://www.centlinux.com/2020/04/install-oracle-database-19c-on-centos-8.html
https://gist.github.com/hkneptune/d3e80361cf5871dc8840176741ddff50