web-dev-qa-db-fra.com

Comment installer Oracle 18c (Enterprise Edition) sur Ubuntu 18.04?

Cette question est restée sans réponse depuis la sortie d'Oracle 18c. À l'exception de la plate-forme Linux Ubuntu, la plupart des autres plates-formes Linux prennent en charge l'installation d'Oracle 18c. J'ai moi-même testé cela sur CentOS 7 et Oracle 18c a été installé sans aucun problème!

Il est regrettable que Oracle Corporation n'ait pas documenté la procédure d'installation en particulier pour Ubuntu Linux platform, néanmoins une bonne chose est que le fichier image db_home.Zip est générique, installable sur toutes les plateformes Linux.

Alors, comment puis-je installer Oracle 18c (Enterprise Edition) sur Ubuntu 18.04?

4
Marmayogi

Commençons par Partie I de la session de réponse.

1. Pré-requis:

1.1. Espace de stockage requis

  • Le fichier de téléchargement Oracle est db_home.Zip Dont la taille est de 4,3 Go. Si vous n'avez pas beaucoup d'espace de stockage dans le répertoire $HOME Ou /tmp, Vous pouvez utiliser un Pendrive d'une capacité d'au moins 8 Go pour conserver le fichier téléchargé db_home.Zip Jusqu'à l'extraction est fait.
  • Comme nous allons installer Oracle sur le répertoire /opt, Il devrait avoir un espace libre inutilisé d'au moins 13 Go car l'extraction Oracle elle-même consommera environ 9,3 Go d'espace de stockage. Utilisez la commande suivante pour vérifier l'espace de stockage de la partition /opt:

$ df -h /optenter image description hereFigure-1: Amount of free space available under "/opt" partition.

1.2. JDK-11 est installé sur votre ordinateur.

$ echo $Java_HOMEenter image description hereFigure-2: Installation of JDK-11 is already done.

1.3. Activer la prise en charge multi-arc (32-bit support).

Avant d'activer 32-bit support Pour Ubuntu 18.04 64 bits, vérifions que vous avez une architecture de noyau 64 bits:

$ dpkg --print-architectureenter image description hereFigure-3: This Computer system has 64-bit Kernel Architecture.

La prise en charge de Multi-Arch vous permet d'utiliser des bibliothèques 32 bits aux côtés de bibliothèques 64 bits.

$ dpkg --print-foreign-architecturesenter image description hereFigure-4: This Computer system also supports i386 Architecture (i.e. supports 32-bit Libraries too).

Si vous obtenez une sortie comme la figure 4, vous devez interrompre cette étape et passer à l'étape suivante 1.4.

Activez la prise en charge multi-Arch en tapant:

$ Sudo dpkg --add-architecture i386
$ Sudo apt-get update

Il commence à télécharger la mise à jour et à s'exécuter. Après cela, vous donnez la commande suivante:

$ Sudo apt-get dist-upgrade

Vérifiez maintenant la prise en charge d'i386 en tapant ce qui suit et vous devriez obtenir une sortie comme la figure 4:

$ dpkg --print-foreign-architectures

1.4. Installez les packages de dépendance requis pour l'installation d'Oracle.

Exécutez les commandes suivantes pour installer les packages dépendants:

$ Sudo apt-get update
$ Sudo apt-get upgrade
$ Sudo apt-get install build-essential libaio1 libaio-dev rpm rpm-common ndctl

1.5. Créer des liens symboliques.

Créez les liens logiciels requis afin que l'installation puisse trouver les fichiers dont elle a besoin aux endroits qu'elle attend d'eux:

$ Sudo mkdir -p /usr/lib64

$ Sudo ln -s /usr/bin/rpm /bin/
$ Sudo ln -s /usr/bin/awk /bin/
$ Sudo ln -s /usr/bin/basename /bin/
$ Sudo ln -s /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a /usr/lib64/
$ Sudo ln -s /usr/lib/x86_64-linux-gnu/libc_nonshared.a /usr/lib64/
$ Sudo ln -s /usr/lib/x86_64-linux-gnu/libndctl.so.6.10.1 /usr/lib64/libndctl.so
$ Sudo ln -s /usr/lib/x86_64-linux-gnu/libnuma.so.1.0.0 /usr/lib64/libnuma.so

Découvrez à qui /bin/sh Pointe:

$ ls -l /bin/shenter image description hereFigure-5: '/bin/sh' points towards 'dash' Shell

Si /bin/sh Pointe vers dash Shell (référez-vous à la figure 5 ci-dessus), alors vous êtes bon! Maintenant, vous passez cette étape et passez à l'étape suivante 1.6.

enter image description hereFigure-6: /bin/sh points towards 'bash' Shell

S'il s'agit de bash Shell, comme illustré à la figure 6, créez les liens symboliques suivants:

$ Sudo ln -s /usr/lib/x86_64-linux-gnu/crti.o /usr/lib64/
$ Sudo ln -s /usr/lib/x86_64-linux-gnu/crtn.o /usr/lib64/
$ Sudo ln -s /usr/lib/x86_64-linux-gnu/crt1.o /usr/lib64/

1.6. Configurez les paramètres du noyau avec /etc/sysctl.conf:

Pour configurer les paramètres du noyau, suivez simplement la procédure ci-dessous:

$ Sudo cp /etc/sysctl.conf /etc/sysctl.conf.back

$ Sudo vi /etc/sysctl.conf

Copiez et collez le contenu ci-dessous dans le fichier.

#  ------------------------------------------------
# kernel parameter configuration for 18c installation
# 1. Configure kernel shared memory segment
# Calculate shmmax and shmall based on your Computer system RAM (physical memory).
# shmmax = (half the size of RAM in bytes) = (16 GB / 2) * 1024*1024*1024 = 8589934592 bytes
#  (or)         = (one quarter of RAM in bytes) = 4294967296 bytes
# shmall = shmmax/pagesize = 8589934592 / 4096 = 2097152 pages
# 2. Configure kernel semaphore parameters which are semmsl, semmns, semopm and semmni respectively.
# kernel.sem = semmsl  semmns  semopm  semmni = 250 32000 100 128
#
# to display all kernel parameters, issue this command: sysctl -a
# to display current kernel parameters, issue this command: sysctl -p
# -------------------------------------------------------
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.shmmax = 8589934592
kernel.sem = 250 32000 100 128
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.ip_local_port_range = 9000 65500
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

Enregistrez et quittez l'éditeur vi.

Exécutez la commande suivante pour afficher les paramètres actuels du noyau.

$ Sudo sysctl -penter image description hereFigure-7: The list of Kernel Parameters configured in "/etc/sysctl.conf" file.

1.7. Configurer les limites du shell pour l'utilisateur Oracle

Historiquement, les limites de ressources pour les processus sont définies dans /etc/security/limits.conf. Ce fichier est lu au moment de la connexion pour les utilisateurs qui se connectent avec PAM (via le fichier pam_limits.so). Cependant, les services système démarrés via systemd n'utilisent pas PAM pour la connexion, les limites de /etc/security/limits.conf Sont donc ignorées.

Créez une connexion GUI et ouvrez un terminal avec Ctrl+Alt+T Et exécutez la commande suivante:

$ ulimit -n -s -u -lenter image description hereFigure-8: Limits for a GUI login with empty '/etc/systemsd/user.conf' file.

Effectuez une connexion non GUI à l'aide de la commande su <username>, Puis exécutez la commande ulimit:

$ su krishna
$ ulimit -n -s -u -l

enter image description hereFigure-9: Limits for a non-GUI login with empty '/etc/security/limits.conf' file.

1.7.1. Configurer les paramètres de limites pour les connexions GUI avec le fichier /etc/systemd/user.conf:

Pour configurer les paramètres de limites system.conf, Suivez simplement la procédure ci-dessous:

$ Sudo cp /etc/systemd/system.conf /etc/systemd/system.conf.back
$ Sudo vi /etc/systemd/system.conf

Copiez et collez les lignes ci-dessous dans le fichier.

DefaultLimitNOFILE=65535
DefaultLimitNPROC=65535

Enregistrez et quittez l'éditeur vi.

Pour configurer les paramètres de limites dans user.conf, Suivez simplement la procédure ci-dessous:

$ Sudo cp /etc/systemd/user.conf /etc/systemd/user.conf.back
$ Sudo vi /etc/systemd/user.conf

Copiez et collez les lignes ci-dessous dans le fichier.

DefaultLimitNOFILE=65000
DefaultLimitNPROC=65000

Enregistrez et quittez l'éditeur vi.

Redémarrez l'ordinateur afin d'effectuer les modifications.

Observation : lorsque j'ai tenté de modifier le paramètre DefaultLimitSTACK en différentes valeurs dans les deux '/etc/systemd/system.conf' et '/etc/systemd/user.conf', le système a gelé ou s'est écrasé au redémarrage. Bien que j'ai réussi à restaurer le système la plupart du temps, mais à deux reprises, j'ai dû réinstaller le système d'exploitation Ubuntu à partir de zéro et c'était vraiment une période difficile!

Créez une connexion GUI et ouvrez un terminal avec Ctrl+Alt+T Et exécutez la commande suivante:

$ ulimit -n -s -u -lenter image description hereFigure-10: Limits for a GUI login with parameters configured in '/etc/systemsd/user.conf' file.

Effectuez une connexion non GUI à l'aide de la commande su <username>, Puis exécutez la commande ulimit:

$ su krishna
$ ulimit -n -s -u -l

enter image description hereFigure-11: Limits for a non-GUI login with empty '/etc/security/limits.conf' file.

1.7.2. Configurez les paramètres de limites pour les connexions non GUI avec le fichier /etc/security/limits.conf:

Pour configurer les paramètres de limites dans limits.conf, Suivez simplement la procédure ci-dessous:

$ Sudo cp /etc/security/limits.conf /etc/security/limits.conf.back
$ Sudo vi /etc/security/limits.conf

Copiez et collez le contenu ci-dessous dans le fichier.

#-------------------------------------------------------------------------------------------------
# Shell limits for users of Oracle 18c
# [domain] is either username or group or the wildcard *, for default entry or 
# the wildcard %, can be also used with %group syntax, for maxlogin limit
# [type] is either soft (enforcing soft limits) or hard (enforcing hard limits)
# [item] is among core, data, fsize, memlock, nofile, rss, stack, cpu, nproc, as,
# maxlogin, maxsyslogins, priority, locks, sigpending, msgqueue, Nice, rtprio
#[domain][type]  [item]  [value]
#-------------------------------------------------------------------------------------------------
krishna   soft   nofile   60000
krishna   hard   nofile   65535
krishna   soft   nproc    60000
krishna   hard   nproc    65535
krishna   soft   stack    30000
krishna   hard   stack    32768
krishna   soft   memlock  3000000
krishna   hard   memlock  3145728

Enregistrez et quittez l'éditeur vi.

Redémarrez l'ordinateur afin d'effectuer les modifications. Créez une connexion GUI et ouvrez un terminal avec Ctrl+Alt+T Et exécutez la commande suivante:

$ ulimit -n -s -u -lenter image description hereFigure-12: Limits for a GUI login with parameters configured in '/etc/systemsd/user.conf' file.

Effectuez une connexion non GUI à l'aide de la commande su <username>, Puis exécutez la commande ulimit:

$ su krishna
$ ulimit -n -s -u -l

enter image description hereFigure-13: Limits for a non-GUI login with parameters configured in '/etc/security/limits.conf' file.

Utilisez l'éditeur vi et éditez /etc/security/limits.conf Afin de changer "krishna" En "Oracle" Car le nom d'utilisateur krishna a été utilisé pour générer des captures d'écran et expliquer les concepts. Voici les paramètres souhaités pour l'installation d'Oracle:

Oracle   soft   nofile   60000
Oracle   hard   nofile   65535
Oracle   soft   nproc    60000
Oracle   hard   nproc    65535
Oracle   soft   stack    30000
Oracle   hard   stack    32768
Oracle   soft   memlock  3000000
Oracle   hard   memlock  3145728

1.7.3. Comment afficher les limites d'un processus utilisateur?

Pour afficher les limites d'un processus utilisateur, il vous suffit de "cat" Le fichier de limites comme ceci:

$ Sudo cat /proc/PID/limits

PID peut être trouvé en utilisant la commande ps.

$ ps -a | grep -v tty2 | grep gnome-Shellenter image description hereFigure-14: PID for gnome-Shell.

$ Sudo cat /proc/1202/limitsenter image description hereFigure-15: Soft limits for gnome-Shell (marked in red).

MaxStackSize est 8 192 Ko (8388608% 1024), MaxProcess est 63 077, MaxOpenFile est 1 024 et MaxLockedMemory est 16 384 Ko (16777216% 1024). Comparez ces valeurs avec la figure 11.

$ ps -a | grep -v tty2 | grep bashenter image description hereFigure-16: PID for 'bash'.

$ Sudo cat /proc/2697/limitsenter image description hereFigure-17: Soft limits for 'bash' (marked in red).

MaxStackSize est de 30 000 Ko (30720000% 1024), MaxProcess est de 60 000, MaxOpenFile est de 60 000 et MaxLockedMemory est de 3 000 000 Ko (3072000000% 1024). Comparez ces valeurs avec la figure 13.

