Blog

Blog

Setter $ORACLE_SID avant de lancer un script (ORA-12162)

Sous Unix, je suis tombée sur un cas assez bizarre : mon script shell devait se connecter à une base via SQL Loader pour faire un import de données mais me sortait une ORA-12162: TNS:net service name is incorrectly specified...

ORA-12162: TNS:net service name is incorrectly specified

La signification de cette erreur est très claire : la variable $ORACLE_SID est mal renseignée... Mais je l'avais bien fait pourtant!

Le phénomène bizarre

Je me suis alors rendue compte que sans export, le script plantait alors qu'avec un export, il ne plantait pas. Exemple : (Ma base s'appelle Matalina)
>lancesqlload.sh
ORACLE_SID=MATALINA
echo $ORACLE_SID : MATALINA
ORA-12162: TNS:net service name is incorrectly specified
>
>lancesqlload_avecExport.sh
export ORACLE_SID=MATALINA
echo $ORACLE_SID : MATALINA
Import Succeed!
>
Je suppose que ce fonctionnement qui me semble bizarre est du au fait qu'un shell s'exécute dans son propre environnement et qu'il a dont besoin de l'export pour prendre en compte les variables ?

Pour aller plus loin

La doc Oracle sur l'ORA-12162 : http://docs.oracle.com/cd/E11882_01/server.112/e17766/net12150.htm#sthref3401