Newsgroup: it.comp.software.database
Titolo: Listener di oracle :Chi mi aiuta?

ho una applicazione VB su più client win98 che interroga e aggiorna un DB
oracle (7) su digital unix.
da un po di tempo a questa parte su qualche client comincio ad avere degli
errori di questo tipo:
ORA - 12500 TNS :Il dispositivo ricevitore non è riuscito ad avviare il
processo del server.
su ogni pc client è installato il client di oracle per win95 con il quale
,tramite l'utility SQL net easy configuration e l'ODBC32 , ho configurato
l'accesso sul server.
è un problema di listener?
non lo so, ma se così fosse avrei avuto problemi anche da altri client.
ho provato con lsnrctl status sul server e mi dice che è tutto ok
ho provato a stoppare ed a riavviare e a fare il reload del tnslsnr , niente
Cosa può essere? ho provato a disinstallare il client di oracle dai client
incriminati e a rinstallarlo, ma senza risultato.
Mi date una mano?
Grazie in anticipo

 è un problema di listener?
Certamente no
[cut]
-- 
{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}
SunGray aka Gabriele Lana
contact me @ sungray@tiscalinet
See you space cowboy ...

spulciando quà e là sul server mi sono accorto che il log del listener è
arrivato a 12Mb.
Pensi possa dipendere "anche" da questo?
scusami, ma,come diceva Guzzanti, sto "miagolando nel buio".
di nuovo grazie.


 Pensi possa dipendere "anche" da questo?