1.7.4. Ajoutez pam_limits à votre configuration PAM (modules d'authentification enfichables).

/etc/security/limits.conf Permet de définir des limites de ressources pour les utilisateurs connectés via PAM. C'est un moyen utile d'empêcher, par exemple, les fourches explosives d'utiliser toutes les ressources du système. Puisque /etc/security/limits.conf Est lu par pam_limits.so, Vous devez vérifier que ce module est activé dans les fichiers: login, common-session, common-session-noninteractive, su. Effectuez des sauvegardes avant d'apporter des modifications:

$ Sudo cp /etc/pam.d/login /etc/pam.d/login.back
$ Sudo cp /etc/pam.d/common-session /etc/pam.d/common-session.back
$ Sudo cp /etc/pam.d/common-session-noninteractive /etc/pam.d/common-session-noninteractive.back
$ Sudo cp /etc/pam.d/su /etc/pam.d/su.back

Exécutez les commandes suivantes:

$ echo 'session    required     pam_limits.so' | Sudo tee -a /etc/pam.d/login
$ echo 'session    required     pam_limits.so' | Sudo tee -a /etc/pam.d/common-session
$ echo 'session    required     pam_limits.so' | Sudo tee -a /etc/pam.d/common-session-noninteractive
$ echo 'session    required     pam_limits.so' | Sudo tee -a /etc/pam.d/su

Remarque : Consultez le fichier /var/log/auth.log Pour toute erreur liée aux limites.

1.8. Configurez Linux sécurisé. Pour vérifier que l'ordinateur a configuré pour secured linux, Tapez la commande:

$ sestatusenter image description hereFigure-18: Output confirms that secured linux is not installed which is good.

Si vous obtenez une sortie comme ci-dessus Figure-18, alors vous êtes bon! Maintenant, vous passez cette étape et passez à l'étape suivante-1.9.

Si vous aviez installé le package policycoreutils et si vous obtenez une sortie comme dans la figure 19 ci-dessous, alors vous êtes bon aussi! Vous interrompez cette étape et passez à l'étape suivante-1.9.

$ Sudo sestatus

enter image description hereFigure-19: Output of 'sestatus' command.

Comme vous avez déjà configuré Linux sécurisé, changez donc l'indicateur SELINUX en permissif en éditant le fichier /etc/selinux/config:

$ Sudo cp /etc/selinux/config /etc/selinux/config.back
$ Sudo vi /etc/selinux/config

Maintenant, définissez le drapeau SELINUX sur permissive:

SELINUX=permissive

Enregistrez et quittez l'éditeur vi.

Pour confirmer votre modification, exécutez la commande suivante:

$ Sudo sestatus

Remarque : Étant donné que mon ordinateur n'était pas configuré pour secure linux, Je n'ai pas pu produire de capture d'écran pour la commande ci-dessus!

1.9. Désactivez les pages immenses transparentes.

Transparent Huge Pages (THP) est un système de gestion de mémoire Linux qui réduit la surcharge des recherches TLB (Translation Lookaside Buffer) sur les machines avec de grandes quantités de mémoire en utilisant des pages mémoire plus grandes.

Cependant, les charges de travail de base de données fonctionnent souvent mal avec THP, car elles ont tendance à avoir des modèles d'accès mémoire plutôt que contigus. La recommandation générale pour MySQL, MongoDB, Oracle, etc. est de désactiver THP sur les machines Linux pour garantir les meilleures performances.

Vous pouvez vérifier si THP est activé ou non en exécutant:

$ cat /sys/kernel/mm/transparent_hugepage/enabledenter image description hereFigure-20: The output shows THP 'enabled' is set to default value '[madvise]' in this computer at present.

$ cat /sys/kernel/mm/transparent_hugepage/defragenter image description hereFigure-21: The output shows THP 'defrag' is set to default value '[madvise]' in this computer at present.

Si la figure 20 et la figure 21 affichent une sortie comme [never], Alors THP n'est ni activé ni en cours d'exécution.

Comment désactiver THP pendant toute la session en cours?

Maintenant, lancez les commandes suivantes:

$ su -
# echo never > /sys/kernel/mm/transparent_hugepage/enabled
# exit
$ cat /sys/kernel/mm/transparent_hugepage/enabled

enter image description hereFigure-22: The output shows THP enabled is stopped from this computer as indicated by the value '[never]'.

$ su -
# echo never > /sys/kernel/mm/transparent_hugepage/defrag
# exit
$ cat /sys/kernel/mm/transparent_hugepage/defrag

enter image description hereFigure-23: The output shows THP 'defrag' is stopped from this computer as indicated by the value '[never]'.

Comment désactiver THP de manière persistante et permanente pour toujours?

Cependant, une fois le système redémarré, il reviendra à sa valeur par défaut. Pour rendre le paramètre persistant sur Ubuntu 18.04, vous pouvez désactiver THP au démarrage du système en créant un fichier d'unité systemd:

$ Sudo vi /etc/systemd/system/disable-thp.service

Copiez et collez ce qui suit dans le fichier /etc/systemd/system/disable-thp.service:

# ---------------------------------------------------
# Disable THP in Ubuntu 18.04:
# ---------------------------------------------------
[Unit]
Description=Disable Transparent Huge Pages (THP)
[Service]
Type=simple
ExecStart=/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled && echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag"

[Install]
WantedBy=multi-user.target

Pour activer et exécuter le fichier /etc/systemd/system/disable-thp.service Au démarrage, tapez les commandes suivantes:

$ Sudo systemctl daemon-reload
$ Sudo systemctl start disable-thp
$ Sudo systemctl enable disable-thp

enter image description hereFigure-24: The THP disable service is enabled to start up at boot time.

$ Sudo systemctl status disable-thpenter image description hereFigure-25: The THP disable service has started successfully.

Maintenant, pour vérifier que THP est désactivé définitivement, tapez la commande suivante:

$ cat /sys/kernel/mm/transparent_hugepage/enabledenter image description hereFigure-26: The output shows THP 'enabled' is turned off persistently as indicated by the value '[never]'.

$ cat /sys/kernel/mm/transparent_hugepage/defragenter image description hereFigure-27: The output shows THP 'defrag' is turned off persistently as indicated by the value '[never]'.

1.10. Points de contrôle final pertinents pour l'installation d'Oracle.

1.10.1. Utilisez la commande suivante pour déterminer la taille physique RAM sur le serveur:

$ grep MemTotal /proc/meminfoenter image description hereFigure-28: Abundant Physical RAM is available (16 GB).

Remarque : Si la taille du physique RAM installé dans le système est inférieure à la taille requise (2 Go) , vous devez alors installer plus de mémoire avant de continuer.

1.10.2. Déterminez la taille de l'espace d'échange configuré:

$ grep SwapTotal /proc/meminfoenter image description hereFigure-29: Abundant Memory is available for swap partition (16 GB).

Remarque : Si la taille de la mémoire d'échange dans le système est inférieure à la taille requise (voir le tableau ci-dessous qui est recommended by Oracle), Alors vous devez configurer plus de mémoire avant de continuer.

RAM                         Swap Space
Between 1 GB and 2 GB       1.5 times the size of RAM
Between 2 GB and 16 GB      Equal to the size of RAM
More than 16 GB             16 GB

1.10.3. Déterminez la taille de l'espace /tmp Configuré:

$ df -h /tmpenter image description hereFigure-30: Abundant Memory is available for '/tmp' partition (16 GB).

Remarque : Si la taille de la mémoire /tmp Dans le système est inférieure à la taille requise (400 Mo), remplissez l'une des Etapes suivantes:

  • Supprimez les fichiers inutiles du répertoire /tmp Pour répondre à l'espace disque requis.
  • Lorsque vous définissez l'environnement de l'utilisateur Oracle, définissez également les variables d'environnement TMP et TMPDIR dans le répertoire que vous souhaitez utiliser au lieu de /tmp.

1.10.4. Déterminez la quantité d'espace libre RAM et espace d'échange de disque sur le système:

$ free -henter image description hereFigure-31: A glance of Free RAM (physical) and swap (disk space) available on the system.

1.10.5. Déterminez si l'architecture du système peut exécuter le logiciel:

Vérifiez que l'architecture du processeur correspond à la version du logiciel Oracle à installer. Par exemple, vous devriez voir ce qui suit pour un système de bits x86-64.

$ uname -menter image description hereFigure-32: The output shows that the computer system has 64-bit architecture.

Si vous ne voyez pas la sortie attendue, vous ne pouvez pas installer le logiciel sur ce système

1.10.6. Exemple de table de partition pour un SSD de 120 Go adapté à l'installation Oracle:

J'ai un SSD de 120 Go sur lequel Ubuntu a été installé. Voici mes détails de partition:

Sl.No:  Partition  File System           Device         Allocated Size   Partition Type
1       efi        FAT32                /dev/sda1       0.5 GB           Primary
2       swap       Swap area            /dev/sda2       16 GB            Primary
3       /          ext4 with journaling /dev/sda3       6 GB             Primary
4       /usr       ext4 with journaling /dev/sda4       16 GB            Primary
5       /opt       ext4 with journaling /dev/sda5       44 GB            Primary
6       /tmp       ext2                 /dev/sda6       16 GB            Primary
7       /var       ext4 with journaling /dev/sda7       8 GB             Primary
8       /home      ext4 with journaling /dev/sda8       13.5 GB          Primary

J'ai organisé cette configuration de partition en particulier avec Oracle 18c (Enterprise Edition) à l'esprit

1.10.7. Vérifiez que la mémoire partagée (/dev/shm) Est montée correctement avec une taille suffisante:

Exécutez la commande suivante pour vérifier la disponibilité de la mémoire partagée et sa taille totale:

$ df -h /dev/shmenter image description hereFigure-33: The tmpfs filesystem mounted on '/dev/shm' and has 7.8 GB of total shared memory.

Pour réduire la limite de 7,8 Go à 7,0 Go, exécutez la commande suivante:

$ Sudo mount -o remount,size=7G /dev/shm
$ df -h /dev/shm

enter image description hereFigure-34: The '/dev/shm' shared memory size has changed from 7.8 GB to 7 GB.

Pour limiter définitivement toute modification de la taille de /dev/shm Et pour vous assurer que le système de fichiers en mémoire est monté au redémarrage du système, placez cette entrée dans le fichier /etc/fstab Comme suit:

Faites d'abord une sauvegarde:

$ Sudo cp /etc/fstab /etc/fstab.back

Modifiez le paramètre de taille à 8 Go:

$ echo '# To restrict any modification on the size of /dev/shm permanently' | Sudo tee -a /etc/fstab
$ echo '# To ensure that the in-memory file system is mounted when the system restarts' | Sudo tee -a /etc/fstab
$ echo 'tmpfs     /dev/shm        tmpfs   defaults,size=8G        0 0' | Sudo tee -a /etc/fstab

$ grep tmpfs /etc/fstabenter image description hereFigure-35: Entry of 'tmpfs' filesystem in '/etc/fstab' file mounted on '/dev/shm' with 8 GB shared memory.

Afin d'effectuer nos modifications effectuées sur /etc/fstab Remontez immédiatement /dev/shm:

$ Sudo mount -o remount /dev/shm
$ df -h /dev/shm

enter image description hereFigure-36: The '/dev/shm' shared memory size is 8 GB.

1.11. Configuration réseau.

1.11.1. Configurez le fichier /etc/hosts.

Pour connaître le contenu du fichier /etc/hosts, Exécutez cette commande:

$ cat /etc/hostsenter image description hereFigure-37: Contents of /etc/hosts file.

Le contenu de la capture d'écran de la figure 37 est reproduit ci-dessous, afin que tous ceux qui en ont besoin puissent copier et coller.

# <IP-address> <fully-qualified-machine-name> <machine-name>
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain
::1         localhost localhost.localdomain localhost6 localhost6.localdomain

Eh bien, l'ordre de résolution des noms est en fait défini dans /etc/nsswitch.conf, Et vous devriez voir une entrée comme celle-ci:

hosts:          files dns

Tapez la commande suivante pour voir l'enregistrement réel correspondant aux hôtes:

$ cat /etc/nsswitch.conf | grep hosts:enter image description hereFigure-38: Hosts record in '/etc/nsswich.conf' where 'files' precedes dns in order which is good.

avertissement : si le fichier /etc/hosts n'est pas configuré correctement, le programme d'installation Oracle échouera à un moment donné!

1.11.2. Configurez le fichier /etc/resolv.conf.

Pour afficher les interfaces réseau disponibles sur le système, exécutez la commande suivante:

$ ip link showenter image description hereFigure-39: The WiFi network adapter wlp5s0 is active, up and running.

Le fichier de configuration réseau netplan/.yaml Doit être vérifié pour les détails de configuration. Pour afficher le contenu du fichier, exécutez la commande suivante:

$ cat /etc/netplan/01-network-manager-all.yamlenter image description hereFigure-40: Network Manager file '01-network-manager-all.yaml' is not configured.

Découvrez si /etc/resolv.conf Est un static file Ou symlink par la commande suivante:

$ ls -l /etc/resolv.confenter image description hereFigure-41: File '/etc/resolv.conf' is a symlink pointing to stub file 'stub-resolv.conf'.

Affichez le contenu de /etc/resolv.conf Par la commande: cat /etc/resolv.confenter image description hereFigure-42: The contents of symlink '/etc/resolv.conf' having 127.0.0.53 as nameserver.

Le DNS indiqué par /etc/resolv.conf Est 127.0.0.53 Mais pas le serveur de noms par défaut configuré pour DHCP. Exécutez la commande suivante pour trouver le serveur DNS par défaut:

$ systemd-resolve --status wlp5s0enter image description hereFigure-43: The default DNS server for WiFi network adapter is 192.168.43.1.

Affichez le contenu de /run/systemd/resolve/resolv.conf, Par la commande:

$ cat /run/systemd/resolve/resolv.confenter image description hereFigure-44: The contents of '/run/systemd/resolve/resolv.conf' indicating default nameserver. Compare with figure-43

A partir de la figure 44, vous pouvez observer que /run/systemd/resolve/resolv.conf Est celui qui porte vraiment le serveur de noms par défaut 192.168.43.1.

Exécutez la commande suivante pour modifier le lien symbolique /etc/resolv.conf Pour pointer le serveur DNS par défaut 192.168.43.1 Au lieu de 127.0.0.53.

$ Sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
$ ls -l /etc/resolv.conf

enter image description hereFigure-45: File /etc/resolv.conf is a symlink pointing to default nameserver which is good.

Après avoir configuré sysmlink comme illustré à la figure-45, vous devez vous assurer que votre Wi-Fi est connecté, opérationnel et en exécutant la commande suivante:

$ nmcli device

enter image description hereFigure-45-a: Wi-Fi network interface adapter 'wlp5s0' is connected, up and running.

1.12. Désactivez le pare-feu Linux.

Si le pare-feu Linux est activé, vous devrez le désactiver, procédez comme suit:

$ Sudo ufw disable
$ Sudo ufw status

enter image description hereFigure-46: Disable Firewall before Oracle installation.

Remarque : N'oubliez pas d'activer le pare-feu une fois l'installation terminée à l'aide de la commande: $ Sudo ufw enable

La partie I se termine ici et partie II de la session de réponse commencera, qui traite de:

1) Create Oracle User, and Groups.
2) Creation of Oracle Mount, Base and Home directories.
3) Tips for Oracle account creation to download installable image file.
4) Extraction of image file.
5) Manipulation and altering of make files required for building binaries on Ubuntu Linux platform.
8
Marmayogi

