2013-04-04 4 views
6

ich konfrontiert Problem beim Starten TNS Listener für meine Oracle XE DB auf meinem Linux-Box Bash-Shell mit:Set LD_BIND_NOW Variable TNS Linux Fehler zu beheben: 29: Illegal Suchfehler

LSNRCTL> start 
Starting /oracle/product/11.2.0/xe/bin/tnslsnr: please wait... 

TNS-12537: TNS:connection closed 
TNS-12560: TNS:protocol adapter error 
    TNS-00507: Connection closed 
    Linux Error: 29: Illegal seek 
LSNRCTL> exit 

ich viel mit verschiedenen versucht Lösungen im Internet gegeben und schließlich wurde die Frage nach der Bezugnahme auf die Post gelöst - https://dba.stackexchange.com/questions/23308/linux-error-29-illegal-seek-in-lsnrctl-for-linux-version-11-2

die Lösung für meinen Fall ist:

export LD_BIND_NOW=1 

ich habe installiert Oracle X E DB in mehreren Linux-Boxen, aber ich konfrontiert dieses Problem mit nur 1 Box. Was ist diese Variable und wie löst sie Illegales Suchproblem?

Meine Linux-Box Details sind:

bash-4.1$ uname -a 
Linux <hostname> 2.6.39-100.5.1.el6uek.x86_64 #1 SMP Tue Mar 6 20:26:00 EST 2012 x86_64 x86_64 x86_64 GNU/Linux 
+0

Alle diese Linux-Boxen waren mit der gleichen Kernel-Version und Hardware? –

+0

Ja, das hat auch bei mir funktioniert! –

Antwort

0

Controlling the operation of the dynamic loader

There are a range of environment variables that the dynamic loader will respond to. Most of these are more use to ldd than they are to the average user, and can most conveniently be set by running ldd with various switches. They include

LD_BIND_NOW --- normally, functions are not `looked up' in libraries until they are called. Setting this flag causes all the lookups to happen when the library is loaded, giving a slower startup time. It's useful when you want to test a program to make sure that everything is linked.

Vereinfacht - Wenn LD_BIND_NOW Variable auf 1, in C eingestellt ist, C++ verursacht es faul Last, von Bibliotheken (dh Bibliotheken laden bei Bedarf) oder wenn es verwendet wird - anstatt es während des Startvorgangs zu laden

Wenn die Software im gemischten Modus arbeitet, wird dies ebenfalls eingestellt.

Vielleicht in Ihrem Fall, es ist ein Startproblem und diese Bibliothek wurde nie benutzt ...!

0

In /etc/hosts Datei die folgende Zeile:

127.0.0.1 localhost.localdomain localhost 
1

Heute habe ich das gleiche Problem erlebt. Das Problem scheint ein Fehler in der binären tnslsnr ausführbare Datei zu sein.

Die Lösung, die ich den Hostnamen in eine IP-Adresse in der listener.ora in /oracle/product/11.2.0/xe/network/admin/listener.ora

# listener.ora Network Configuration File: 

SID_LIST_LISTENER = 
    (SID_LIST = 
    (SID_DESC = 
     (SID_NAME = PLSExtProc) 
     (ORACLE_HOME = /oracle/product/11.2.0/xe) 
     (PROGRAM = extproc) 
    ) 
) 

LISTENER = 
    (DESCRIPTION_LIST = 
    (DESCRIPTION = 
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) 
     (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) 
    ) 
) 

DEFAULT_SERVICE_LISTENER = (XE) 

Tweaking die Datei /etc/hosts und Überschreiben der localhost-Anweisung befindet sich verändern sollte hatte, wie in anderen Antworten beschrieben, nicht Arbeit.

Ich weiß nicht, ob die Verwendung von IP-Adressen anstelle von Hostnamen empfohlen wird, aber für mich ist es der Trick.