No...
Io ho risolto un problema di questo tipo (ma su Oracle 8i) con il load
balancing, ma sinceramente non mi ricordo che sulla versione 7 sia prevista
questa funzionalità...
Un altra cosa che potresti fare è quella di aumentare i numeri di processi
nel file di init; ma mi sembra di ricordare che il messaggio che ti veniva
dato in quel caso era molto più esplicito (tipo "hai superato il limite di
processi sul server") e non così generico come il tuo...
Comunque, visto il tipo di errore e se non hai motivi particolari nel tuo
server per non farlo, perché non abiliti il "prespawned server" ? in questo
modo taglieresti la testa al toro, visto che il listener non dovrebbe far
partire un processo sul server ad ogni connessione...
Paulus
--------------------------------
Inviato via 
http://usenet.libero.it

Ti giro questo documento che ho trovato da metalink.
spero che ti possa essere d'aiuto!
Purtroppo sono poche le indicazioni sul tipo di errore che ottieni.
A presto,
Simone
1-1 UNIX Client/Server  - Troubleshooting the TNS/ORA-12500
-----------------------------------------------------------
This solution covers the following topics:
    A. TNS-12500 On a Unix Client
    B. TNS-12500 On a Unix Server
    C. Intermittent TNS-12500 Errors
A. TNS-12500 on a Unix Client
-----------------------------
    A TNS_12500 on a Unix client is almost always a
    linking problem with the executable you are trying
    to use.  Other possibilities could be problems on
    the server, which will be covered in a different section.
    1. Check linking to make sure the appropriate protocol
       adapter is linked with the application being used.
    Go to the $ORACLE_HOME/bin directory and run the
    'adapters' command on the executable being run.
    For example:
    adapters sqlplus or
    adapters /u02/app/my_app
    You should see an output similar to the following
    (using SQL*Plus as an example):
    Net8 Protocol Adapters linked with SQL*Plus are:
    BEQ Protocol Adapter
    IPC Protocol Adapter
    TCP/IP Protocol Adapter
    RAW Protocol Adapter
    Net8 Naming Adapters linked with SQL*Plus are:
    Oracle TNS Naming Adapter
    Oracle Naming Adapter
    If you do not see any output under the "Protocol Adapters"
    section then your platform is probably using shared
    libraries such that the network code is dynamically loaded.
    In this case locate the shared library that is used by
    the client (typically the libclntsh.so library in
    $ORACLE_HOME/lib). Locating shared libraries is platform
    specific.
    Eg: On Solaris:
       $ ldd sqlplus
        may show
       libclntsh.so.1.0 =>
       /u2/app/oracle/product/V805/lib/libclntsh.so.1.0
    Try the "adapters" command on the shared library.
    If your platform does not use shared libraries but
    there is no output try to grep for the protocol symbol
    in the executable manually.  For example if you are using
    TCP/IP and are trying to run SQL*Plus, use this command:
    strings sqlplus | grep nttini
    Nttini is the symbol for TCP/IP in both SqlNet V2 and
    Net8.  Other protocol symbols are as follows:
    Protocol Adapter       Symbol
    ----------------       ------
    TCP/IP                 nttini
    DECNET                 ntdini
    LU 6.2                 ntlini
    SPX                    ntsini
    IPC                   ntusini
    BEQ                    ntpini
    If you still do not get any output then manually
    relink the executable.  Using SQL*Plus as an example
    do the following:
    Go to the $ORACLE_HOME/sqlplus/lib directory
    Execute the following command:
    make -f 
ins_sqlplus.mk
 install
    By re-running the commands above your executable should
    have a protocol adapter linked with it. Your connection
    may work now.
2.  Check Environment Variables
    Make sure ORACLE_HOME and ORACLE_SID values are correct.
    You may also want to make sure LD_LIBRARY_PATH is set
    correctly as well.
    Make sure that the tnsnames.ora file doesn't specify the
    ORACLE_HOME parameter in the connect_data section.  If it
    does, remove it.
3.  Add or change the parameter AUTOMATIC_IPC in the
    sqlnet.ora file and set its value to OFF:
    AUTOMATIC_IPC = OFF
    Note:  The automatic_ipc feature is obsolete in
    Oracle 8i.
B. TNS-12500 on a Unix Server
----------------------------
    A TNS-12500 on a Unix server is almost always a
    linking problem with the listener or the oracle
    executable.  Other issues may include permissions or
    environment settings.
1.  Check to make sure the TNS Listener is linked properly.
    Go to the $ORACLE_HOME/bin directory and run the
    'adapters' command on  'tnslsnr'.  For example:
    adapters tnslsnr
    You should see output similar to the following:
    Net8 Protocol Adapters linked with tnslsnr are:
    BEQ Protocol Adapter
    IPC Protocol Adapter
    TCP/IP Protocol Adapter
    RAW Protocol Adapter
    Net8 Naming Adapters linked with tnslsnr are:
    Oracle TNS Naming Adapter
    Oracle Naming Adapter
    If you do not see any output under the "Protocol Adapters"
    section then your platform is probably using shared
    libraries such that the network code is dynamically loaded.
    In this case locate the shared library that is used by the
    client (typically the libclntsh.so library in
    $ORACLE_HOME/lib). Locating shared libraries is platform
    specific.
    Eg: On Solaris:
       $ ldd tnslsnr
        may show
       libclntsh.so.1.0 =>
       /u2/app/oracle/product/V805/lib/libclntsh.so.1.0
    Try the adapters command on the shared library.
    If your platform does not use shared libraries but
    there is no output try to grep for the protocol symbol
    in the executable manually. For example:
    strings tnslsnr | grep nttini
    Nttini is the symbol for TCP/IP in both SQLNet V2 and
    Net8.  Other protocol symbols are as follows:
    Protocol Adapter       Symbol
    ----------------       ------
    TCP/IP                 nttini
    DECNET                 ntdini
    LU 6.2                 ntlini
    SPX                    ntsini
    IPC                   ntusini
    BEQ                    ntpini
    If you still do not get any output manually relink the
    executable as follows:
    Go to the $ORACLE_HOME/network/lib directory and execute
    the following command:
    make -f 
ins_network.mk
 install
    On Oracle 8.1.x you can simply type 'relink network' at
    the operating system prompt.
    By re-running the commands above your executable should
    have a protocol adapter linked with it. Your connection
    may work now.
2.  Check to make sure the Oracle executable is linked
    properly.
    Go to the $ORACLE_HOME/bin directory and run the
    'adapters' command on 'oracle'.  For example:
    adapters oracle
    You should see output similar to the following:
    Net8 Protocol Adapters linked with Oracle are:
    BEQ Protocol Adapter
    IPC Protocol Adapter
    TCP/IP Protocol Adapter
    RAW Protocol Adapter
    Net8 Naming Adapters linked with Oracle are:
    Oracle TNS Naming Adapter
    Oracle Naming Adapter
    If you do not see any output under the "Protocol Adapters"
    section check for the use of shared objects as described
    above. Again you may need to grep for the protocol symbol
    in the executable manually.  For example:
    nm oracle | grep nttini
    If you still do not get any output manually relink the
    executable as follows:
    Go to the $ORACLE_HOME/rdbms/lib directory and execute the
    following command:
             make -f 
ins_rdbms.mk
 install
    On Oracle 8.1.x you can simply type in 'relink oracle'
    from the oracle_home/bin directory.
    By re-running the commands above your executable should
    have a protocol adapter linked with it.
3.  Check the permissions on the tnslsnr and Oracle
    executables.
    Go the $ORACLE_HOME/bin directory.  Typing 'ls -l tnslsnr'
    should yield the following output:
    -rwsr-xr-x   oracle   dba
    Typing in 'ls -l oracle' should yield the same output:
    -rwsr-xr-x   oracle   dba
    If the permissions are different then change them with
    this command:
    chmod 4755 tnslsnr
           or
    chmod 4755 oracle
    If the owner is incorrect, change it using this command:
    chown oracle tnslsnr
            or
    chown oracle oracle
    Restart the listener and Oracle so the changes to the
    executables will take effect.
4.  Check Environment Variables
    Make sure ORACLE_HOME and ORACLE_SID values are correct.
    You may also want to make sure LD_LIBRARY_PATH is set
    correctly as well.
C.  Intermittent TNS-12500 Errors
--------------------------------
    Intermittent TNS-12500 errors are caused by a lack of
    resources on the server.  Finding which resource is
    depleted may be difficult.
1.  The TNS-12500 can be a result of the 'processes'
    parameter in the init<sid>.ora file being too low.
2.  If the init.ora 'processes' parameter seems ok then you
    may need to increase the Unix kernel parameters for the
    maximum number of processes or users (for example, nproc
    or maxuprc). Check the manuals for the Unix operating
    system for more information on these parameters.
    .
3.  Check that you have adequate swap space.
4.  Disable OTRACE.  OTRACE is a tracing feature that can cause
    many problems.  OTRACE is enabled by default.  To disable
    OTRACE:
    a.  Stop the Oracle database.
    b.  Go to the $ORACLE_HOME/otrace/admin directory.
    c.  Delete all files with a '.dat' extension.
    d.  Restart the Oracle database.
5.  Use the Multi-Threaded Server (MTS) option.  MTS will fix
    the problem since the listener does not spawn dedicated
    server processes in this environment.  MTS also cuts down
    on the amount of resources being utilized by having
    connections threaded through dispatchers and by having
    shared server processes read dispatcher requests from
    queues.  To invoke MTS:
    a.  Stop the database
    b.  Modify the init<sid>.ora file to include these
        parameters:
mts_dispatchers="<protocol>,<number of dispatchers to create>"
mts_max_dispatchers=<max number of dispatchers>
mts_servers=<number of shared servers to start>
mts_max_servers=<max number of shared servers>
mts_service=<SID name>
mts_listener_address=<address of the TNS listener>
    An example of a working MTS configuration would be:
mts_dispatchers="tcp,3"
mts_max_dispatchers=10
mts_servers=2
mts_max_servers=4
mts_service=ORCL
mts_listener_address=
"(address=(protocol=tcp)(host=mars1)(port=1521))"
    Please note for Oracle 8i the MTS configuration would be:
mts_dispatchers = "(protocol=tcp)(dis=2)"
mts_max_dispatchers = 4
mts_servers = 4
mts_max_servers = 6
local_listener =
"(ADDRESS_LIST = (ADDRESS=(PROTOCOL=TCP)(HOST=mars1)(PORT=1521)))"
    c.  Restart the database.


e' un problema che presenta a spot; cioè se mi connetto con enterprise
manager, una volta mi fa entrare e magari ad un successivo tentativo mi dà
l'errore 12500 tns....
Il problema l'ho iniziato ad avere dopo lo shutdown che ho dovuto far fare
alla macchina dopo che un disco (guardacaso proprio quello su cui risiede
oracle) si era lockkato impedendo ai client il collegamento alle instanze
oracle ( sono 3 ed ho il problema su tutte e 3).
non vorrei che il processo di cui tu parli era attivo prima e non sia
ripartito quando ho fatto risalire il server.
Tra l'altro,proprio a causa del problema avuto, il disco in questione sta
per essere cambiato, quindi tra non molto riavrò la stessa condizione di
adesso.
La situazione si và facendo drammatica in quanto ricevo da piu utenti
segnalazioni di questo tipo.
Mi potresti spiegare dove devo verificare se questo "prespawned server" è
attivato e in caso negativo come fare per attivarlo?
grazie in anticipo.

 attivato e in caso negativo come fare per attivarlo?
è sul file listener.ora; solo che la sintassi esatta non la ricordo perché
ultimamento sto lavorando su Windows 2000 Datacenter (e i prespawned server
non possono essere attivati su Windows, ma sono sicuro che su Unix lo puoi
fare...).
Comunque, se leggi il manuale di Net 8 (scaricabile anche dal sito Oracle)
lo trovi (è da aggiungere un paio di righe, niente di che...)