La partie III de la session de réponse commence maintenant.

3. Installation d'Oracle 18.c à l'aide de runInstaller.

3.1. Répertoire de nettoyage /tmp: Exécutez la commande suivante pour nettoyer le répertoire /tmp Comme première étape avant le début de l'installation:

$ cd /tmp
$ Sudo rm -rf *

3.2. Commencer l'installation:

Exécutez la commande runInstaller à partir du répertoire de base Oracle uniquement. N'utilisez pas la commande runInstaller qui réside à $Oracle_HOME/oui/bin/ Ou à tout autre emplacement pour installer Oracle Database, Oracle Database Client, or Oracle Grid Infrastructure.

Dans le répertoire de base Oracle, exécutez la commande runInstaller pour démarrer l'assistant de configuration de la base de données Oracle.

$ cd /Oracle18c/app/Oracle/product/18.0.0/dbhome_1
$ ./runInstaller

enter image description hereFigure-64: Execute 'runInstaller' from '/Oracle18c/app/Oracle/product/18.0.0/dbhome_1/' directory.

enter image description hereFigure-65: Launching Oracle Database 18c Installer.

enter image description hereFigure-66: Hit button Yes and go ahead with installation.

enter image description hereFigure-67: Select 'Set up Software Only' option and press Next.

enter image description hereFigure-68: Select 'Single instance database installation' option and press Next.

enter image description hereFigure-69: Select 'Enterprise edition' option and press Next.

enter image description hereFigure-70: Accept the default 'Intallation Location' and press Next.

enter image description hereFigure-71: Accept the default Oracle Inventor directory/Oracle18c/app/oralInventory and hit Next.

enter image description hereFigure-72: Select Operating System Groups and press Next.

enter image description hereFigure-73: This is Summary screen and Click button 'Save Response File' to take a copy of 'db.rsp' file.

enter image description hereFigure-74: Double-click "Documents" folder and then save a copy of 'db.rsp' file by clicking "Save" button.

Veuillez enregistrer le fichier de réponses db.rsp Dans le répertoire ~/Documents. C'est pour votre référence.

enter image description hereFigure-75: Now click Install button on the Summary Screen to proceed further.

enter image description hereFigure-76: Now Install Product is under progress…...

enter image description hereFigure-77: Execute both the scripts one after another with "root" login.

Ouvrez un 2e terminal en tapant Ctrl+AlT+T. Connectez-vous en ligne de commande en tant qu'utilisateur root en tapant su –:

$ su -

Copiez le chemin complet du premier script orainstRoot.sh Et collez-le sur le terminal (commande préfixe avec ". ")

# . /Oracle18c/app/oraInventory/orainstRoot.sh

enter image description hereFigure-78: Execution of first script orainstRoot.sh with "root" login.

Maintenant, copiez le chemin complet du deuxième script root.sh Et collez-le sur le terminal (commande préfixe avec ". ") Et appuyez sur <CR>.

# . /Oracle18c/app/Oracle/product/18.0.0/dbhome_1/root.sh

Pendant l'exécution de ce script, il vous sera demandé "Enter the full pathname of the local bin directory: /usr/local/bin:". Vous acceptez simplement ce chemin "default bin directory" En appuyant sur la touche <return>.

Il y aura une autre question posée par la suite, "Do you want to setup Oracle Trace File Analyzer (TFA) now ? yes [no] : " pour laquelle vous tapez "y" Et l'installez.

enter image description hereFigure-79: Execution of second script root.sh with "root" login.

Une fois l'exécution des deux scripts terminée avec la connexion "root", Vous devez revenir à l'installateur et appuyer sur le bouton OK pour poursuivre l'installation (voir capture d'écran ci-dessous figure-80).

enter image description hereFigure-80: After the execution of scripts hit OK button and proceed further.

enter image description hereFigure-81: Click Close button to finish Database software Installation.

enter image description hereFigure-82: Congratulations! You have successfully installed database software using runInstaller interactively!!

3.3. Installation de LISTENER:

Ouvrez un terminal en appuyant sur Ctrl+Alt+T Et tapez la commande suivante:

$ cp /Oracle18c/app/Oracle/product/18.0.0/dbhome_1/network/install/netca_typ.rsp ~/Documents/.

Tapez la commande cat netca_typ.rsp Pour répertorier le contenu du fichier netca_typ.rsp:

$ cat ~/Documents/netca_typ.rspenter image description hereFigure-83: The contents of typical 'netca_typ.rsp' capable of generating 'listener.ora' and 'sqlnet.ora'

Le fichier de réponses est bien que capable de créer listener.ora Et sqlnet.ora Mais pas tnsnames.ora. Alors, essayons netca_typ.rsp De transformer le type "custom" Afin de générer un alias TNS!

Prenez d'abord une copie de netca_typ.rsp Vers netca.rsp Puis lancez des commandes par la suite:

$ cp ~/Documents/netca_typ.rsp ~/Documents/netca.rsp
$ sed -i 's/TYPICAL/CUSTOM/' ~/Documents/netca.rsp
$ sed -i 's/typical/custom/' ~/Documents/netca.rsp

À l'aide de l'éditeur vi, copiez et ajoutez le contenu suivant à netca.rsp:

#---------------------------------------------------------
# Instructions to create tnsnames.ora having TNS alias list
#----------------------------------------------------------
NSN_NUMBER=1
NSN_NAMES={"orcl"}
NSN_SERVICE={"orcl"}
NSN_PROTOCOLS={"TCP;UBUNTU-H170N-WIFI;1521"}

Avertissement : N'oubliez pas de remplacer UBUNTU-H170N-WIFI Par votre Computer Hostname.
Note-1: Pour imprimer votre computer hostname, Exécutez cette commande: $ hostname
Note-2: Pour imprimer votre computer FQDN, Exécutez cette commande: $ hostname -f Ou $ hostname -A

Enregistrez et quittez l'éditeur vi.

Le contenu de wised up netca.rsp Qui est maintenant capable de générer tnsnames.ora Est illustré ci-dessous:

$ cat ~/Documents/netca.rspenter image description hereFigure-84: The wised up 'netca.rsp' now generates not only 'listener.ora' and 'sqlnet.ora' but also 'tnsnames.ora'.

Exécutez l'outil d'aide à la configuration du réseau netca:

$ /Oracle18c/app/Oracle/product/18.0.0/dbhome_1/bin/netca -silent -responseFile ~/Documents/netca.rsp

enter image description hereFigure-85: NETCA has configured Listener as well as Net Services successfully executed in silent mode.

Vérifiez l'état de l'écouteur en tapant ces commandes:

$ export Oracle_HOME=/Oracle18c/app/Oracle/product/18.0.0/dbhome_1
$ /Oracle18c/app/Oracle/product/18.0.0/dbhome_1/bin/lsnrctl status

enter image description hereFigure-86: Output of 'lsnrctl status' command.

Le Trace Level Est défini off comme le montre la figure 86 ci-dessus. Les valeurs autorisées pour le niveau de trace sont off, user, admin et support. Utilisez l'éditeur vi et copiez et collez le contenu ci-dessous dans listener.ora.

$ cd /Oracle18c/app/Oracle/product/18.0.0/dbhome_1/network/admin
$ vi listener.ora

#---------------------------------------------------------------------
# To prevent "Warning: Subscription for node down event still pending"
#---------------------------------------------------------------------
SUBSCRIBE_FOR_NODE_DOWN_EVENT_LISTENER=off
#-------------------------------------------------------------------------------
# Permitted values for trace level are "off", "user", "admin" and "support".
#   OFF (equivalent to 0) provides no tracing.
#   USER (equivalent to 4) traces to identify user-induced error conditions.
#   ADMIN (equivalent to 6) traces to identify installation-specific problems.
#   SUPPORT (equivalent to 16) provides trace information for troubleshooting
#            information for support.
#--------------------------------------------------------------------------------
DIAG_ADR_ENABLED_LISTENER=off
TRACE_TIMESTAMP_LISTENER=true
TRACE_LEVEL_LISTENER=support
TRACE_DIRECTORY_LISTENER=/tmp
TRACE_FILE_LISTENER=listener.trc
LOG_DIRECTORY_LISTENER=/tmp
LOG_FILE_LISTENER=listener.log

Enregistrez et quittez l'éditeur vi.

Exécutez les commandes suivantes pour afficher le contenu du fichier listener.ora:

$ cd /Oracle18c/app/Oracle/product/18.0.0/dbhome_1/network/admin
$ cat listener.ora

enter image description hereFigure-87: 'listener.ora' contains the server-side network configuration parameters.

Utilisez vi éditeur et ouvrez sqlnet.ora Et copiez et collez le contenu ci-dessous dans le fichier:

$ cd /Oracle18c/app/Oracle/product/18.0.0/dbhome_1/network/admin
$ vi sqlnet.ora

#----------------------------------------
# set trace and log parameters for client
#----------------------------------------
DIAG_ADR_ENABLED=off
TRACE_UNIQUE_CLIENT=off
TRACE_TIMESTAMP_CLIENT=true
TRACE_FILELEN_CLIENT=100
TRACE_LEVEL_CLIENT=support
TRACE_DIRECTORY_CLIENT=/tmp
TRACE_FILE_CLIENT=sqlnet_client.trc
LOG_DIRECTORY_CLIENT=/tmp
LOG_FILE_CLIENT=sqlnet_client.log
#----------------------------------------
# set trace and log parameters for server
#----------------------------------------
TRACE_TIMESTAMP_SERVER=true
TRACE_FILELEN_SERVER=100
TRACE_LEVEL_SERVER=support
TRACE_DIRECTORY_SERVER=/tmp
TRACE_FILE_SERVER=sqlnet_server.trc
LOG_DIRECTORY_SERVER=/tmp
LOG_FILE_SERVER=sqlnet_server.log 
#----------------------------------------
# set TNSPING Diagnostic Parameters
#----------------------------------------
TNSPING.TRACE_LEVEL=support
TNSPING.TRACE_DIRECTORY=/tmp

Enregistrez et quittez l'éditeur vi.

Exécutez les commandes suivantes pour afficher le contenu du fichier sqlnet.ora:

$ cd /Oracle18c/app/Oracle/product/18.0.0/dbhome_1/network/admin
$ cat sqlnet.ora

enter image description hereFigure-88: 'sqlnet.ora' is a profile configuration file that contain parameters used by both client and server.

Names.directory_path: Ce paramètre spécifie l'ordre des méthodes de dénomination utilisées lorsqu'un client tente une connexion à une base de données. Les valeurs possibles incluent: LDAP, TNSNAMES, HOSTNAME, ONAMES et EZCONNECT.

Exécutez les commandes suivantes pour afficher le contenu du fichier tnsnames.ora:

$ cd /Oracle18c/app/Oracle/product/18.0.0/dbhome_1/network/admin
$ cat tnsnames.ora

enter image description hereFigure-89: 'tnsnames.ora' file contains alias list.

