Recherche avec un LIKE

Voici une recherche « standard » avec un LIKE :

SELECT * FROM table WHERE champ LIKE 'te_t%';

Cela retournera par exemple des lignes contenant texte et tester

% : n’importe quelles caractères (de 1 à n)

_ : n’importe quel caractère (un seul caractère)

 

Si l’on souhaite vraiment rechercher une chaîne de caractère contenant « _ », la solution est d’utiliser la clause ESCAPE de la manière suivante :

SELECT * FROM table WHERE champ LIKE 'te\_t%' ESCAPE '\';

Le caractère « \ » est alors identifié comme un caractère d’échappement (le caractère inconnu). Oracle va donc interpréter le « _ » comme devant exister dans la chaîne de caractères.

Cela retournera par exemple des lignes contenant tet_tt et te&_ts

Tuer une session + vues utiles

Tuer une session

alter system kill session 'sid, serial#'

 

sid et serial# sont les valeurs de la vue v$session.

 

Quelques tables / vues système utiles :

v$session

user_objects

v$locked_object

select o.OBJECT_NAME, s.CLIENT_INFO, s.SID, s.SERIAL#, l.*
from v$locked_object l
inner join user_objects o
on l.OBJECT_ID = o.OBJECT_ID
inner join v$session s
on s.SID = l.SESSION_ID
where o.OBJECT_NAME = ‘INSCRIPTION_ECOLES’

Installation d’Oracle Enterprise Edition 10g sur une machine virtuelle VirtualBox OSE

Copie du tuto de Michel (http://dontpanic.myftp.org/blog/index.php?article=184) avec quelques modifications pour que ça fonctionne sur ma machine virtuelle.

Ajout des librairies nécessaires à la compilation :

apt-get install build-essential libaio1 gawk ksh libmotif3 alien libtool lsb-rpm libstdc++5

Oracle utilisera bash lors de l’installation, en y faisant référence par SH. Hors, SH est un lien symbolique qui pointe vers dash par défaut (configuré par Ubuntu)… Modification donc du lien symbolique

ln -sf /bin/bash /bin/sh

Ajout des groupes utilisés par le moteur de bases de données Oracle

addgroup oinstall
addgroup dba
addgroup nobody

Puis on modifie le compte nobody existant déjà sur Ubuntu pour Oracle

usermod -g nobody nobody

Création des liens symboliques vers les applications qu’Oracle va utiliser lors de l’installation

ln -s /usr/bin/awk /bin/awk
ln -s /usr/bin/rpm /bin/rpm
ln -s /usr/bin/basename /bin/basename
mkdir /etc/rc.d
for i in 0 1 2 3 4 5 6 S ; do ln -s /etc/rc$i.d /etc/rc.d/rc$i.d ; done

Oracle sera installé sur l’utilisateur de base de l’OS (davjack –> /home/davjack/) car je n’utilise cette machine virtuelle que pour la base Oracle.

Puis on lance l’assistant d’installation sans le test des pré-requis car sinon, Oracle croit qu’il n’est pas sur Linux…

$ ./runInstaller -ignoreSysPrereqs

Installation des scriptes de démarrage

Ajout des variables d’environnement oracle_home et enrichissement du path. Pour ce faire, modifier le fichier /etc/profile et ajouter

export ORACLE_HOME=/home/davjack/oracle/product/11.1.0/db_1
export PATH=$PATH:/home/davjack/oracle/product/11.1.0/db_1/bin
export ORACLE_SID=es28
export ORACLE_OWNR=davjack

Création de deux scripts : l’un pour démarrer le listener, l’un pour démarrer entreprise manager qui permettra de démarrer l’instance (car, mystérieusement, dbstart ne fonctionne pas).
Démarrage du listener (/etc/init.d/listener) :

#!/bin/bash

export ORACLE_BASE=/home/davjack/oracle
export ORACLE_HOME=/home/davjack/oracle/product/10.2.0/db_1
export ORACLE_OWNR=davjack
export ORACLE_SID=es28
export PATH=$PATH:$ORACLE_HOME/bin

if [ ! -f $ORACLE_HOME/bin/lsnrctl -o ! -d $ORACLE_HOME ]
then
echo "Oracle listener: cannot start"
exit 1
fi

case "$1" in
start)
echo -n "Starting Oracle Listener: "
su davjack -c "$ORACLE_HOME/bin/lsnrctl start"
echo "OK"
;;
stop)
echo -n "Shutdown Oracle Listener: "
su $ORACLE_OWNR -c "$ORACLE_HOME/bin/lsnrctl stop"
echo "OK"
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: `basename $0` start|stop|restart|reload"
exit 1
esac

exit 0

Fichier pour lancer entreprise manager (/etc/init.d/oracleEm) :

#!/bin/bash

export ORACLE_BASE=/home/davjack/oracle
export ORACLE_HOME=/home/davjack/oracle/product/10.2.0/db_1
export ORACLE_OWNR=davjack
export ORACLE_SID=es28
export PATH=$PATH:$ORACLE_HOME/bin

if [ ! -f $ORACLE_HOME/bin/emctl -o ! -d $ORACLE_HOME ]
then
echo "Oracle Entreprise Manager: cannot start"
exit 1
fi

case "$1" in
start)
echo -n "Starting Oracle Entreprise Manager: "
su $ORACLE_OWNR -c "$ORACLE_HOME/bin/emctl start dbconsole"
echo "OK"
;;
stop)
echo -n "Shutdown Oracle Entreprise Manager : "
su $ORACLE_OWNR -c "$ORACLE_HOME/bin/emctl stop dbconsole"
echo "OK"
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: `basename $0` start|stop|restart|reload"
exit 1
esac

exit 0

On s’ajoute maintenant au groupe dba, pour pouvoir intéragir avec les bases de données :

usermod -G dba -a davjack

Et maintenant, pour lancer l’instance :

/etc/init.d/listener start
/etc/init.d/oracleEm start

puis, pour se connecter à oracle entrperise manager, on ouvre un navigateur et on entre l’adresse

http://localhost:1158/em

Puis, on vérifie bien que le listener est lancé, et on démarre l’instance (en utilisant son utilisateur local comme compte).
Puis, très important, on arrête oracle entreprise manager, car il consomme énormément de ressources :

/etc/init.d/oracleEm stop

Merci Michel 😉