L'installation d'Oracle 12c version 2 sur Ubuntu échoue car il ne s'agit pas d'une distribution prise en charge. Comment puis-je l'installer quand même?
Téléchargez les fichiers d'installation et décompressez-les comme d'habitude.
Créez les utilisateurs Oracle, dba et oinstall:
Sudo groupadd oinstall
Sudo groupadd dba
Sudo useradd -g oinstall -G dba,oinstall -s /bin/bash -m -d /home/Oracle oracle
Ajoutez les paramètres suivants à /etc/sysctl.conf:
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 3355443
kernel.shmmax = 17179869184
kernel.shmmni = 4096
# semaphores: semmsl, semmns, semopm, semmni
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048576
Ce qui précède concerne une machine de 32 Go. Si vous avez un montant différent, définissez:
Maintenant, installez un ensemble de paquets nécessaires à l’installation. Commencez par mettre à jour vos paquets:
Sudo apt update
Ensuite, installez ce qui suit:
Sudo apt install libc6-i386 \
gcc-multilib g++-multilib libc6-dev-i386 libstdc++6:i386 \
alien autoconf automake autotools-dev elfutils rpm rpm-common \
build-essential debhelper expat gawk gsfonts-x11 html2text sysstat \
unixodbc unixodbc-dev doxygen ksh openssh-server pax Perl-doc rlwrap \
lsb lsb-core zlibc \
lib32z1-dev lib32ncurses5 libaio1 libaio-dev \
libelf-dev libodbcinstq4-1 libpth-dev libpthread-stubs0-dev \
libpthread-workqueue0 libpthread-workqueue-dev \
libtiff5-dev libzthread-dev libqt4-opengl:i386 libodbcinstq4-1:i386 \
libglu1-mesa:i386 libxtst6:i386 libxtst6
Sudo apt-get install -s cabextract
Sudo add-apt-repository ppa:nilarimogard/webupd8
Sudo apt update
Sudo apt install wimtools libwim-dev
Sudo apt install -s libbz2-dev:i386
Créez un certain nombre de liens symboliques pour que l'installation puisse trouver les fichiers dont elle a besoin aux endroits où elle les attend:
Sudo ln -s /usr/bin/basename /bin/basename
Sudo ln -s bin/bash /usr/bin/bash
Sudo ln -s /usr/bin/rpm /bin/rpm
Sudo ln -s /usr/bin/awk /bin/awk
Sudo ln -s /usr/lib/x86_64-linux-gnu /usr/lib64
Sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /lib64/libstdc++.so.6
Sudo ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib64/libgcc_s.so.1
Sudo ln -s /usr/lib/i386-linux-gnu/libpthread_nonshared.a /usr/lib/libpthread_nonshared.a
Sudo ln -s /lib/lsb/init-functions /etc/init.d/functions
Sudo ln -sf /bin/bash /bin/sh
Lancez maintenant le programme d’installation Oracle exécuté sous le compte "Oracle", généralement comme suit:
xhost +
Sudo su - Oracle
cd /path/to/unzipped/files/database
./runInstaller
Installez la base de données mais ne créez pas une base de données lors de l'installation!
Après un moment, l'installation donnera une erreur lors de la liaison. Laissez le message d'erreur à l'écran, puis ouvrez un terminal et modifiez le fichier $ Oracle_HOME/bin/orald. Trouvez, au début, la partie qui se lit:
if [ -z "$BASH_VERSION" -o -n "$ORALD_USE_GCC" ] ; then
exec gcc "$@"
exit 1
fi
et changez la ligne gcc pour lire:
exec gcc -no-pie "$@"
(l'option -no-pie commence par un seul tiret).
Copiez ensuite le script suivant dans un fichier, par exemple/tmp/fixora:
#!/bin/bash
# Change the path below to point to your installation
export Oracle_HOME=/opt/Oracle/12cr2
Sudo ln -s $Oracle_HOME/lib/libclntshcore.so.12.1 /usr/lib
Sudo ln -s $Oracle_HOME/lib/libclntsh.so.12.1 /usr/lib
cp $Oracle_HOME/rdbms/lib/ins_rdbms.mk $Oracle_HOME/rdbms/lib/ins_rdbms.bkp
cp $Oracle_HOME/rdbms/lib/env_rdbms.mk $Oracle_HOME/rdbms/lib/env_rdbms.bkp
sed -i 's/\$(ORAPWD_LINKLINE)/\$(ORAPWD_LINKLINE) -lnnz12/' $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/^\(TNSLSNR_LINKLINE.*\$(TNSLSNR_OFILES)\) \(\$(LINKTTLIBS)\)/\1 -Wl,--no-as-needed \2/g' $Oracle_HOME/network/lib/env_network.mk
sed -i 's/\$(SPOBJS) \$(LLIBSERVER)/\$(SPOBJS) -Wl,--no-as-needed \$(LLIBSERVER)/' $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/^\(Oracle_LINKLINE.*\$(Oracle_LINKER)\) \($(PL_FLAGS)\)/\1 -Wl,--no-as-needed \2/g' $Oracle_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$LD \$LD_RUNTIME/$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/plsql/lib/env_plsql.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/sqlplus/lib/env_sqlplus.mk;
Modifiez la ligne Oracle_HOME dans le script pour qu'elle pointe vers votre répertoire d'installation pour Oracle. Rendre le script exécutable et l'exécuter en tant qu'utilisateur Oracle:
chmod a+x /tmp/fixora
Sudo su - Oracle
/tmp/fixora
Revenez maintenant à l'installateur et appuyez sur le bouton "Réessayer" dans la boîte de dialogue d'erreur. L'installation devrait maintenant se terminer sans autre problème.
L'installation résultante ne fonctionne toutefois pas: la création d'une base de données sera bloquée dans la commande "démarrage de montage", avec un processus Oracle BEQ bloqué dans localtime. Pour résoudre ce problème, procédez comme suit, à nouveau en tant qu'utilisateur Oracle:
cd $Oracle_HOME/lib/stubs
rm libc*
cd ../../bin
./relink all
Une fois la liaison établie, créer une base de données devrait fonctionner. vous pouvez en créer un en utilisant:
dbca -silent -createDatabase \
-templateName General_Purpose.dbc \
-gdbname $DBNAME -sid $DBNAME -responseFile NO_VALUE \
-characterSet AL32UTF8 \
-sysPassword REPLACE_WITH_PASSWORD \
-systemPassword REPLACE_WITH_PASSWORD \
-createAsContainerDatabase false \
-databaseType MULTIPURPOSE \
-automaticMemoryManagement false \
-totalMemory 2048 \
-storageType FS \
-datafileDestination "/opt/Oracle/oradata/" \
-redoLogFileSize 500 \
-emConfiguration NONE \
-ignorePreReqs
Vérifiez que $Oracle_HOME/bin/oradism
appartient à la racine et que setuid est activé:
-rwsr-x--- 1 root dba 95844 may 24 2018 $Oracle_HOME/bin/oradism