Pour effectuer les modifications effectuées sur listener.ora Et sqlnet.ora, Rechargez listener par la commande:

$ /Oracle18c/app/Oracle/product/18.0.0/dbhome_1/bin/lsnrctl reload
$ /Oracle18c/app/Oracle/product/18.0.0/dbhome_1/bin/lsnrctl status

enter image description hereFigure-90: Listener Parameters are set up successfully (compare with figure-86).

Voici la fin de Partie III et la prochaine Partie IV se compose de:

1) Generate database scripts by DBCA.
2) Create Orcale 18c database by running scripts.
7
Marmayogi

La partie IV de la session de réponse commence maintenant.

4. DBCA Générer des scripts pour créer une base de données

4.1. Exécutez DBCA:

Ouvrez un terminal en appuyant sur Ctrl+Alt+T Et exécutez l'outil d'aide à la configuration de la base de données dbca:

$ /Oracle18c/app/Oracle/product/18.0.0/dbhome_1/bin/dbca

enter image description hereFigure-91: Run database configuration assistance tool 'dbca'

enter image description hereFigure-92: dbca logo

enter image description hereFigure-93: Select 'Create a database operation' and press 'Next'.

enter image description hereFigure-94: Select 'Advanced configuration' mode and press 'Next'.

enter image description hereFigure-95: Select 'Deployment type' and press 'Next'.

enter image description hereFigure-96: Enter 'Global database name', 'SID', 'PDB name' then click 'Next' button.

enter image description hereFigure-97: Select storage option "Use template file for database storage attributes" and click 'Next'.

enter image description hereFigure-98: Select Fast Recovery Option "Specify Fast Recovery Area" and click 'Next'

enter image description hereFigure-99: Choose listener to register database and click 'Next'.

enter image description hereFigure-100: Configure Database Vault and Label Security and click 'Next'.

enter image description hereFigure-101: Choose Memory option " Use Automatic Shared Memory Management (ASMM)" and configure "SGA" and "PGA" shared memory size and then hit menu 'Sizing'.

enter image description hereFigure-102: Specify "Processes" Number then hit menu "Character Sets".

enter image description hereFigure-103: Select "Unicode character" set and hit menu "Connection mode"

enter image description hereFigure-104: Select Dedicated server mode and hit "Sample Schemas"

enter image description hereFigure-105: Mark checkbox to "add sample schemas to the database" and then hit "Next".

enter image description hereFigure-106: Select "Configure Enterprise Manager (EM) database express " and specify port. Click 'Next'

enter image description hereFigure-107: Specify passwords for SYS, SYSTEM, PDBADMIN separately or select "Use the same passwords for all accounts". Click 'Next'.

enter image description hereFigure-108: Uncheck "Create database" checkbox to avoid creation of a database and check "Generate database creation scripts" checkbox. Click "Next" button.

enter image description hereFigure-109: Click "Save Response File " button.

enter image description hereFigure-110: Double-click "Documents" folder and then save a copy of dbca.rsp file by clicking "Save" button.

Enregistrez le fichier de réponses dbca.rsp Dans le répertoire ~/Documents. Ce fichier rsp sera nécessaire ultérieurement.

enter image description hereFigure-111: After saving "dbca.rsp" file, click "Finish" button.

enter image description hereFigure-112: Finish database script generation by clicking "Close" button.

4.2. Créez une base de données Oracle 18c en exécutant des scripts générés à partir de DBCA:

Ouvrez un terminal en appuyant sur Ctrl+Alt+T Et exécutez le script Shell orcl.sh Qui vous invitera à saisir les mots de passe des utilisateurs SYS et SYSTEM et vous choisissez des mots de passe durs assez pour être en sécurité.

Scripts path is: {Oracle_BASE}/admin/{DB_UNIQUE_NAME}/scripts

$ cd /Oracle18c/app/Oracle/admin/orcl/scripts
$ . orcl.sh | tee ~/Documents/create_database_scripts.log

Ouvrez maintenant le fichier journal create_database_scripts.log À l'aide de l'éditeur vi:

$ vi ~/Documents/create_database_scripts.log

Vous verrez l'erreur "ORA-12547: TNS:lost contact" Comme le montre la figure 113 ci-dessous: changements enter image description hereFigure-113: "Error: ORA-12547: TNS:lost contact".

Maintenant, nous devons découvrir qui a causé ce problème.

Le script Shell orcl.sh A appelé le script orcl.sql À partir du début de l'action réelle. orcl.sql A appelé un ensemble d'autres scripts sql de manière séquentielle. Mettons des instructions de trace autour du premier script sql CloneRmanRestore.sql Appelé par oracl.sql Illustré dans la figure 114 ci-dessous:

enter image description hereFigure-114: Trace statements in 'orcl.sql' file around 'CloneRmanRestore.sql' at the point of calling.

Si vous exécutez à nouveau orcl.sh, L'état d'exécution au point de trace est illustré ci-dessous Figure-115:

enter image description hereFigure-115: "Error: ORA-12547: TNS:lost contact" appears soon after entering into 'CloneRmanRestore.sql'.

Donc, ouvrez le fichier CloneRmanRestore.sql Et placez des instructions de trace autour de l'instruction CONNECT qui est la very first one upon entry Comme le montre la figure-116:

enter image description hereFigure-116: Trace statements in 'CloneRmanRestore.sql' file around 'CONNECT' Statement.

Lorsque vous exécutez à nouveau le script Shell orcl.sh, Au moment où l'état d'exécution entre dans le fichier CloneRmanRestore.sql, L'erreur se produit comme indiqué dans la figure-117 ci-dessous:

enter image description hereFigure-117: Trace statements around 'CONNECT' prove that error occurred while executing 'CONNECT' statement.

Il est bon de connaître le point of origination D'erreur et c'est l'instruction CONNECT SQL qui a provoqué l'erreur. Il est maintenant temps de nettoyer le failed installation Et de refaire l'installation jusqu'au point d'invocation de orcl.sh. Alors, passons à l'étape suivante [ section 4.3 ] ci-dessous.

4.3. Nettoyer le système après une tentative d'installation échouée.

Avant de réinstaller, le système doit d'abord être nettoyé. Ouvrez un terminal en appuyant sur Ctrl+Alt+T Et lancez les commandes suivantes:

$ su -
# rm -f /etc/oraInst.loc
# rm -f /etc/oratab
# cd /Oracle18c
# rm -rf *
# cd /opt/Oracle
# rm -rf *
# cd /opt
# rm -rf ORCLfmap
# cd /tmp
# rm -rf *
# exit

Maintenant redémarrez l'ordinateur puis passez à l'étape suivante [ section-4.4 ] pour réinstaller Oracle.

4.4. Réinstallez Oracle après l'échec de l'installation.

4.4.1. Extraction du fichier image Oracle db_home.Zip.

Après avoir nettoyé le système, essayons de réinstaller. Suivez la procédure ci-dessous:

$ mkdir -p /Oracle18c/app/Oracle/product/18.0.0/dbhome_1
$ unzip /mnt/ShareMe/'Software(downloaded)'/'MySQL & Oracle'/'Oracle 18.c LINUX.X64_180000_db_home.Zip' -d /Oracle18c/app/Oracle/product/18.0.0/dbhome_1/
$ chmod -R 775 /Oracle18c

Rappelons que dans la section [ - 2.2.10 ], le fichier omkfix.sh A été créé et enregistré dans le répertoire ~/scripts/, Maintenant exécutez le script:

$ . ~/scripts/omkfix.sh

4.4.2. Installez le logiciel de base de données.

Pour installer le logiciel de base de données, suivez [ section 3.2 ] de la figure 64 à la figure 82.

4.4.3. Installez Listener.

Retournez à [ section-3.3 ], terminez Installation de LISTENER et retournez de retour immédiatement ici.

Pour vérifier que l'écouteur est actif, exécutez cette commande: $ ps -ef | grep tnslsnr

enter image description hereFigure-118: 'Listener' is alive and active in the background.

4.4.4. Générez des scripts pour créer une base de données.

Pour générer les scripts nécessaires à l'installation de la base de données, exécutez dbca de manière interactive avec dbca.rsp (Reportez-vous à figure-110 Qui montre que le fichier de réponse dbca.rsp A été enregistré dans ~/Documents dossier que nous allons utiliser maintenant!):

$ /Oracle18c/app/Oracle/product/18.0.0/dbhome_1/bin/dbca -responseFile /home/Oracle/Documents/dbca.rsp

Répétez les instructions dans [ Section 4.1 ] à figure-92 Jusqu'à figure-112 Afin de générer des scripts pour la création de la base de données.

Voici la fin de Partie IV et la session finale Partie V commence à couvrir "Dépannage et post-installation" .

6
Marmayogi

La partie finale et finale de la partie V de la session de réponses commence maintenant.

5. Dépannez ORA-12547: TNS: erreur de contact perdu.

5.1. Créer un fichier de mots de passe.

Maintenant, créez le fichier de mot de passe situé dans "$Oracle_HOME/dbs" Dont le nom doit être résolu comme suit:

Nom de fichier du mot de passe Formule : orapw + Oracle_SID = orapw + orcl = orapworcl.

Exécutez la commande orapwd pour créer et ajouter l'utilisateur SYS dans le fichier de mots de passe 'orapworcl' Avec le mot de passe 'Oracle18c' Comme indiqué ci-dessous:

$ /Oracle18c/app/Oracle/product/18.0.0/dbhome_1/bin/orapwd file=/Oracle18c/app/Oracle/product/18.0.0/dbhome_1/dbs/orapworcl password=Oracle18c ENTRIES=30 FORCE=Y IGNORECASE=Y format=12

5.2. Définissez Oracle Environment.

Pour définir l'environnement Oracle, créez un fichier ~/scripts/oenv.sh Et copiez et collez le contenu indiqué dans cette section:

$ vi ~/scripts/oenv.sh

#!/bin/sh
#--------------------------------------------------------------------
# Oracle Environment Variables Settings
#--------------------------------------------------------------------
export Oracle_BASE=/Oracle18c/app/Oracle
export Oracle_HOME=$Oracle_BASE/product/18.0.0/dbhome_1
export PATH=/usr/sbin:/usr/local/bin:$PATH
export PATH=$Oracle_HOME/bin:$PATH
export LD_LIBRARY_PATH=$Oracle_HOME/lib:/lib:/usr/lib:/usr/local/lib
export Oracle_LIBPATH=$Oracle_HOME/lib
export CLASSPATH=$Oracle_HOME/jlib:$Oracle_HOME/rdbms/jlib:$CLASSPATH
export Oracle_HOSTNAME=$HOSTNAME
export ORA_INVENTORY=/Oracle18c/app/oraInventory
export DATA_DIR=$Oracle_BASE/oradata
export TNS_ADMIN=$Oracle_HOME/network/admin
export ADR_HOME=$Oracle_BASE/diag
#--------------------------------------------------------------------
export Oracle_SID=orcl
export Oracle_UNQNAME=orcl
export PDB_NAME=pdb
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
#--------------------------------------------------------------------
export TMP=/tmp; export TMPDIR=$TMP; export TEMP=$TMP
#--------------------------------------------------------------------

Modifiez l'autorisation du fichier:

$ chmod +x ~/scripts/oenv.sh

Ajoutez ce qui suit dans ~/.bashrc Par cette commande:

$ echo '# Environment settings for Oracle ' | tee -a ~/.bashrc
$ echo '. ~/scripts/oenv.sh' | tee -a ~/.bashrc

Maintenant, redémarrez l'ordinateur et revenez ici pour continuer.

5.3. Créez des répertoires.

Ouvrez l'éditeur vi et copiez et collez le contenu suivant:

$ vi ~/scripts/ocdir.sh

#!/bin/sh
umask 0027
mkdir -p /Oracle18c/app/Oracle
mkdir -p /Oracle18c/app/Oracle/admin/orcl/adump
mkdir -p /Oracle18c/app/Oracle/admin/orcl/dpdump
mkdir -p /Oracle18c/app/Oracle/admin/orcl/pfile
mkdir -p /Oracle18c/app/Oracle/audit
mkdir -p /Oracle18c/app/Oracle/cfgtoollogs/dbca/orcl
mkdir -p /Oracle18c/app/Oracle/fast_recovery_area/ORCL
mkdir -p /Oracle18c/app/Oracle/oradata/ORCL
mkdir -p /Oracle18c/app/Oracle/oradata/ORCL/pdb
mkdir -p /Oracle18c/app/Oracle/oradata/ORCL/pdbseed
mkdir -p /Oracle18c/app/Oracle/product/18.0.0/dbhome_1/dbs

Modifiez l'autorisation du fichier:

$ chmod +x ~/scripts/ocdir.sh

Exécutez le fichier de script ocdir.sh:

$ . ~/scripts/ocdir.sh

5.4. Vérifiez le statut listener.

Assurez-vous que l'écouteur est en place et écoute en arrière-plan avec la commande suivante:

$ ss -elpunt | grep -E "^Net|tnslsnr"

enter image description hereFigure-119: Oracle listener is up and running.

Si l'écouteur n'est pas en cours d'exécution, démarrez-le par la commande suivante:

$ lsnrctl start LISTENER

5.5. Signification de l'erreur ORA-12547.

