wiki/HowtoOracleDB.md

215 lines
6.9 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

**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](http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html). 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 Wheezy, mettre dans son /etc/apt/sources.list :
~~~
deb [arch=amd64,i386] <http://mirror.evolix.org/debian/> wheezy main
deb [arch=amd64,i386] <http://security.debian.org/> wheezy/updates main
~~~
Puis :
~~~
# dpkg --add-architecture i386
# aptitude update
# aptitude install build-essential gcc-multilib ia32-libs 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 Wheezy, 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" :
~~~
# adduser --system --home /opt/oracle --group oracle oracle
Ajout de l'utilisateur système « oracle » (UID 108) ...
Ajout du nouvel utilisateur « oracle » (UID 108) avec pour groupe d'appartenance « nogroup » ...
Création du répertoire personnel « /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>