Login Logout

HowtoOracleDB

Cette page a été importée automatiquement de notre ancien wiki mais n’a pas encore été révisée.

Howto Oracle Database 11Gr2

Télécharger Oracle DB

Rendez-vous sur le site d’Oracle. Vous devez avoir un compte, une fois connecté, récupérez l’adresse du lien qui contient un token, et vous pouvez le télécharger avec wget en copiant/collant l’URL, exemple de lien (plus valable évidemment) : http://download.oracle.com/otn/linux/oracle11g/R2/linux.x64_11gR2_database_2of2.zip?AuthParam=1323247397_1e374bb8429455952fa3a9acf468afc4

Installer les pré-requis

Pour Stretch, mettre dans son /etc/apt/sources.list :

deb [arch=amd64,i386] http://mirror.evolix.org/debian/ stretch main
deb [arch=amd64,i386] http://mirror.evolix.org/debian/ stretch-updates main
deb [arch=amd64,i386] http://security.debian.org/debian-security stretch/updates main

Puis :

# dpkg --add-architecture i386
# aptitude update
# aptitude install build-essential gcc-multilib lib32z1 libaio1 libstdc++5 rpm xauth x11-utils

Quelques hacks moches …

# ln -s /usr/bin/awk /bin/awk
# ln -s /usr/bin/basename /bin/basename
# ln -s /usr/bin/rpm /bin/rpm

Sous Stretch, il faudra « linker » quelques librairies utilisées lors de l’installation pour compiler des outils Oracle.

# mkdir /usr/lib64
# chmod 755 /usr/lib64
# ln -s /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a /usr/lib64/
# ln -s /usr/lib/x86_64-linux-gnu/libc_nonshared.a /usr/lib64/
# ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 /usr/lib64/
# ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib64/

Installation

/! Attention il faut au moins 1Go de libre sur /tmp et 15Go de swap (peut-être ignoré) ainsi que 13Go pour la base oracle ! /opt devrait donc faire plus de 15Go !

Il faut installer un compte Unix “oracle” :