Comprenons d'abord "Que signifie ORA-12547". Découvrez la signification de l'erreur ORA-12547 En exécutant Oracle binaire oerr qui génère une description préenregistrée.

$ cd $Oracle_HOME/bin
$ ./oerr ORA 12547

enter image description hereFigure-120: The Meaning of error 'ORA-12547' displayed by Oracle binary utility 'oerr'.

La description de l'erreur ORA-12547 Par l'utilitaire Oracle oerr, semble peu étrange. Pour faire simple, ORA-12547 Indique que le canal de communication a été interrompu. Il est le plus souvent jeté parce que l'autre extrémité du processus a disparu de façon inattendue. Cette erreur ORA-12547 Peut résulter de diverses causes. Nous allons voir un par un.

5.6. Paramètres de privilège pour Oracle binaire

Le fichier binaire Oracle ne doit pas seulement avoir le privilège 6751 Mais également la taille du fichier non-zero, Comme le montre la figure 121 ci-dessous:

$ cd $Oracle_HOME/bin
$ ls -l Oracle

enter image description hereFigure-121: Oracle binary has '6751' privileges set and 'non-zero' files size which are good.

Si un privilège incorrect est défini, exécutez la commande suivante:

$ chmod 6751 Oracle

Si le fichier Oracle affiche zero file size, Exécutez la commande suivante pour reconstruire:

$ cd $Oracle_HOME/bin
$ ./relink all

5.7. Taille de fichier non nulle de config.o Binaire:

Le fichier objet config.o Doit avoir une taille de fichier non nulle. Pour vérifier, émettez les commandes suivantes:

$ cd $Oracle_HOME/rdbms/lib
$ ls -l config.o

enter image description hereFigure-122: The screen displays that 'object.o' file has non-zero file size which is good.

S'il y a zero file size, Exécutez la commande suivante pour reconstruire:

$ mv config.o config.o.bad
$ cd $Oracle_HOME/bin
$ ./relink all

5.8. Paramètres Oracle Base et Home dans le fichier orabasetab:

Affichez le contenu du fichier pour la vérification des paramètres Oracle Base et Home.

$ cd $Oracle_HOME/install
$ cat orabasetab

enter image description hereFigure-123: Display of content of 'orabasetab' file showing the settings of Oracle 'Base' and 'Home' which are good.

Si des paramètres incomplets ou incorrects sont trouvés, modifiez le fichier $Oracle_HOME/install/orabasetab À l'aide de l'éditeur vi et corrigez les valeurs Base et Home.

5.9. Paramètres d'Oracle Base:

Exécutez le binaire orabase pour vous assurer que le répertoire de base Oracle est correctement défini.

$ cd $Oracle_HOME/bin
$ ./orabase

enter image description hereFigure-124: Oracle Base directory setting is shown by binary 'orabase' which is good.

5.10. Paramètres de privilège pour le répertoire /proc:

Assurez-vous que les privilèges corrects sont définis dans le répertoire /proc. Exécutez la commande suivante:

$ ls -l /enter image description hereFigure-125: The correct privilege settings 555 for /proc directory.

S'il y a de mauvais paramètres de privilège, corrigez-les manuellement en suivant la commande:

$ cd /
$ Sudo chmod 555 proc

5.11. Paramètres de privilège pour le répertoire /dev/null:

Assurez-vous que les privilèges corrects sont définis dans le répertoire /dev/null Qui doit être 0666. Exécutez la commande suivante:

$ ls -l /enter image description hereFigure-126: The correct privilege settings '666' for '/dev/null' directory.

S'il y a de mauvais paramètres de privilège, corrigez-les manuellement en suivant la commande:

$ cd /
$ Sudo chmod 666 /dev/null

5.12. Paramètres de sous-système liés aux binaires Oracle dans le fichier /ect/fstab:

La structure de chaque entrée du fichier /etc/fstab Se compose principalement des 6 champs suivants:

[Device] [Mount point] [Files System Type] [options] [Backup operations] [File System check order]

Le logiciel Oracle a été installé dans le système de fichiers sous le point de montage /opt. Recherchez l'enregistrement dans le fichier /etc/fstab Correspondant au point de montage /opt Et inspectez le 4ème champ qui est [options]. Si ce champ contient "nosuid", Remplacez-le par "suid".

Exécutez la commande suivante pour localiser l'entrée correspondant au point de montage /opt:

$ cat /etc/fstab | grep /optenter image description hereFigure-127: The 4th field '[options]' contains "defaults" corresponding to '/opt' file systems which is good.

Le 4ème champ [options] A la valeur "defaults" Qui est un shortcut et dont l'expansion est:

"rw,suid,dev,exec,auto,nouser,async"

Ainsi, la présence de "defaults" Ne pose aucun problème. En l'absence de "defaults", S'il y a explicitement "nosuid", Modifiez-le manuellement en "suid" Dans le fichier /etc/fstab En utilisant vi éditeur. Après la modification, redémarrez simplement votre système.

5.13. Désactivez la variable d'environnement EXTSHM.

Comme Oracle ne prend pas en charge Extended Shared Memory, La variable d'environnement EXTSHM doit être désactivée. Exécutez la commande suivante:

$ env | grep EXTSHMenter image description hereFigure-128: The output shows that the Environment variable 'EXTSHM' is undefined which is good.

Si la variable EXTSHM est définie, alors unset avec la commande suivante:

$ unset EXTSHM

5.14. Paramètres ulimit insuffisants pour la pile:

Reportez-vous à [section 1-7] " Configurer les limites du shell pour l'utilisateur Oracle " pour augmenter les limites de pile.

5.15. Simulation de l'erreur "ORA-12547: TNS:lost contact" En utilisant sqlplus binaire:

Il a été établi qu'une erreur ORA-12547 S'est produite lors de la tentative de création de la base de données Oracle 18c en exécutant des scripts générés à partir de DBCA [ reportez-vous à la section 4.2 et à la figure 113 ]. Nous avons découvert que la cause première de cette erreur était l'instruction CONNECT. Donc, reproduisons cette erreur à nouveau en appelant l'instruction CONNECT directement à partir du binaire sqlplus.

Exécutez la commande sqlplus comme indiqué ci-dessous:

$ $Oracle_HOME/bin/sqlplus /nolog

Émettez une instruction CONNECT sur SQL Invitez comme suit:

SQL> connect sys/Oracle18c as sysdba;enter image description hereFigure-129: Simulation of "ORA-12547: TNS:lost contact" error by directly invoking 'sqlplus' binary.

Il est maintenant établi que l'erreur peut être recréée en exécutant sqlplus binaire. En l'absence de code source, nous devons attaquer le problème avec toutes les armes qui restent dans notre arsenal. Dans un premier temps, essayons de générer des informations de trace décrivant la séquence d'événements se déroulant dans sqlplus binaire.

5.16. Exécutez la commande strace pour générer les informations de trace nécessaires pour creuser davantage:

Afin de générer le fichier de trace nécessaire pour une enquête plus approfondie sur l'instruction CONNECT, utilisons la commande strace avec sqlplus comme indiqué ci-dessous:

$ strace -f -o /tmp/strace.log $Oracle_HOME/bin/sqlplus /nolog

Émettez une instruction CONNECT sur SQL Invitez comme suit:

SQL> connect sys/Oracle18c as sysdba;

enter image description hereFigure-130: Use 'strace' command to investigate into 'CONNECT' statement invoked from 'sqlplus' binary.

Maintenant, utilisez gedit et ouvrez le fichier /tmp/strace.log. Après le traçage du fichier entier, la zone à problème a été identifiée comme indiqué dans la figure 131 ci-dessous: enter image description hereFigure-131: "core dump" is found recorded in the 'strace.log' file.

Avant de poursuivre l'analyse de "core dump", Vérifions si le fichier core a été généré dans le default directory Avec les commandes suivantes:

$ pwd
$ ls

enter image description hereFigure-132: The output confirms that no 'core' file was generated in '/home/Oracle' directory.

Découvrez si le noyau est activé ou non avec la commande suivante:

$ ulimit -center image description hereFigure-133: Output shows that 'core' is not enabled.

Pour activer le noyau, exécutez la commande suivante:

$ ulimit -c unlimitedenter image description hereFigure-134: Enable core file generation.

Assurez-vous que le noyau est activé par la commande suivante:

$ ulimit -c

enter image description hereFigure-135: Ouput shows that 'core' file generation is successfully enabled.

Encore une fois, exécutez la commande strace comme indiqué au début de cette section 5.16 et vérifiez que le fichier core a été généré avec succès:

$ pwd
$ ls

enter image description hereFigure-136: Output shows that 'core' file is generated successfully

Maintenant, exécutez le débogueur gdb comme suit:

$ gdb -c coreenter image description hereFigure-137: Undefined Symbol in 'libpython3.6m.so.1.0' while invoking debugger 'gdb'.

Pour résoudre symbol lookup error, Exécutez la commande suivante pour inspecter les dépendances de gdb:

$ ldd /usr/bin/gdbenter image description hereFigure-138: Output shows that only shared object 'libexpat.so.1' has been loaded wrongly from '$Oracle_HOME/lib'.

De la sortie about de la figure 138 ci-dessus, on peut facilement déduire que le problème est lié à la variable d'environnement LD_LIBRARY_PATH.

Tout d'abord, exécutez la commande suivante pour localiser le chemin correct de libexpat.so.1:

$ locate libexpat.so.1enter image description hereFigure-139: The correct library path for 'libexpat.so.1' is '/lib/x86_64-linux-gnu/'

Déterminez la valeur actuelle de la variable d'environnement LD_LIBRARY_PATH:

$ echo $LD_LIBRARY_PATHenter image description hereFigure-140: '$Oracle_HOME/lib' appears as the first member in the 'value' of environment variable 'LD_LIBRARY_PATH'

Comme $Oracle_HOME/lib Semble être le premier membre de LD_LIBRARY_PATH, La bibliothèque de dépendances libexpat.so.1 A été chargée à partir de $Oracle_HOME/lib Au lieu de /lib/x86_64-linux-gnu. Ce LD_LIBRARY_PATH Doit être désactivé jusqu'à ce que l'analyse du vidage de mémoire soit terminée. Plus tard, cette variable d'environnement LD_LIBRARY_PATH Devrait être restaurée à son état d'origine.

Modifiez le fichier ~/scripts/oenv.sh (Reportez-vous à la section 5.2) et commentez la ligne contenant LD_LIBRARY_PATH, Afin que cette variable soit automatiquement désactivée après le redémarrage.

Vérifiez que la ligne est correctement commentée, avec la commande suivante:

$ cat ~/scripts/oenv.sh | grep LD_LIBRARY_PATHenter image description hereFigure-141: The comment symbol "#" appears in front of line containing 'LD_LIBRARY_PATH'.

Redémarrez le système.

Découvrez que la valeur de LD_LIBRARY_PATH Qu'elle soit vide ou non avec la commande suivante:

$ echo $LD_LIBRARY_PATHenter image description hereFigure-142: Output shows that 'LD_LIBRARY_PATH' is empty, thus properly unset which is good.

Émettez à nouveau la commande suivante pour inspecter la liste de dépendances de gdb afin de vous assurer que libexpat.so.1 Est chargé à partir du bon chemin:

$ ldd /usr/bin/gdbenter image description hereFigure-143: Output shows that 'libexpat.so.1' is loaded correctly from '/lib/x86_64-linux-gnu'.

Maintenant, exécutez le débogueur gdb et vérifiez qu'il fonctionne correctement:

$ gdb -c coreenter image description hereFigure-144: Debugger 'gdb' is found to be working perfectly.

Exécutez la commande bt à l'invite gdb, comme indiqué ci-dessous:

(gdb) btenter image description hereFigure-145: The screen shows the output of 'bt' command and observe that the result is too poor to analyze.

Le résultat de la commande bt était trop médiocre et nous need more information Pour analyse. Essayons another method Avec la commande suivante:

$ gdb --core=core --exec=/Oracle18c/app/Oracle/product/18.0.0/dbhome_1/bin/Oracle

Exécutez la commande bt sur gdb Invite:

(gdb) bt

enter image description hereFigure-146: The result produced by the above command is more promising than in figure-145.

La fonction tzset() définit les informations de conversion de temps utilisées par localtime() et les fonctions associées. De plus, localtime() n'est pas thread-safe car il renvoie un pointeur (struct tm *) Vers une structure de données statique (voir l'en-tête <time.h> Pour plus de détails) qui contient le résultat. Revoyons à nouveau le /tmp/strace.log: enter image description hereFigure-147: The file "/etc/localtime" was the last one accessed before crash (core dump).

Le fichier "/etc/localtime" Était le dernier consulté avant le crash (core dump). Du début jusqu'au vidage de mémoire, ce fichier "/etc/localtime" A été consulté deux fois. Cela montre une condition de blocage car localtime() est entrée récursivement (pour une deuxième fois) en raison de la gestion d'un certain signal et localtime() n'est pas réentrant ou thread-safe, donc il bloque sur un fermer à clé.

Nous pouvons conclure que Oracle kernel Plante dans diverses fonctions libc (Standard Library for C Programming Language), Par ex. localtime().

Qu'est-ce que le noyau Oracle?

