ORA-12162 beim Start von sqlplus / as sysdba

Beim Versuch mich via sqlplus mit der Datenbank eines Kunden zu verbinden, bekam ich folgende Fehlermeldung: ORA-12162 TNS:net service name is incorrectly specified.
Für diejenigen, die auch in diese Situation kommen, dieser kleine Beitrag dazu, warum und wie man es umgeht:

ich hatte folgende Kommandos eingegeben:

1
2
3
4
5
6
7
8
9
10
11
12
13
[email protected]:/opt/user/oracle () # ps -ef|grep pmon
  oracle  1906  4662   0   Apr 08 ?           4:34 ora_pmon_TEST1
  oracle 26624 26220   0 16:35:54 pts/3       0:00 grep pmon
    grid 25960  4662   0   Mar 31 ?           6:17 asm_pmon_+ASM2
[email protected]:/opt/user/oracle () # ORACLE_SID=TEST1
[email protected]:/opt/user/oracle (TEST1) # sqlplus / as sysdba
 
SQL*Plus: Release 11.2.0.4.0 Production on Fri Apr 17 16:36:15 2015
 
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
 
ERROR:
ORA-12162: TNS:net service name is incorrectly specified

Um nun das Environment besser zu analysieren, habe ich mich vom Server wieder ab- und angemeldet. Danach habe ich mir das Environment angeschaut:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[email protected]:/opt/user/oracle () # env|sort
DISPLAY=localhost:10.0
EDITOR=vi
HOME=/opt/user/oracle
HOSTNAME=db04-p
LOGNAME=oracle
MAIL=/var/mail//oracle
MANPATH=/usr/dt/man:/usr/man:/usr/openwin/share/man:/usr/ssh/man:/usr/symcli/man:/usr/cluster/man:/opt/SUNWcluster/man
NLS_DATE_FORMAT=DD.MM.YYYY HH24:MI:SS
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/dbhome_1
PAGER=less
PATH=/u01/app/oracle/product/11.2.0.4/dbhome_1/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/xpg4/bin:/usr/ccs/bin:/usr/ucb:/usr/cluster/bin:/usr/cluster/lib/sc:/usr/open
[email protected]$HOSTNAME:$PWD ($ORACLE_SID) # 
PWD=/opt/user/oracle
SHELL=/usr/bin/ksh
TERM=vt100
TZ=MET
USER=oracle
_=/usr/bin/env

Fazit:
Im Gegensatz zu den circa 200 anderen Datenbankservern war hier die Variable ORACLE_SID nicht vorbesetzt noch exportiert. Beim Setzen mit

1
ORACLE_SID=TEST1

war diese so in der Shell zwar sichtbar, nicht jedoch innerhalb jedes weiteren Programms, das in dieser aufgerufen wird, da sie nicht exportiert worden war.

1
export ORACLE_SID=TEST1

ist somit die kleine, ganze Lösung dieses Problems.

Viel Spass …

One thought on “ORA-12162 beim Start von sqlplus / as sysdba

  1. Hi Rainer, als Linux-Laie habe ich natürlich nicht viel zu reden, aber es ist mir sofort aufgefallen, dass du zuerst „export“ unterlassen hattest. Nämlich soweit in mein Linux-Laie-Hirn eingebrannt ist, müsste man das immer machen.

    Ferner interessant ist, dass wohl unter Windows die Umgebungs-Variable ORACLE_SID ebenso nicht gesetzt wird. sqlplus verbindet halt mit der Instanz, aus deren dbhome er gestartet war. Dann um mit dem gleichen sqlplus mit einer anderen Instanz (die aus anderem dbhome läuft) zu verbinden, muss man eben ORACLE_SID setzen, aber dann reicht eben nur „lokal“ in der Kommandozeile-Session, aus der sqlplus gestartet wird.

    Danke & Grüße
    Dmytro

Kommentar verfassen