# addgroup oracle
Adding group `oracle' (GID 1001) ...
Done.
# adduser --system --home /opt/oracle --ingroup oracle oracle
Adding system user `oracle' (UID 107) ...
Adding new user `oracle' (UID 107) with group `oracle' ...
Creating home directory `/opt/oracle' ...
# passwd oracle

L’installation d’Oracle DB se fait via un GUI, pour cela il faut activer le forwading X11 sur votre serveur SSH et autoriser le compte “oracle” à se connecter en SSH (par clé de préférence). On peut ainsi se connecter en SSH ainsi (avec compression + algorithme de chiffrement léger histoire d’améliorer un peu la vitesse d’affichage des fenêtres) :

$ ssh -c arcfour,blowfish-cbc -YC oracle@server.example.com

Enfin on lance l’installeur :

# /opt/oracle/install/runInstaller

Dans la partie pré-requis cela va échouer pour pratiquement tout … « fixez » ce qui est possible en cliquant sur Fix ! On vous demandera alors d’exécuter un script :

# bash /tmp/CVU_11.2.0.1.0_oracle/orarun.sh /tmp/CVU_11.2.0.1.0_oracle/fixup.response /tmp/CVU_11.2.0.1.0_oracle/fixup.enable /tmp/CVU_11.2.0.1.0_oracle

Cela va modifier sysctl avec les valeurs recommandés.

En Wheezy il a y des erreurs lors de la compilation des outils.

Si vous avez :

/usr/bin/ld: note: 'B_DestroyKeyObject' is defined in DSO /u01/app/oracle/product/11.2.0/dbhome_1/lib/libnnz11.so so try adding it to the linker command line
/u01/app/oracle/product/11.2.0/dbhome_1/lib/libnnz11.so: could not read symbols: Invalid operation
collect2: error: ld returned 1 exit status

Il faut lancer le make à la main, récupérer la dernière ligne qui s’affiche et la corriger en ajoutant -lnmemso -lcore11 -lnnz11. Enfin cliquer sur « retry install ».

cd $ORACLE_HOME/sysman/lib
make -f ins_emagent.mk "agent"

Avec Oracle 12 si vous avez :

/usr/bin/ld: /opt/oracle/app/oracle/product/12.1.0/dbhome_1//rdbms/lib/houzi.o: undefined reference to symbol 'ztcsh'
/usr/bin/ld: note: 'ztcsh' is defined in DSO /opt/oracle/app/oracle/product/12.1.0/dbhome_1//lib/libnnz12.so so try adding it to the linker command line
/opt/oracle/app/oracle/product/12.1.0/dbhome_1//lib/libnnz12.so: could not read symbols: Invalid operation
collect2: error: ld returned 1 exit status

Il faut éditer le fichier /opt/oracle/app/oracle/product/12.1.0/dbhome_1//lib/ldflags et ajouter -lons

Si vous avez :

/usr/bin/ld: /opt/oracle/app/oracle/product/12.1.0/dbhome_1//rdbms/lib/houzi.o: undefined reference to symbol 'ztcsh'
/usr/bin/ld: note: 'ztcsh' is defined in DSO /opt/oracle/app/oracle/product/12.1.0/dbhome_1//lib/libnnz12.so so try adding it to the linker command line
/opt/oracle/app/oracle/product/12.1.0/dbhome_1//lib/libnnz12.so: could not read symbols: Invalid operation
collect2: error: ld returned 1 exit status

Il faut éditer /opt/oracle/app/oracle/product/12.1.0/dbhome_1//lib/sysliblist et mettre -lnnz12

Puis relancer l’installation avec « Retry ».

L’installation devrait se finir, mais il reste encore des scripts à exécuter en root !

# bash /opt/oracle/app/oraInventory/orainstRoot.sh
# bash /opt/oracle/app/oracle/product/11.2.0/dbhome_1/root.sh

Et voilà !

Vous pouvez ensuite vous connectez en xxx ou avec la magnifique interface web du type : https://mysuperserver:1158/em. Pour se connecter en admin le login est SYS, le mot de passe est celui que vous avez renseigné pendant l’installation et il faut cliquer sur, « connect as SYSDBA ».

Rajouter cette ligne dans le .profile de l’utilisateur oracle :

ORACLE_HOME=/opt/oracle/app/oracle/product/11.2.0/dbhome_1
ORACLE_HOME_LISTNER=$ORACLE_HOME
export ORACLE_HOME
export ORACLE_HOME_LISTNER
PATH=/usr/sbin:/opt/oracle/app/oracle/product/11.2.0/dbhome_1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R
6/bin; export PATH
export ORACLE_UNQNAME=oracle
export ORACLE_SID=oracle

Gestion

Lancement de ??? :

sudo -u oracle lsnrctl start

Lancement du serveur d’application et de l’interface web :

sudo -u oracle emctl start dbconsole

Note : N’est plus dispo en Oracle 12. C’est EM Express à la placé, lancé par défaut sur le port 5500. https://localhost:5500/em/login

Lancement du SGBD :

sudo -u oracle dbstart

Erreurs bizarre

sqlplus "/ as sysdba"

SQL*Plus: Release 11.2.0.1.0 Production on Mon Oct 15 18:01:54 2012

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

ERROR:
ORA-01031: insufficient privileges

Assurez-vous d’avoir

#define SS_DBA_GRP "dba"
#define SS_OPER_GRP "dba

dans le fichier $ORACLE_HOME/rdbms/lib/config.c et « relinkez » le binnaire oracle.

$ORACLE_HOME/bin/relink all

dbstart ne démarre pas la DB

Essayez

sqlplus "/ as sysdba"
alter system register;
startup;

Vérifiez aussi que db_name soit bien mis dans $ORACLE_HOME/dbs/init.ora

Mot de passe perdu ?

http://rolfje.wordpress.com/2007/01/16/lost-oracle-sys-and-system-password/

Sources

http://wiki.debian.org/DataBase/Oracle http://howto.landure.fr/gnu-linux/debian-4-0-etch/installer-un-serveur-oracle-sur-debian-5-0-lenny http://www.debian-administration.org/articles/656

Howto Oracle Database 12R2 sous Docker

Avant propos

Oracle DB n’étant officiellement supporté sous Debian, pour nous en faciliter l’installation et la maintenance nous allons l’installer dans un conteneur Docker.

Installer Docker

Avant de commencer nous allons avoir besoin de l’ensemble des outils docker sur la machine.

Vous pouvez vous référer à notre HowtoDocker

Pré-requis

Récupérer le dépot Oracle docker-images sur Github :

wget https://github.com/oracle/docker-images/archive/master.zip

Télécharger Oracle DB

Télécharger la version 12R2 via le site d’Oracle : http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html

Installation

Décomprésser le dépot Oracle :

# unzip master.zip

Placer le fichier “linuxx64_12201_database.zip” correspondant à la version 12R2 que vous avez récupéré via le site d’Oracle dans le sous dossier docker-images-master/OracleDatabase/SingleInstance/dockerfiles/12.2.0.1/ du dépôt Oracle :

# mv linuxx64_12201_database.zip docker-images-master/OracleDatabase/SingleInstance/dockerfiles/12.2.0.1/

Lancer l’installation :

# ./buildDockerImage.sh 

Usage: buildDockerImage.sh -v [version] [-e | -s | -x] [-i] [-o] [Docker build option]
Builds a Docker Image for Oracle Database.
  
Parameters:
   -v: version to build
       Choose one of: 11.2.0.2  12.1.0.2  12.2.0.1  
   -e: creates image based on 'Enterprise Edition'
   -s: creates image based on 'Standard Edition 2'
   -x: creates image based on 'Express Edition'
   -i: ignores the MD5 checksums
   -o: passes on Docker build option

* select one edition only: -e, -s, or -x

LICENSE UPL 1.0

Copyright (c) 2014-2017 Oracle and/or its affiliates. All rights reserved.

# ./buildDockerImage.sh -v 12.2.0.1 -e

Une fois l’installation terminée, on peut lancer notre image docker :

# docker run --name oracle -p 1521:1521 -p 5500:5500 -v /path-to-your-persistent-oradata:/opt/oracle/oradata oracle/database:12.2.0.1-ee

–name oracle → On donne le nom de notre choix
-p 1521:1521 → On redirige le port 1521 local vers le port 1521 du conteneur
-p 5500:5500 → On redirige le port 5500 local vers le port 5500 du conteneur
-v /path/to/your/persistent/oradata:/opt/oracle/oradata → On souhaite avoir une base de données persistente, /opt/oracle/oradata du conteneur sera donc relié à notre dossier local /path/to/your/persistent/oradata