Sur Ubuntu linux, chaque processus client Oracle tel que sqlplus or Toad, Se connecte à tnslsnr, qui fork()'s puis exec()'s un binaire "$Oracle_HOME/bin/Oracle", appelé Oracle kernel program. Ce binaire est également connu sous le nom de Oracle Server Process. Reportez-vous à figure-121 Dans [ section-5.6 ].

Montrons l'appel système execve appelant Oracle binaire enregistré par la commande strace dans /tmp/strace.log.

enter image description hereFigure-148: The Oracle Kernel binary "Oracle" invoked by "execve" system call.

C'est donc le Oracle kernel program Qui était à l'origine de core dump Et pour surmonter ce problème, il est nécessaire de supprimer les stubs libc* Puis de reconstruire le binaire du noyau Oracle $Oracle_HOME/bin/Oracle à nouveau.

Pour accomplir cette tâche, émettez les commandes suivantes:

$ cd $Oracle_HOME/lib/stubs
$ ls -l libc*
$ rm libc*
$ cd $Oracle_HOME/bin
$ ./relink all

enter image description hereFigure-149: Rebuild Oracle kernel program "$Oracle_HOME/bin/Oracle" afresh by issuing "./relink all" command and observe the resulting log file.

Après la reconstruction, inspectez son fichier journal $ORCALE_HOME/install/relink_2019-02-26_08-27.log Pour vous assurer que toutes les reconstructions ont réussi.

Exécutez à nouveau la commande strace et vérifions que notre Arch-méchant "ORA-12547: TNS:lost contact" Persiste toujours!

$ strace -f -o /tmp/strace.log $Oracle_HOME/bin/sqlplus /nolog

Exécutez l'instruction CONNECT à l'invite SQL comme suit:

SQL> connect sys/Oracle18c as sysdba;

enter image description hereFigure-150: Our Arch-villain "ORA-12547: TNS:lost contact" has vanished at last and replaced by "an idle instance".

Bingo! Notre Arch-méchant "ORA-12547: TNS:lost contact" A enfin disparu!

L'instruction connect a été exécutée avec succès et un idle instance A également été généré.

5.17. Réexécutez les scripts générés à partir de DBCA pour créer la base de données Oracle 18c:

Pour afficher la liste des scripts requis pour créer la base de données, exécutez ces commandes:

$ cd /Oracle18c/app/Oracle/admin/orcl/scripts
$ ls -l *.sql

enter image description hereFigure-151: List of scripts generated by 'DBCA' required to create Oracle 18c database.

Assurez-vous que listener est déjà opérationnel avec la commande suivante:

$ ss -elpunt | grep -E "^Net|tnslsnr" | column -t

enter image description hereFigure-152: Oracle listener is running and listening on port 1521.

En référence à [voir la section 4.2 et la figure 113], essayons à nouveau de créer la base de données Oracle 18c en exécutant des scripts générés à partir de DBCA et espérons que la base de données sera créée avec succès cette fois!

$ cd /Oracle18c/app/Oracle/admin/orcl/scripts
$ . orcl.sh | tee ~/Documents/create_database_scripts.log

enter image description hereFigure-153: Creation of Oracle 18c database has successfully begun! Notice the appearance of 'idle instance' inside redbox.

Voyons la capture d'écran de la fin de la création de la base de données ci-dessous: enter image description hereFigure-154: Creation of Oracle 18c database has come to end successfully!

Voyons le Services supported by the Listener Avec la commande suivante:

$ lsnrctl status

enter image description hereFigure-155: Services supported by 'listener'.

Vérifions Oracle Version Avec la commande suivante:

$ sqlplus / as sysdba
SQL> select instance_name, version from v$instance;

enter image description hereFigure-156: Display of Oracle Version.

Laissez-nous afficher Oracle Banner Avec la commande suivante:

$ sqlplus / as sysdba
SQL> select banner from v$version;

enter image description hereFigure-157: Display of Oracle Banner.

6. Après l'installation.

6.1. Configurez le fichier /etc/oratab.

Ajoutez le fichier "/etc/oratab" En définissant l'indicateur de redémarrage de chaque instance sur 'Y'.

$ echo 'orcl:/Oracle18c/app/Oracle/product/18.0.0/dbhome_1:Y' | Sudo tee -a /etc/oratab

enter image description hereFigure-158: Append "/etc/oratab" file with restart flag.

Affichez le contenu du fichier "/etc/oratab" Avec la commande suivante:

$ cat /etc/oratabenter image description hereFigure-159: Content of "/etc/oratab" file.

6.2. Démarrez PDB avec l'instance de base de données.

Les variables d'environnement DATA_DIR Et PDB_NAME Nécessaires à la configuration de PDB sont déjà exportées via ~/scripts/oenv.sh. Exécutez la commande suivante pour vérifier:

$ env | egrep 'DATA_DIR=|PDB_NAME='enter image description hereFigure-160: Environnment variables 'PDB_NAME' and 'DATA_DIR' are already set.

Ensuite, assurez-vous que l'instance de base de données est opérationnelle.

Si ce n'est pas le cas, appelez le fichier de script suivant pour l'exécuter:

$ . ~/scripts/ora_start.sh

Remarque : pour connaître le script ora_start.sh, Reportez-vous à la section [ 6.5 ]

Activez les fichiers gérés Oracle (OMF) et assurez-vous que la PDB démarre au démarrage de l'instance:

$ sqlplus / as sysdba <<EOF
alter system set db_create_file_dest='${DATA_DIR}';
alter pluggable database ${PDB_NAME} save state;
exit;
EOF

enter image description hereFigure-161: Pluggable database will start along with database instance.

6.3. Restaurez LD_LIBRARY_PATH À sa valeur d'origine.

Rappelez-vous que LD_LIBRARY_PATH N'était pas défini (reportez-vous aux figures-137 et 138) dans ~/scripts/oenv.sh. Maintenant, nous devons le restaurer en supprimant la comment # symbol Dans la ligne contenant la chaîne LD_LIBRARY_PATH À l'aide de n'importe quel éditeur. Pour vérifier que la modification est effectuée, exécutez la commande suivante:

$ cat ~/scripts/oenv.sh | grep LD_LIBRARY_PATHenter image description hereFigure-162: Environnment variables 'LD_LIBRARY_PATH' is restored to its original value by removing comment '#' symbol (compare with figure-140).

6.4. Activez le pare-feu.

Dans section-1.12 , le pare-feu était désactivé, ce qui était une condition préalable. Maintenant, il peut être restauré. Pour activer le pare-feu, exécutez la commande suivante:

$ Sudo ufw enableenter image description hereFigure-163: Firewall successfully enabled.

Pour vérifier l'état du pare-feu, exécutez la commande suivante:

$ Sudo ufw statusenter image description hereFigure-164: Firewall status is active

6.5. Démarrer/arrêter des scripts pour la base de données.

Il est important de rappeler que les variables d'environnement Oracle ont déjà été définies à l'aide du fichier ~/scripts/oenv.sh Et sont ajoutées dans le fichier ~/.bashrc Pour être exécutées lors de la connexion. Reportez-vous à la section-5.2.

Créez deux scripts ora_start.sh Et ora_stop.sh Respectivement qui peuvent être appelés comme le service startup/shutdown.

Maintenant, créez ora_start.sh À l'aide de l'éditeur vi.

$ vi ~/scripts/ora_start.sh

Copiez et collez le contenu ci-dessous dans le fichier.

#!/bin/sh
lsnrctl start
dbstart $Oracle_HOME

Enregistrez et quittez l'éditeur vi.

Maintenant, créez ora_stop.sh À l'aide de l'éditeur vi.

$ vi ~/scripts/ora_stop.sh

Copiez et collez le contenu ci-dessous dans le fichier.

#!/bin/sh
lsnrctl stop
dbshut $Oracle_HOME

Enregistrez et quittez l'éditeur vi.

chown -R Oracle:oinstall ~/scripts
chmod +x ~/scripts/ora_start.sh
chmod +x ~/scripts/ora_stop.sh

Après avoir édité le /etc/oratab (Reportez-vous à la section 6.1), vous devriez pouvoir start/stop La base de données avec les scripts suivants exécutés après vous être connecté au système en tant qu'utilisateur Oracle.

Pour démarrer Oracle Database Service, exécutez le script ora_start.sh:

$ . ~/scripts/ora_start.shenter image description hereFigure-165: Run script 'ora_start.sh' to start database instance

Pour arrêter Oracle Database Service, exécutez le script ora_stop.sh:

$ . ~/scripts/ora_stop.shenter image description hereFigure-166: Run script ora_stop.sh to shut down database instance

6.6. Créez une liste d'alias pour Oracle.

Créez une liste d'alias adaptés à Oracle dans ~/scripts/oalias.sh Comme suit:

$ vi ~/scripts/oalias.sh

Ajoutez ce qui suit dans le fichier ~/scripts/oalias.sh En utilisant la technique du copier-coller:

#----------------------------------------
# alias list of useful commands for Oracle
#----------------------------------------
alias o='cd /Oracle18c'
alias op='cd /opt'
alias oo='cd /opt/Oracle'
alias ob='cd /Oracle18c/app/Oracle'
alias oi='cd /Oracle18c/app/oraInventory'
alias od='cd /Oracle18c/app/Oracle/oraData'
alias oh='cd /Oracle18c/app/Oracle/product/18.0.0/dbhome_1'
alias obin='cd /Oracle18c/app/Oracle/product/18.0.0/dbhome_1/bin'
alias olib='cd /Oracle18c/app/Oracle/product/18.0.0/dbhome_1/lib'
alias odbs='cd /Oracle18c/app/Oracle/product/18.0.0/dbhome_1/dbs'
alias olog='cd /Oracle18c/app/Oracle/cfgtoollogs'
alias odlog='cd /Oracle18c/app/Oracle/cfgtoollogs/dbca'
alias otfa='cd /Oracle18c/app/Oracle/tfa'
alias otfab='cd /Oracle18c/app/Oracle/tfa/bin'
alias os='cd /Oracle18c/app/Oracle/admin/orcl/scripts'
alias oad='cd /Oracle18c/app/Oracle/admin'
alias osid='cd /Oracle18c/app/Oracle/admin/orcl'
alias otns='cd /Oracle18c/app/Oracle/product/18.0.0/dbhome_1/network/admin'

Enregistrez et quittez l'éditeur vi.

Modifier l'autorisation de fichier par la commande chmod:

$ chmod +x ~/scripts/oalias.sh

Ensuite, exécutez les commandes suivantes pour ajouter la chaîne ~/scripts/oalias.sh Dans le fichier ~/.bashrc:

$ echo '#--------------------------------------------------------' | tee -a ~/.bashrc
$ echo '# alias list of useful commands for Oracle' | tee -a ~/.bashrc
$ echo '#--------------------------------------------------------' | tee -a ~/.bashrc
$ echo '. ~/scripts/oalias.sh' | tee -a ~/.bashrc

Fermez maintenant votre terminal actuel et ouvrez un nouveau terminal avec Ctrl+Alt+T Et lancez la commande suivante:

$ alias

enter image description hereFigure-167: Very useful alias list for Oracle.

Vous verrez le list of aliases Pour Oracle affiché à l'écran.

7. Conclusion.

La jubilation et la joie étaient non seulement dans l'installation réussie d'Oracle-18c (Enterprise Edition) sur Ubuntu 18.04 mais aussi dans le " apprivoisement " de Oracle Software Pour coexister avec tous les autres logiciels installés sous la partition /opt(refer figure-57)!

Ceci termine l'installation d'Oracle 18c (Enterprise Edition) Sur Ubuntu 18.04! Profitez d'Oracle 18c (Enterprise Edition) !!

5
Marmayogi

Commençons par Partie II de la session de réponse.

2. Groupe de système d'exploitation et utilisateur requis pour l'installation d'Oracle.

2.1. Utilisateur et groupes.

2.1.1. Créer des groupes Oracle.

Création du groupe d'inventaire oinstall.

$ Sudo groupadd -g 54321 oinstall

Création du groupe OSDBA dba.

$ Sudo groupadd -g 54322 dba

Autres groupes : vous pouvez créer les groupes suivants en fonction de vos besoins, sinon, sautez-les tous.

$ Sudo groupadd -g 54323 oper
$ Sudo groupadd -g 54324 backupdba
$ Sudo groupadd -g 54325 dgdba
$ Sudo groupadd -g 54326 kmdba
$ Sudo groupadd -g 54327 asmdba
$ Sudo groupadd -g 54328 asmoper
$ Sudo groupadd -g 54329 asmadmin
$ Sudo groupadd -g 54330 racdba

2.1.2. Créer le propriétaire/utilisateur du logiciel Oracle Oracle.

$ Sudo useradd -u 54321 -m -s /bin/bash -g oinstall -G dba Oracle

In this command:
•   -u option specifies the numerical value of user’s ID.
•   -m option specifies to create a home for Oracle user: /home/Oracle.
•   -s option specifies the Shell associated with login which is /bin/bash.
•   -g option specifies the primary group oinstall.
•   -G option specifies the secondary groups dba.

Si vous n'aviez pas créé " d'autres groupes " [section-2.1.1], alors vous sautez ceci.

Sinon, vous les ajoutez à l'utilisateur Oracle:

$ Sudo usermod -a -G oper,backupdba,dgdba,kmdba,asmdba,asmoper,asmadmin,racdba  Oracle

Définissez le mot de passe de l'utilisateur Oracle:

$ Sudo passwd Oracle

Assurez-vous que l'utilisateur Oracle et les groupes associés sont créés comme prévu:

$ id Oracleenter image description here change Figure-47: User Oracle and its associated groups.

Assurez-vous que le groupe principal d'utilisateurs Oracle est oinstall:

$ id -gn Oracleenter image description hereFigure-48: User Oracle primary group is 'oinstall'.

2.1.3. Ajouter l'utilisateur Oracle dans le groupe sudoers:

Pour inclure Oracle utilisateur avec le groupe sudoers Sudo, exécutez la commande suivante:

$ Sudo usermod -a -G Sudo Oracle

Afin de vous assurer que l'utilisateur Oracle est associé au groupe Sudo, tapez la commande:

$ id Oracleenter image description hereFigure -49: User 'Oracle' is also with group 'Sudo'.

2.1.4. Vérifiez que l'utilisateur nobody existe:

$ id nobodyenter image description hereFigure-50: Ouput shows that user 'nobody' does exist already.

Si l'utilisateur nobody n'existe pas, entrez la commande suivante pour le créer:

$ Sudo useradd nobody

2.2. Répertoires logiciels requis pour l'installation d'Oracle.

2.2.1. Point de montage Oracle.

Oracle 18.c sera installé sur /opt/Oracle Qui deviendra automatiquement le point de montage pour l'installation d'Oracle. Mais le problème est de donner à Oracle la propriété de l'utilisateur pour l'ensemble du répertoire /opt/Oracle, Ce qui n'est pas acceptable car le répertoire /opt A déjà hébergé de nombreux autres logiciels (voir figure 51 ci-dessous) . J'ai créé cette partition /opt Avec l'intention de loger autant de progiciels indépendants que possible! Je ne veux pas dédier l'intégralité de la partition /opt Exclusivement à l'installation de la base de données Oracle. enter image description hereFigure-51: Notice that partition '/opt' contains many important software packages which have already been installed.

Afin d'atteindre notre objectif, imaginons une astuce . Supposons le répertoire /opt/Oracle, comme si un périphérique et montons ce périphérique sur /Oracle18c comme point de montage. Maintenant, nous pouvons attribuer à l'utilisateur Oracle la propriété de ce point de montage /Oracle18c Et, par conséquent, nous évitons de nous mêler de cet appareil /opt/Oracle Directement, sans aucun mal!

Maintenant, créez un point de montage /Oracle18c À partir de / Avec la commande suivante:

$ Sudo mkdir /Oracle18c
$ ls -l /

enter image description hereFigure-52: Command 'ls -l /' shows that the mount point '/Oracle18c' has 'root:root' ownership.

Créez un dossier Oracle sous le répertoire /opt Avec la commande suivante:

$ Sudo mkdir /opt/Oracle 
$ ls -l /opt 

enter image description hereFigure-53: Directory 'Oracle' under '/opt' has 'root:root' ownership.

De la figure 53 ci-dessus, notez que le dossier /opt/Oracle A la propriété de root:root.

Pour apporter des modifications dans /etc/fstab, Exécutez les commandes suivantes:

$ Sudo cp /etc/fstab /etc/fstab.back
$ echo '# Oracle 18.c installation mount point' | Sudo tee -a /etc/fstab
$ echo '/opt/Oracle /Oracle18c none bind' | Sudo tee -a /etc/fstab

Assurez-vous que /etc/fstab, L'entrée de point de montage /Oracle18c Est correctement définie avec la commande suivante:

$ grep /opt/Oracle /etc/fstab

enter image description hereFigure-54: Directory '/opt/Oracle' is mounted "as if a file system" on '/Oracle18c' mount point.

Afin d'effectuer nos modifications effectuées sur /etc/fstab, Émettez la commande suivante:

$ Sudo mount -a

Pour changer la propriété du point de montage /Oracle18c De root:root En Oracle:oinstall, Exécutez cette commande:

$ Sudo chown -R Oracle:oinstall /Oracle18c
$ ls -l /

enter image description hereFigure-55: The ownership of '/Oracle18c' has changed from 'root:root' to 'Oracle:oinstall'.

Ainsi, nous avons réussi à monter /Oracle18c Sans compromettre la propriété de /opt Qui reste toujours à root:root Intact! Bien sûr, c'est exactement ce que nous voulions! Pour vérifier ce fait, lancez la commande suivante:

$ ls -l /enter image description hereFigure-56: The ownership of '/opt' partition still remains at 'root:root' untouched!

D'un autre côté, la propriété du dossier Oracle sous le répertoire /opt Est automatiquement passée de root:root À Oracle:oinstall Après le chargement des modifications de /etc/fstab. Pour vérifier ce fait, exécutez la commande suivante:

$ ls -l /optenter image description hereFigure-57: The ownership of 'Oracle' folder under '/opt' partition has changed automatically from 'root:root' to 'Oracle:oinstall', after loading '/etc/fstab' using 'mount -a' command.

Il suffit de comparer la figure 57 ci-dessus avec la figure 53.

Maintenant, l'installation d'Oracle est confinée et restreinte dans le sous-répertoire /opt/Oracle Et nous avons interdit à Oracle de prendre la totalité de la partition /opt, Conquérant ainsi Oracle carrément! L'astuce que nous avons conçue contre Oracle a vraiment fonctionné!

Nous avons non seulement protégé les programmes déjà installés dans la partition /opt (Voir figure 51), mais nous avons également laissé la place à une future installation de nouveaux progiciels aussi longtemps que l'espace de stockage le permet. Le logiciel Oracle est maintenant obligé d'exister pour en faire partie, sans aucun privilège spécial sur les autres progiciels du répertoire /opt.

2.2.2. Répertoire de base Oracle

Les directives Optimal Flexible Architecture (OFA) d'Oracle vous recommandent d'utiliser un chemin d'accès similaire au suivant pour le répertoire de base Oracle: /mount_point/app/Oracle_sw_owner

Connectez-vous au système en tant qu'utilisateur Oracle ou utilisez cette commande:

$ su - Oracle

Créez le répertoire de base Oracle ( n'utilisez pas Sudo ) avec la commande suivante:

$ mkdir -p /Oracle18c/app/Oracle
$ exit

2.2.3. Répertoire Oracle Inventary

Le répertoire Oracle Inventory oraInventory stocke un inventaire de tous les logiciels installés sur le système. Il est requis et partagé par toutes les installations de logiciels Oracle sur un seul système. La première fois que vous installez le logiciel Oracle sur un système, Oracle Universal Installer Vous invite à spécifier le chemin d'accès à ce répertoire. Oracle vous recommande de choisir le chemin suivant: Oracle_base/oraInventory

Remarque-1: Oracle Universal Installer Crée le répertoire que vous spécifiez et définit automatiquement le propriétaire, le groupe et les autorisations appropriés. You do not need to create it.

Remarque-2: Si vous effectuez une installation de base de données Oracle et que vous définissez $Oracle_BASE Pour l'utilisateur Oracle sur le chemin /Oracle18c/app/Oracle avant l'installation et accordez 755 des autorisations à Oracle pour ce chemin, puis Oracle Universal Installer (runInstaller) crée le répertoire Oracle Inventory un niveau au-dessus de $Oracle_BASE dans le chemin Oracle_BASE/../oraInventory, le chemin Oracle Inventory est donc /Oracle18c/app/oraInventory (voir figure-71)

Attention: Toutes les installations de logiciels Oracle dépendent de ce répertoire. Assurez-vous de le sauvegarder régulièrement. Ne supprimez ce répertoire que si vous avez complètement supprimé tous les logiciels Oracle du système.

2.2.4. Oracle Home Directory

Le répertoire de base Oracle est le répertoire dans lequel vous choisissez d'installer le logiciel pour un produit Oracle particulier. Vous devez installer différents produits Oracle ou différentes versions du même produit Oracle dans des répertoires de base Oracle distincts. Lorsque vous exécutez Oracle Universal Installer, Il vous invite à spécifier le chemin d'accès à ce répertoire, ainsi qu'un nom qui l'identifie. Le répertoire que vous spécifiez doit être un sous-répertoire du répertoire de base Oracle. Oracle vous recommande de spécifier un chemin d'accès similaire au suivant pour le répertoire de base Oracle: Oracle_base/product/18.0.0/dbhome_1

Connectez-vous au système en tant qu'utilisateur Oracle ou utilisez cette commande:
$ su - Oracle

Créez le répertoire de base Oracle comme suit:

$ mkdir -p /Oracle18c/app/Oracle/product/18.0.0/dbhome_1
$ Sudo chown -R Oracle:oinstall /Oracle18c

2.2.5. Redémarrer le système:

Redémarrez le système, puis connectez-vous à votre ordinateur en tant qu'utilisateur Oracle.

2.2.6. Configurez les paramètres umask et DISPLAY.

Assurez-vous que umask et DISPLAY sont définis correctement en émettant ces commandes:

$ umaskenter image description hereFigure-58: Set umask 022.

$ echo $DISPLAYenter image description hereFigure-59: Set DISPLAY=:0.

Si les paramètres umask et DISPLAY sont déjà définis correctement, comme illustré sur les figures 58 et 59 respectivement, alors vous êtes bon! Vous passez à l'étape suivante 2.2.7 pour créer votre compte Oracle.

Si les paramètres ci-dessus ne sont pas définis correctement, exécutez les commandes suivantes:

$ echo "umask 022" >> ~/.bash_profile
$ echo "export DISPLAY=:0" >> ~/.bash_profile

Redémarrez l'ordinateur, puis connectez-vous à l'ordinateur en tant qu'utilisateur Oracle.

2.2.7. Créez votre compte Oracle.

Pour télécharger les fichiers d'image d'installation d'Oracle Database db_home.Zip, Vous devez d'abord vous inscrire auprès d'Oracle Corporation et obtenir un username et password. Si vous n'avez pas de compte, vous feriez mieux de vous inscrire dès maintenant en utilisant ce lien: Créer un compte Oracleenter image description hereFigure-60: Create your Oracle Account

Vous devez fournir ces username et password chaque fois que vous téléchargez à partir du site Web Oracle.

2.2.8. Téléchargez le fichier image db_home.Zip.

Pour télécharger db_home.Zip À partir du site Web Oracle, utilisez le lien suivant: Télécharger l'image Oracleenter image description hereFigure-61: Select Accept License Agreement and then download Image file db_home.Zip.

2.2.9. Extraction du fichier image db_home.Zip.

Pour extraire db_home.Zip (Supposons que vous l'avez téléchargé et stocké dans le dossier ~/Downloads) Dans le répertoire de base Oracle , émettez la commande suivante:

$ unzip ~/Downloads/'Oracle 18.c LINUX.X64_180000_db_home.Zip' -d /Oracle18c/app/Oracle/product/18.0.0/dbhome_1/

Si vous aviez téléchargé et stocké db_home.Zip Dans une clé USB, puis pour extraire db_home.Zip De la clé USB dans le répertoire d'origine Oracle Home , émettez la commande suivante:

$ unzip /media/krishna/SANTACRUZ/'Oracle 18.c LINUX.X64_180000_db_home.Zip' -d /Oracle18c/app/Oracle/product/18.0.0/dbhome_1/

where 
       'SANTACRUZ' is name of my pendrive, so replace it with your pendrive's name.
       'krishna' is the username on this desktop, so replace it with your own username.

Mon système est un bureau dual-booted Avec un SSD de 250 Go (Windows-10 installation), Un autre SSD de 120 Go (Ubuntu 18.04 installation) Et 1 TB hard disque avec trois partitions NTFS montées sur Ubuntu en tant que CodeWrite (read-only), ShareMe (read-only) et Warehouse (read-write) respectivement. Donc, ceci 1 TB le disque dur est partageable entre Windows-10 et Ubuntu 18.04. Toutes les copies des téléchargements installables non seulement pour Windows-10 mais aussi pour Ubuntu 18.04 sont conservées sous ShareMe. Cette disposition permet de préserver l'espace de stockage sur les deux SSD! Pour décompresser, j'émets la commande suivante depuis mon bureau:

$ unzip /mnt/ShareMe/'Software(downloaded)'/'MySQL & Oracle'/'Oracle 18.c LINUX.X64_180000_db_home.Zip' -d /Oracle18c/app/Oracle/product/18.0.0/dbhome_1/

Remarque : Oracle recommande que le chemin du répertoire de base Oracle que vous créez soit conforme aux recommandations Oracle Optimal Flexible Architecture (OFA). Décompressez également les fichiers image d'installation uniquement dans ce répertoire de base Oracle que vous avez créé.

Ensuite, définissez l'autorisation de fichier appropriée au point de montage /Oracle18c À l'aide de la commande chmod:

$ chmod -R 775 /Oracle18center image description hereFigure-62: Permission for '/Oracle18c' directory and its descendents is set to 775

Exécutez cette commande pour vérifier l'espace de stockage de /opt Après avoir terminé le processus d'extraction:

$ df -h /optenter image description hereFigure-63: The storage space consumed by extraction process was around 9.3 GB (compare with Figure-1).

2.2.10. Alter Loader/Linker Flags dans makefiles adapté à la plate-forme Ubuntu Linux.

La manipulation et la modification des fichiers make, en particulier flags, est nécessaire pour construire avec succès des binaires sur la plate-forme Ubuntu Linux. Si des erreurs lancées dynamiquement lors de la construction (pendant database software installation process Initiée de manière interactive par runInstaller) rendront votre vie misérable, c'est quand même à cent pour cent assuré qu'il y aura une construction propre et agréable!

Créez un fichier de script omkfix.sh À l'aide de l'éditeur vi et ajoutez ce qui suit:

$ mkdir -p ~/scripts
$ vi ~/scripts/omkfix.sh

Copiez et collez le contenu ci-dessous dans le fichier.

#!/bin/sh
# Change the path below to point to your installation
export Oracle_HOME=/Oracle18c/app/Oracle/product/18.0.0/dbhome_1
# make changes in orld script
sed -i 's/exec gcc "\$@"/exec gcc -no-pie "\$@"/' $Oracle_HOME/bin/orald
# Take backup before committing changes
cp $Oracle_HOME/rdbms/lib/ins_rdbms.mk $Oracle_HOME/rdbms/lib/ins_rdbms.mk.back
cp $Oracle_HOME/rdbms/lib/env_rdbms.mk $Oracle_HOME/rdbms/lib/env_rdbms.mk.back
cp $Oracle_HOME/network/lib/env_network.mk $Oracle_HOME/network/lib/env_network.mk.back
cp $Oracle_HOME/srvm/lib/env_srvm.mk $Oracle_HOME/srvm/lib/env_srvm.mk.back
cp $Oracle_HOME/crs/lib/env_has.mk $Oracle_HOME/crs/lib/env_has.mk.back
cp $Oracle_HOME/odbc/lib/env_odbc.mk $Oracle_HOME/odbc/lib/env_odbc.mk.back
cp $Oracle_HOME/precomp/lib/env_precomp.mk $Oracle_HOME/precomp/lib/env_precomp.mk.back
cp $Oracle_HOME/ldap/lib/env_ldap.mk $Oracle_HOME/ldap/lib/env_ldap.mk.back
cp $Oracle_HOME/ord/im/lib/env_ordim.mk $Oracle_HOME/ord/im/lib/env_ordim.mk.back
cp $Oracle_HOME/ctx/lib/env_ctx.mk $Oracle_HOME/ctx/lib/env_ctx.mk.back
cp $Oracle_HOME/plsql/lib/env_plsql.mk $Oracle_HOME/plsql/lib/env_plsql.mk.back
cp $Oracle_HOME/sqlplus/lib/env_sqlplus.mk $Oracle_HOME/sqlplus/lib/env_sqlplus.mk.back
cp $Oracle_HOME/bin/genorasdksh $Oracle_HOME/bin/genorasdksh.back
#
# make changes changes in .mk files
#
sed -i 's/\$(ORAPWD_LINKLINE)/\$(ORAPWD_LINKLINE) -lnnz18/' $Oracle_HOME/rdbms/lib/ins_rdbms.mk
sed -i 's/\$(HSOTS_LINKLINE)/\$(HSOTS_LINKLINE) -lagtsh/' $Oracle_HOME/rdbms/lib/ins_rdbms.mk
sed -i 's/\$(EXTPROC_LINKLINE)/\$(EXTPROC_LINKLINE) -lagtsh/' $Oracle_HOME/rdbms/lib/ins_rdbms.mk
sed -i 's/\$(OPT) \$(HSOTSMAI)/\$(OPT) -Wl,--no-as-needed \$(HSOTSMAI)/' $Oracle_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(OPT) \$(HSDEPMAI)/\$(OPT) -Wl,--no-as-needed \$(HSDEPMAI)/' $Oracle_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(OPT) \$(EXTPMAI)/\$(OPT) -Wl,--no-as-needed \$(EXTPMAI)/' $Oracle_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(SPOBJS) \$(LLIBDMEXT)/\$(SPOBJS) -Wl,--no-as-needed \$(LLIBDMEXT)/' $Oracle_HOME/rdbms/lib/env_rdbms.mk

sed -i 's/\$(S0MAIN) \$(SSKRMED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKRMED)/' $Oracle_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(S0MAIN) \$(SSBBDED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSBBDED)/' $Oracle_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(S0MAIN) \$(SSKRSED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKRSED)/' $Oracle_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(S0MAIN) \$(SKRNPT)/\$(S0MAIN) -Wl,--no-as-needed \$(SKRNPT)/' $Oracle_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(S0MAIN) \$(SSTRCED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSTRCED)/' $Oracle_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(S0MAIN) \$(SSTNTED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSTNTED)/' $Oracle_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(S0MAIN) \$(SSKFEDED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKFEDED)/' $Oracle_HOME/rdbms/lib/env_rdbms.mk

sed -i 's/\$(S0MAIN) \$(SSKFODED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKFODED)/' $Oracle_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(S0MAIN) \$(SSKFNDGED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKFNDGED)/' $Oracle_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(S0MAIN) \$(SSKFMUED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKFMUED)/' $Oracle_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(S0MAIN) \$(SSKFSAGED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKFSAGED)/' $Oracle_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(S0MAIN) \$(DBGVCI)/\$(S0MAIN) -Wl,--no-as-needed \$(DBGVCI)/' $Oracle_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(S0MAIN) \$(DBGUCI)/\$(S0MAIN) -Wl,--no-as-needed \$(DBGUCI)/' $Oracle_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(S0MAIN) \$(SSKECED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKECED)/' $Oracle_HOME/rdbms/lib/env_rdbms.mk

sed -i 's/^\(Oracle_LINKLINE.*\$(Oracle_LINKER)\) \($(PL_FLAGS)\)/\1 -Wl,--no-as-needed \2/g' $Oracle_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/^\(TNSLSNR_LINKLINE.*\$(TNSLSNR_OFILES)\) \(\$(LINKTTLIBS)\)/\1 -Wl,--no-as-needed \2/g' $Oracle_HOME/network/lib/env_network.mk
sed -i 's/\$LD \$1G/$LD -Wl,--no-as-needed \$LD_RUNTIME/' $Oracle_HOME/bin/genorasdksh
sed -i 's/\$(GETCRSHOME_OBJ1) \$(OCRLIBS_DEFAULT)/\$(GETCRSHOME_OBJ1) -Wl,--no-as-needed \$(OCRLIBS_DEFAULT)/' $Oracle_HOME/srvm/lib/env_srvm.mk
sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $Oracle_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $Oracle_HOME/crs/lib/env_has.mk;
sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $Oracle_HOME/odbc/lib/env_odbc.mk
sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $Oracle_HOME/precomp/lib/env_precomp.mk
sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $Oracle_HOME/srvm/lib/env_srvm.mk;
sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $Oracle_HOME/network/lib/env_network.mk
sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $Oracle_HOME/ldap/lib/env_ldap.mk
sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $Oracle_HOME/ord/im/lib/env_ordim.mk
sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $Oracle_HOME/ctx/lib/env_ctx.mk
sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $Oracle_HOME/plsql/lib/env_plsql.mk
sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $Oracle_HOME/sqlplus/lib/env_sqlplus.mk

Enregistrez et quittez l'éditeur vi.

Lors de l'exécution de ce script, Oracle_HOME Sera exporté en tant que première ligne du script afin que le répertoire d'installation de l'ensemble du script soit correctement pointé. Exécutez maintenant le script omkfix.sh:

$ chmod +x ~/scripts/omkfix.sh
$ . ~/scripts/omkfix.sh

Ceci est la fin de Partie II de l'installation et la prochaine Partie III commencera par la suite qui se compose de:

1) Installation of database software by runInstaller interactively.
2) Installation of Listener silently using response file 'rsp'.
4
Marmayogi

Lors de ma tentative d'installation d'Oracle 18c (Enterprise Edition) sur Ubuntu 18.04, j'ai rencontré des obstacles à chaque étape. Vous devez continuer à résoudre chaque obstacle tel qu'il apparaît et avancer. Si vous n'avez pas de ténacité, vous abandonnerez!

Comme cette procédure d'installation pour Oracle 18c (Enterprise Edition) sur Ubuntu 18.04 est si longue, composée de 167 captures d'écran avec des instructions très détaillées (88 pages of Microsoft Word document containing both instructions and screenshots). Il m'a fallu plus de 2 mois de travail continu pour l'installer et goûter le succès!

J'hésite à vider tout le contenu de cette session de réponses en une seule fois. Je suis sûr que cela créera de la confusion et ne servira peut-être pas le but recherché.

Mon intention est que ce matériel atteigne et profite à tous les lecteurs qui en ont besoin!

Ce que je propose est de diviser le matériel entier en 5 sessions de réponses (parties) et de les publier l'une après l'autre comme suit:

1. Partie-I : Pré-installation.

  • Cette partie couvre les besoins en espace de stockage, active la prise en charge multi-Arch, les packages nécessaires à l'installation, la création de liens symboliques, la configuration des paramètres du noyau, la configuration des limites du shell pour l'utilisateur Oracle, la configuration de Linux sécurisé et la désactivation du THP (Transparent Huge Pages) .
  • Découvrez la physique RAM taille, taille de swap, taille d'espace/tmp, etc.) et comparez-les avec les recommandations d'Oracle.
  • Montage de la mémoire partagée, configurez /etc/hosts fichier et /etc/resolv.conf fichier et désactiver le pare-feu.
  • Avertissement: Si vous ignorez cette partie, vous ne pourrez jamais installer Oracle 18c (Enterprise Edition) sur votre système!

2. Partie II : Création d'utilisateurs et de groupes Oracle.

  • Cette partie traite de la création des identifiants d'utilisateur et de groupe Oracle, de la discussion et de la création des répertoires de montage, de base et d'accueil de la base de données, y compris des conseils pour télécharger le fichier image installable db_home.Zip à partir du site Web d'Oracle.
  • Un autre aspect important de cette partie est que la manipulation et la modification des fichiers make (particularly linker/loader flags suitable for Ubuntu Linux platform) qui sont nécessaires pour créer dynamiquement des fichiers binaires pendant le processus d'installation du logiciel de base de données effectué par runInstaller (Oracle Universal Installer) dans la Partie-III.
  • La modification des fichiers makefile a été effectuée très soigneusement et testée minutieusement sur mon bureau Ubuntu afin que les erreurs de l'éditeur de liens/chargeur lancées pendant la construction dynamique soient identifiées et résolues complètement, vous assurant ainsi d'avoir une expérience de construction propre et agréable dans la prochaine partie-III.

3. Partie III : Installation du logiciel de base de données et du programme d'écoute

  • L'installation du logiciel de base de données se fait en utilisant runInstaller de manière interactive.
  • Les binaires logiciels Oracle sont construits dynamiquement au cours de cette phase et cette procédure vous assure que vous ne rencontrerez jamais de problèmes de lieur/chargeur sur la plate-forme Ubuntu, vous offrant ainsi une installation logicielle propre et agréable!
  • Une fois l'installation du logiciel terminée, l'installation de l'écouteur est reprise.
  • L'installation de l'écouteur est effectuée en mode silencieux à l'aide du fichier de réponses. Le fichier de réponses Oracle typique netca_typ.rsp est capable de générer listener.ora et sqlnet.ora fichiers uniquement mais pas tnsnames.ora. Donc ntca_typ.rsp est optimisé avec des instructions supplémentaires pour produire tnsnames.ora automatiquement avec les deux autres fichiers.
  • listener.ora Le fichier est modifié pour définir les paramètres de configuration de trace et de journal. De même sqlnet.ora Le fichier est également modifié pour définir les paramètres de configuration de trace et de journal non seulement côté client mais aussi côté serveur.

4. Partie IV : Génération de scripts de base de données par DBCA et création de base de données à l'aide de scripts.

  • Cette partie traite de la génération de scripts (sql files) en utilisant DBCA et crée une base de données en exécutant les scripts manually.
  • Bien que vous puissiez créer la base de données automatically en utilisant DBCA de manière interactive ou silencieuse, les erreurs DBCA lancées pendant la phase de création vous rendront perplexe et ne vous offriront pratiquement aucun indice pour les résoudre!
  • Alors que faire cela manually ouvre une opportunité de déboguer les erreurs parce que vous avez sql scripts en main vous offrant un moyen de localiser le point of origination of error et creuser plus loin.

5. Partie-V : Dépannage et post-installation.

  • Cette dernière partie débogue l'erreur lancée dans la partie IV.
  • Une fois le dépannage terminé, la création de la base de données est lancée par l'exécution de scripts et enfin le processus se termine par le démarrage de l'instance de base de données Oracle "orcl" et d'autres automatiquement qui sont présentés comme des services d'écoute.
  • Les affichages de Version et Banner à l'aide de sqlplus sont présentés comme preuve d'une installation réussie.
  • Les instructions post-installation couvrent la préparation de l'instance de base de données start/stop Scripts shell, configurez /etc/oratab, configurer PDB pour démarrer avec l'instance de base de données, activer le pare-feu, restaurer LD_LIBRARY_PATH et création d'une liste Oracle alias utile.
  • Cette longue session de réponse à l'installation d'Oracle18c (Enterprise Edition) se termine par une conclusion section contenant les remarques finales de auteur .
3
Marmayogi