CLIENT SIDE TRACING IN SQL*NET V2

제품 : SQL*NET
작성날짜 : 1997-10-10
Client Tracing
~~~~~~~~~~~~~~
1) Set the environment variable TNS_ADMIN to the directory where the
tnsnames.ora and listener.ora files exist.
The default location is $ORACLE_HOME/network/admin. Set $TNS_ADMIN
to this if it is not set. This ENSURES you know which files you are
using.
2) Start the listener: lsnrctl
> set password <password>
> start
Note any errors. If you do not have a password set then ignore the
set password command.
3) If the listener started, start the database.
4) Create a file in $HOME called .sqlnet.ora and add the lines:
trace_level_client= 16
trace_file_client=client
trace_directory_client= /tmp (or similar)
trace_unique_client=true
5) Try to connect from SQL*Plus thus:
sqlplus username/password@alias
or
sqlplus username/password
substituting a suitable alias.
6) If you get an error we may need to see the client trace file
/tmp/client_<PID>.trc where <PID> is the process ID of the
client process (*1).
This will be quite large so it is best to FAX or EMAIL it.
*1 Note: On earlier versions of SQL*Net the filename may NOT have
the process ID appended to it.
Listener Tracing:
~~~~~~~~~~~~~~~~~
1) Edit your $TNS_ADMIN/listener.ora file and add the lines:
TRACE_LEVEL_LISTENER = 16
TRACE_DIRECTORY_LISTENER = /tmp
TRACE_FILE_LISTENER = "listener"
2) Stop and restart the listener:
lsnrctl stop
lsnrctl start
Output should go to /tmp/listener.trc

By default in 11g traces will go to the ADR which is a new feature.
To disable that feature add the following line to your sqlnet.ora
diag_adr_enabled =OFF
[oops] saw that this is over a month old this post - sorry about that!
hope that helps
John
Edited by: Johnsung on Sep 27, 2012 3:59 PM

Similar Messages

  • TRACING IN SQL*NET V2

    제품 : SQL*NET
    작성날짜 : 1997-10-10
    Introduction
    ~~~~~~~~~~~~
    For most problems you need to identify the relevant parts of a
    connection to trace. To do this consider which scenario you are
    having problems with and where tracing needs to be enabled.
    Note that tracing produces a lot of output , especially at higher
    trace levels.
    There are 3 main areas of SQL*Net that can produce trace output:
    1 = the SQL*Net 'client'
    2 = the 'listener' process
    3 = the SQL*Net 'server'.
    a) Establishing a connection:
    Client ----> Listener ----> Server
    1 2 3
    b) An established connection:
    Client --------> Server
    1 3
    c) Opening a database link:
    Client ----> Server ----> Listener -----> Server2
    1 3 1 2 3
    Note here that the Oracle server process is also a SQL*Net
    client when it makes an outgoing call to a listener to
    open a database link. Database links are OPENED when first
    used. They should then remain open until closed.
    d) An established database link:
    Client ----> Server -----> Server2
    1 3 1 3
    In each case here there are several potential sampling points. You
    should be able to identify quickly which of these scenarios matches
    your setup. As these scenarios are likely to involve connections
    between different machines you should remember that tracing for any
    process is controlled by the configuration details that the process
    reads WHEN IT IS STARTED. This is especially important when looking
    at MTS connections as the SQL*Net server is the 'dispatcher' process.
    Some dispatchers are started when the database instance is started
    and others may start at a later time (on demand). Each dispatcher will
    read their SQL*Net configuration WHEN THEY START.
    7.2 Client Tracing
    ~~~~~~~~~~~~~~
    For client TOOLS edit or create the file $HOME/.sqlnet.ora and add
    the lines:
    trace_level_client=16
    trace_file_client=cli
    trace_directory_client=/tmp # Or a known directory
    trace_unique_client=true # Add '_pid' to trace filename
    This will turn on FULL tracing for your user account only producing
    output in a file called /tmp/cli_<PID>.trc .
    (For some SQL*Net versions the file will be just /tmp/cli.trc)
    For client 'ORACLE' process (as in the case of database links) put this
    same information into $TNS_ADMIN/sqlnet.ora file.
    On versions up to and including Oracle 7.0.16 client trace may not
    add a process ID to the name of the trace file. This means two
    processes may end up writing to the same trace file unless you
    take care to control which processes write trace output to each file.
    7.3 Listener Tracing
    ~~~~~~~~~~~~~~~~
    Listener tracing can ONLY be configured in the listener.ora file.
    Add the lines below to the listener.ora file:
    trace_level_listener=16
    trace_file_listener=listener
    trace_directory_listener=/tmp # Or a known directory
    This will define FULL listener tracing to the file /tmp/listener.trc.
    You can enable this tracing by either:
    lsnrctl reload
    OR
    lsnrctl stop;
    lsnrctl start;
    TCP/IP
    ~~~~~~
    It is often useful to confirm that a listener is listening on a
    specified address. Most Unix machines include a command called
    'netstat' (Often in /etc or in /usr/etc). The command netstat -a
    should list all TCP/IP end points on which a listener is listening.
    Eg:
    For a listener listening on HOST=... PORT=1580 there should be a
    netstat entry of the form:
    RecvQ SendQ Local Address Foreign Address TCP state
    0 0 *.1580 *.* LISTEN
    Note: Some versions of netstat will only list established connections
    and not listen end points. See the man page on your machine.
    7.4 Server Tracing
    ~~~~~~~~~~~~~~
    Server side trace is not required as often as the other two traces
    mainly because most problems are related to establishing a connection.
    Once a connection has been established the client and server processes
    are communicating. It is sometimes useful to see exactly what SQL
    commands have been received by the server, and what data it has sent
    back out.
    The file $TNS_ADMIN/sqlnet.ora controls the server side tracing. Add
    the lines below to this file:
    trace_level_server=16
    trace_file_server=server
    trace_directory_server=/tmp # Or a known directory
    Output should be sent to the file /tmp/server_<PID>.trc
    Note: Server side tracing acts on the SQL*Net server side.
    For dedicated connections this is the Oracle process on the
    server machine.
    For MTS connections this is the DISPATCHER and NOT the shared
    server. Data is passed between the dispatcher and the shared
    servers via the SGA and this does NOT involve SQL*Net.
    It is also important to note that as a dispatcher handles
    several client processes the dispatcher trace output can be a
    mix of trace from many client processes making it VERY difficult
    to follow. The general advice for such problems is:
    a) See if the problem reproduces WITHOUT using MTS - if
    so the trace is much cleaner
    b) If a problem ONLY reproduces under MTS ensure the machine
    is in a controlled environment so you can be sure that only
    YOUR process is using the dispatcher.
    7.5 Trace Summary
    ~~~~~~~~~~~~~
    1) Identify where you need to trace.
    2) Identify which files on which machines control tracing at these
    points. Tracing is controlled in the following files:
    Client Server Listener
    ~~~~~~ ~~~~~~ ~~~~~~~~
    Files: $HOME/.sqlnet.ora sqlnet.ora listener.ora
    sqlnet.ora
    3) Add in the relevant trace parameters (See Below)
    4) Restart any processes that need to read the new trace values.
    Reload the listener as required.
    5) Reproduce your problem
    6) Save all your trace output immediately
    7) Disable the tracing
    7.6 Main Trace Parameters
    ~~~~~~~~~~~~~~~~~~~~~
    trace_level_listener = off
    trace_file_listener = Filename *1
    trace_directory_listener = Directory *2
    *1 Unquoted (") filenames will be translated into lower case.
    *2 You CANNOT use environment variables in the Filename or Directory
    name.
    7.7 Diagnosing Trace output
    ~~~~~~~~~~~~~~~~~~~~~~~
    Trace output can be very difficult to follow. Before looking at a
    trace file make sure:
    a) You are familiar with the sequence of events in setting up
    a connection. SQL*Net connections follow a sequence of
    events - you will need to determin where in the sequence
    the problem occurs.
    b) Do not be misled by error reports in the trace files. You
    must follow the context of the errors - an error may be
    quite valid at that point in a sequence. Eg: For client
    connections a list of addresses to call is built - if the
    first address yeilds no response the next address is tried.
    This next address may yeild a response and the 'true' error
    occurs at this point in the sequence.
    c) Do not be misled by unusual 'Bequeath' connections in the
    trace. If an error is received over SQL*Net the client
    may use a "Bequeath" operation to spawn an oracle process
    which it then uses to get the TEXT of the error. A very short
    exchange of packets occurs and the bequethed process exits.
    The 'TRUE' problem is likely to be before this bequeath
    operation.
    Useful trace 'tags':
    The following are useful items to follow in trace files - these
    are not guaranteed to be valid across all SQL*Net releases and
    are for guidance only. Entries are assumed to be taken at trace
    level 16 to allow data packets to be seen. This will produce a
    LOT of trace output.
    -<ERROR>-
    Error information follows. Remember the error may be acceptable
    osntns: Calling address
    Shows address list constructed for a call OUT to a listener
    nricall: Making call with following address information: ...
    Shows the ACTUAL address being called from the above list
    nsopen: entry
    We are about to try and open a connection.
    nsopen: transport is open
    nsopen: error exit
    A connection to the called address has been made / failed.
    nsclose: ...
    An established connection is being closed - check nearby
    for errors.
    nscall: redirected
    The client has been redirected to a differenct address.
    The next step should be to call the new address. The address
    should appear in an earlier data packet.
    nspsend / nsprecv
    Outgoung / Incoming data

    This forum is for Oracle Migration Workbench issues, i.e. migration using the workbench from a non Oracle database to an Oracle database.
    Here are some pointers that may be useful, but you may need to get more information elsewhere, for example Oracle Customer Support.
    a Oracle 7.1 client (including your example) will connect to an Oracle 8.1.5 server.
    Is the server correctly configured (can a client connect from another machine)?
    Tracing can be turned on in the client, server and/or listener to get further information.
    Turloch

  • Re: enabling client side tracing

    1009072 wrote:
    Thanks for quick help and nice alternative.
    Could you please give some more details on enabling SQL*Net tracing is to packet sniff at the OS/network level.
    I am sorry to see that GOOGLE is broken for you.
    Please be patient while repairs are completed.
    Additional information will be posted when it becomes available.

    To: 1009072
    Here, you can use mine for free: Google

  • Enabling client side tracing

    Hi Experts,
    Is their any impacts on performance if we enable tracing in client sqlnet.ora ???

    Example
    trace_level_client = 16
    trace_file_client = cli
    trace_directory_client = c:\temp\ora
    trace_unique_client = on
    trace_timestamp_client = on
    trace_filelen_client = 100
    trace_fileno_client = 2
    log_file_client = cli
    log_directory_client = /u01/app/oracle/product/9.0.1/network/log
    tnsping.trace_directory = /u01/app/oracle/product/9.0.1/network/trace
    tnsping.trace_level = admin
    DIAG_ADR_ENABLED=OFF
    TRACE_LEVEL_[CLIENT|SERVER|LISTENER]     = [0-16|USER|ADMIN|SUPPORT|OFF]
    TRACE_FILE_[CLIENT|SERVER|LISTENER]      = <FILE NAME>
    TRACE_DIRECTORY_[CLIENT|SERVER|LISTENER] = <DIRECTORY>
    TRACE_UNIQUE_[CLIENT|SERVER|LISTENER]    = [ON|TRUE|OFF|FALSE]
    TRACE_TIMESTAMP_[CLIENT|SERVER|LISTENER] = [ON|TRUE|OFF|FALSE] #Oracle8i+
    TRACE_FILELEN_[CLIENT|SERVER|LISTENER]   = <SIZE in KB> #Oracle8i+
    TRACE_FILENO_[CLIENT|SERVER|LISTENER]    = <NUMBER> #Oracle8i+
    LOG_FILE_[CLIENT|SERVER|LISTENER]        = <FILE NAME>
    LOG_DIRECTORY_[CLIENT|SERVER|LISTENER]   = <DIRECTORY NAME>
    LOGGING_LISTENER                         = [ON|OFF]
    TNSPING.TRACE_LEVEL                      = [0-16|USER|ADMIN|SUPPORT|OFF]
    TNSPING.TRACE_DIRECTORY                  = <DIRECTORY>
    NAMES.TRACE_LEVEL                        = [0-16|USER|ADMIN|SUPPORT|OFF]
    NAMES.TRACE_FILE                         = <FILE NAME>
    NAMES.TRACE_DIRECTORY                    = <DIRECTORY>
    NAMES.TRACE_UNIQUE                       = [ON|OFF]
    NAMES.LOG_FILE                           = <FILE NAME>
    NAMES.LOG_DIRECTORY                      = <DIRECTORY>
    NAMES.LOG_UNIQUE                         = [ON|OFF]
    NAMESCTL.TRACE_LEVEL                     = [0-16|USER|ADMIN|SUPPORT|OFF]
    NAMESCTL.TRACE_FILE                      = <FILE NAME>
    NAMESCTL.TRACE_DIRECTORY                 = <DIRECTORY>
    NAMESCTL.TRACE_UNIQUE                    = [ON|OFF]

  • SQL*NET V2 최적화하기

    제품 : SQL*NET
    작성날짜 : 2001-04-25
    SQL*NET V2 최적화하기
    ====================
    1) PING
    TCP/IP 네트워크상에서 ping을 사용해서
    client와 server간에 걸리는 시간을 check할 수 있다.
    만일 이 시간이 오래 걸리면 SQL*Net 보다 이 문제를 먼저 해결해야 한다.
    사용 방법 :
    ping 호스트이름
    (NT의 경우에는 dos command상태에서)
    2) TNSPING
    이 tool은 기본적으로 설치가 되어 있으며
    이 tool을 가지고 user가 client에 setting한 TNS alias(tnsnames.ora
    파일안에 설정)
    가 정상적으로 동작하는지를 테스트해 볼 수 있습니다.
    TNSPING은 접속하고자하는 database가 있는 machine의 listener에 접속을하고
    걸리는 시간을 miliseconds로 표시해 줍니다.
    (실제 db와 connection을 맺는 것은 아닙니다.)
    사용 방법 :
    tnsping TNSalias이름
    (NT의 경우에는 dos command상태에서)
    3) 모든 logging 과 tracing 막기
    Tracing은 client와 server에 모두 가능하게 할 수 있습니다.
    다음 parameter를 SQLNET.ORA파일과 LISTENER.ORA파일
    ( $ORACLE_HOME/network(또는 net80)/admin에 위치합니다 )
    에 setting하고 listener를 restart
    (lsnrctl stop, lsnrctl start)
    하면 SQL*Net의 모든 tracing을 막을 수 있습니다.
    SQLNET.ORA:
    TRACE_LEVEL_CLIENT =OFF
    TRACE_LEVEL_SERVER =OFF
    TNSPING.TRACE_LEVEL=OFF
    'OFF'대신에 '0'을 사용해도 됩니다.
    LISTENER.ORA:
    TRACE_LEVEL_LISTENER=OFF
    LOGGING_LISTENER=OFF
    4) Listener log 파일들 지우기
    만일 listener의 logging이 설정되어 있는 상태라면 LISTENER.LOG 파일이
    이 생깁니다. listener는 connection이 맺어질대 마다 이 파일에
    lock을 걸고 write하기 때문에 size가 계속 증가하게 되어 문제가 생길 수
    있습니다. 만일 LISTENER.LOG 파일의 size가 너무 크게 되면 rename을 하시기
    바랍니다. 그리고 listener를 restart하면 새로운 log file이 만들어 집니다.
    5) SQLNET.ORA에 AUTOMATIC_IPC를 OFF로 설정
    AUTOMATIC_IPC = { ON | OFF }
    위 parameter는 "SQLNET.ORA"파일에 설정할 수 있으며 ON으로 되어 있는경우
    SQL*Net이 같은 alias정보를 가진 local database가 있는지 check하게
    됩니다.
    만일 local database가 있다면 connection은 network layer를 건너뛰고 local
    'Inter Process Communication'(IPC) connection을 맺게 됩니다.
    따라서 이 setting은 database server쪽에 사용할 수 있는 것이지
    client machine SQL*Net에는 아무 쓸모 없습니다.
    database server쪽에 사용하더라도 local database에 SQL*Net connection이
    반드시 필요한 경우가 아니라면 사용하시 않는 것(OFF로 설정)이 좋습니다.
    6) SQLNET.ORA에 NAMES.DIRECTORY_PATH 설정
    NAMES.DIRECTORY_PATH = (ONAMES,TNSNAMES)
    이 parameter는 TNS aliases를 찾는 경로를 지정할때 사용합니다.
    Oracle*Names가 설정이 안되어 있는 경우 ONAMES을 지우시는 것이 좋습니다.
    7) SDU와 TDU
    SDU('Session Data Unit')는 네트워크를 통해 보내는 packet의 size입니다.
    이 size는 MTU(Maximum Transmission Unit)를 넘어서는 안됩니다.
    MTU는 네트워크상에 고정된 값입니다.
    TDU('Transport Data Unit')는 SQL*Net이 data를 함께 묶는 기본 packet size
    이며 SDU의 배수여야 합니다.
    다음에서 예를 들어 보겠습니다.
    * SDU=1024, TDU=1536:
    SQL*Net은 buffer에 1536 byptes까지 저장했다가 네트워크로 보냅니다.
    낮은 network layer에서 이것을 다시 두개의 physical packets(1024,512
    bytes)로
    나누어 보냅니다.
    * SDU=1514, TDU=1000:
    SQL*Net은 buffer에 1000 byptes까지 저장했다가 네트워크로 보냅니다.
    SDU는 request당 514 bytes를 더 담을 수 있는데도 불구하고 보내지기 때문에
    network resource의 낭비를 초래합니다.
    표준 Ethernet network에서 MTU의 default size는 1514 bytes입니다.
    표준 token ring network에서 MTU의 default size는 4202 bytes입니다.
    SDU와 TDU를 설정하려면 TNSNAMES.ORA 과 LISTENER.ORA 를 다음과 같이
    바꾸어야 합니다.
    TNSNAMES.ORA:
    ORCL.WORLD =
    (DESCRIPTION =
    (SDU=1514)
    (TDU=1514)
    (ADDRESS =
    (PROTOCOL = TCP)
    (HOST = fu.bar)
    (PORT = 1521)
    (CONNECT_DATA = (SID = ORCL))
    LISTENER.ORA:
    SID_LIST_LISTENER =
    (SID_LIST =
    (SID_DESC =
    (SDU = 1514)
    (TDU = 1514)
    (SID_NAME = ORCL)
    (GLOBAL_DBNAME = ORCL.WORLD)
    SDU와 TDU는 modem을 사용하는 환경에서는 줄여주는 것이 좋고
    fiber나 T3 line을 사용하는 환경에서는 늘려주는 것이 좋습니다.
    SDU와 TDU의 default값은 2048이고 maximum값은 32768입니다.
    8) PROTOCOL.ORA의 tcp.no_delay 설정
    기본적으로 SQL*Net은 SDU buffer가 찰때가지 request를 전송하지 않고
    기다립니다. 다시 말해 request가 도착지점으로 바로 전송되지 않는 다는것을
    의미 합니다. 그런데 'no_delay'를 설정함으로써 data buffering을 하지 않게
    할 수 있습니다. 따라서 'no_delay'를 설정하게 되면 작은 size의 patckets의
    전송이 늘게되어 network traffic이 증가하게 됩니다.
    따라서 이 parameter는 TCP timeout이 발생했을 경우에만 사용하셔야 합니다.
    9) LISTENER.ORA의 QUEUESIZE 설정
    QUEUESIZE는 listener가 저장할 수 있는 request의 수를 의미 합니다.
    만일 들어오는 reqeusts의 수가 buffer의 size를 넘게 되면,
    접속을 시도한 client는 접속을 실패하게 됩니다.
    이 buffer의 size는 예상되는 동시 접속 수를 설정해 주는 것이 좋습니다.
    LISTENER =
    (ADDRESS_LIST =
    (ADDRESS =
    (PROTOCOL = TCP)
    (HOST = fu.bar)
    (PORT = 1521)
    (QUEUESIZE = 32)
    이 parameter는 TCP/IP나 DECNET protocol이 사용될때만 사용됩니다.
    10) SQLNET.ORA의 BREAK_POLL_SKIP 설정
    이 parameter는 user break을 check하는 사이의 packet수를 지정합니다.
    다시 말해 만일 이 parameter의 값이 높으면 CTRL-C checking은 덜 자주
    일어나게되며 CPU overhead는 줄게 됩니다.
    만일 이 parameter의 값이 낮으면 CTRL-C checking이 자주 발생되어
    CPU overhead가 늘게 됩니다.
    기본값은 4이며 client SQL*NET에만 사용됩니다.
    11) SQLNET.ORA의 DISABLE_OOB 설정
    Out of band break check를 enable시키거나 disable시킬때 사용하는
    parameter입니다.
    기본값은 off입니다.
    여기서 잠간만 !
    Out of Band Breaks란 무엇인가 ?
    네트워크 통신상에서 받아들여지는 interrupt signals은 일반적으로
    다른 data(예를 들어 select 문장)과 같이 도착하게 됩니다.
    이것을 In-band Breaks라고 합니다.
    그런데 이 interrupt signals을 connection과는 다른 channel을 통해
    전달할 수 있습니다 이것을 Out of Band Breaks라고 하며 이 방식은
    interrupt signal을 훨씬 빠르게 그리고 효과적으로 전달 할 수 있습니다.
    (예를 들어 deadlock을 break하기위해 control-C를 사용하는 것)
    12) PROCESS.DAT와 REGID.DAT
    7.3.2 버전에서 Oracle Server Tracing은 기본적으로 enabled되어 있습니다.
    따라서 모든 connection과 request가 PROCESS.DAT와 REGID.DAT에
    기록이됩니다.
    database의 사용기간이 길어지면 이 파일들은 접속속도를 현저히 떨어뜨리게
    됩니다.
    이러한 trace 파일들을 사용하지 않기위해 listener.ora파일에
    'EPC_DISBLED=TRUE'를 설정해야 합니다.

    This forum is for Oracle Migration Workbench issues, i.e. migration using the workbench from a non Oracle database to an Oracle database.
    Here are some pointers that may be useful, but you may need to get more information elsewhere, for example Oracle Customer Support.
    a Oracle 7.1 client (including your example) will connect to an Oracle 8.1.5 server.
    Is the server correctly configured (can a client connect from another machine)?
    Tracing can be turned on in the client, server and/or listener to get further information.
    Turloch

  • Process wait SQL*Net message from dblink /SQL*Net message from client

    Hi There,
    We have an ETL process that we kindly need your help with. The process been running since Sun, where it transfers the data from one server (via remote query). The process was running ok till last night where it appeared
    to have stopped working and/or the session is just idling doing nothing.
    Here are some tests that we did to figure out what's going on:
    1. when looking at the session IO, we noticed that it's not changing:
    etl_user@datap> select sess_io.sid,
      2         sess_io.block_gets,
      3         sess_io.consistent_gets,
      4         sess_io.physical_reads,
      5         sess_io.block_changes,
      6         sess_io.consistent_changes
      7    from v$sess_io sess_io, v$session sesion
      8   where sesion.sid = sess_io.sid
      9     and sesion.username is not null
    10     and sess_io.sid=301
    11  order by 1;
                        logical   physical
      SID BLOCK_GETS      reads      reads BLOCK_CHANGES CONSISTENT_CHANGES
      301  388131317   97721268   26687579     223052804             161334
    Elapsed: 00:00:00.012. Check there is nothing blocking the session
    etl_user@datap> select * from v$lock where sid=301;
    ADDR     KADDR           SID TY        ID1        ID2      LMODE    REQUEST      CTIME      BLOCK
    684703F0 6847041C        301 DX         35          0          1          0      45237          0
    684714C4 684714F0        301 AE     199675          0          4          0     260148          0
    619651EC 6196521C        301 TM      52733          0          3          0      45241          0
    67F86ACC 67F86B0C        301 TX     458763      52730          6          0      45241          03. Check if the session is still valid:
    etl_user@datap> select status from v$session where sid=301;
    STATUS
    ACTIVE4. Check if there is anything in long ops that has not completed:
    etl_user@datap> SELECT SID, SERIAL#, opname, SOFAR, TOTALWORK,
      2      ROUND(SOFAR/TOTALWORK*100,2) COMPLETE, TIME_REMAINING/60
      3      FROM   V$SESSION_LONGOPS
      4      WHERE
      5      TOTALWORK != 0
      6      AND    SOFAR != TOTALWORK
      7     order by 1;
    no rows selected
    Elapsed: 00:00:00.005. Check if there is anything in long ops for the session:
    etl_user@datap> r
      1* select SID,SOFAR,TOTALWORK,START_TIME,LAST_UPDATE_TIME,TIME_REMAINING,MESSAGE from V$SESSION_LONGOPS where sid=301
      SID      SOFAR  TOTALWORK START_TIM LAST_UPDA TIME_REMAINING MESSAGE
      301          0          0 22-JUL-12 22-JUL-12                Gather Table's Index Statistics: Table address_etl : 0 out of 0 Indexes done
    Elapsed: 00:00:00.00This is a bit odd!! This particular step have actually completed successfully on the 22nd of July, and we don't know why it's still showing in long opps!? any ideas?
    6. Looking at the sql and what's it actually doing:
    etl_user@datap> select a.sid, a.value session_cpu, c.physical_reads,
      2  c.consistent_gets,d.event,
      3  d.seconds_in_wait
      4  from v$sesstat a,v$statname b, v$sess_io c, v$session_wait d
      5  where a.sid= &p_sid_number
      6  and b.name = 'CPU used by this session'
      7  and a.statistic# = b.statistic#
      8  and a.sid=c.sid
      9  and a.sid=d.sid;
    Enter value for p_sid_number: 301
    old   5: where a.sid= &p_sid_number
    new   5: where a.sid= 301
                 CPU   physical    logical                                   seconds
      SID       used      reads      reads EVENT                             waiting
      301    1966595   26687579   97721268 SQL*Net message from dblink         45792
    Elapsed: 00:00:00.037. We looked at the remote DB where the data resides on, and we noticed that the remote session was also waiting on the db link:
    SYS@destp> select a.sid, a.value session_cpu, c.physical_reads,
      2  c.consistent_gets,d.event,
      3  d.seconds_in_wait
      4  from v$sesstat a,v$statname b, v$sess_io c, v$session_wait d
      5  where a.sid= &p_sid_number
      6  and b.name = 'CPU used by this session'
      7  and a.statistic# = b.statistic#
      8  and a.sid=c.sid
      9  and a.sid=d.sid;
    Enter value for p_sid_number: 388
    old   5: where a.sid= &p_sid_number
    new   5: where a.sid= 390
           SID SESSION_CPU PHYSICAL_READS CONSISTENT_GETS EVENT                                                    SECONDS_IN_WAIT
           390         136              0            7605 SQL*Net message from client                                        46101
    SYS@destp>We have had an issue in the past where the connection was being dropped by the network when the process runs for few days, hence we have added the following to the sqlnet.ora and listener.ora files:
    sqlnet.ora:
    SQLNET.EXPIRE_TIME = 1
    SQLNET.INBOUND_CONNECT_TIMEOUT = 6000
    listener.ora:
    INBOUND_CONNECT_TIMEOUT_LISTENER = 6000What else can we do and/or further investigate to work out the root cause of the problem, and may be help resolve this. We don't want to just stop and start the process again as it took few days already. We have
    had a chat to the infrastructure team and they've assured us that there have been no network outages.
    Also, the alert logs for both instances (local and remote) shows no errors what so ever!
    Your input is highly appreciated.
    Thanks
    Edited by: rsar001 on Jul 25, 2012 10:22 AM

    Ran the query on both local/remote db, and no rows returned:
    etl_user@datap> SELECT DECODE(request,0,'Holder: ','Waiter: ')||vl.sid sess, status,
      2  id1, id2, lmode, request, vl.type
      3  FROM V$LOCK vl, v$session vs
      4  WHERE (id1, id2, vl.type) IN
      5  (SELECT id1, id2, type FROM V$LOCK WHERE request>0)
      6  and vl.sid = vs.sid
      7  ORDER BY id1, request
      8  /
    no rows selected
    Elapsed: 00:00:00.21

  • How to drill down the cause of "SQL*Net message from/to client"

    Pretty frustrated with my tune up using suggestions from many papers for Oracle 10g R2 on AIX 5.3 L system. My users told me that the system (including Baan 5c) still responds slowly in some processes, some even worsen.
    Using both queries such as
    SELECT sid, schemaname, status FROM gv$session ORDER BY 2;
    SELECT inst_id, seq#, event, p1, p2, p3, wait_time FROM v$session_wait_history WHERE sid=<sid from above>
    INST_ID SEQ# EVENT P1 P2 P3 WAIT_TIME
    1 1 SQL*Net message from client 1413697536 1 0 6419
    1 2 SQL*Net message to client 1413697536 1 0 0
    and others similar, I found very large numbers (almost 97%) of the sessions have events as “SQL*Net message to client” and “SQL*Net message from client” on their wait_time even the sids are in inactive status. After checking the meaning of those messages in Oracle Performance and Tuning document, the document states that mainly they are probably network problems. So How can I drill down to what status of network from my client (the users) to server by Oracle or AIX? In Baan, it has its own parameter sets in its db_resource file controlling the connectivity. In average, there are 4000 “opened cursor current”, but most of them inactives.
    So my colleague asked me rollback all th changes I did on OS level such as minperm%=5
    maxperm%=90
    maxclient%=90,
    lgpg_regions lgpg_size,
    sys0 maxuproc=512,
    aio0 maxservers='260'
    and many ioo parameters to system defaults.
    I even removed the mulitplex copy of the redo log.
    I tried to proof them that there maybe the problem of the Baan/Oracle connectivity, ie due to message above,

    http://docs.oracle.com ... read them for configuration information.
    http://tahiti.oracle.com ... read them for recommendations.
    http://otn.oracle.com ... find the best practices docs.
    http://metalink.oracle.com ... look for similar issues to yours.
    People that change things, on production boxes, without first determining that metrics indicate they are a good idea, and then determining their impact on a test box, should be sold to zoos as leopard food.
    PS: Slowly likely has absolutely nothing to do with anything you touched. First you tune the application. Then you tune the database. Then you tune the operating system. Get out of the way and make the DBAs do their job.

  • SQL*Net message from client - huge wait in trace file

    Dear All,
    I am facing a performance issue in a particular operation ( which was completed in 21 Minutes earlier). Now the same operation takes more than 35 Minutes. I took a trace for those session ( 10046 level 12 trace ) and found Lot of waits in SQL*Net message from client.
    Elapsed times include waiting on following events:
    Event waited on Times Max. Wait Total Waited
    ---------------------------------------- Waited ---------- ------------
    SQLNet message from client 611927 10.00 1121.35*
    I copied only the highest wait in the tkprof output.
    And I found from the tkprof and even in raw trace file this event waits more time after excuting
    SELECT sysdate AS SERVERDATE from dual;
    Elapsed times include waiting on following events:
    Event waited on Times Max. Wait Total Waited
    ---------------------------------------- Waited ---------- ------------
    SQL*Net message to client 115 0.00 0.00
    SQLNet message from client 115 10.00 724.52*
    Please help me to find out why this wait taking long time, especially on the above query..
    Regards,
    Vinodh

    Vinodh Kumar wrote:
    Hi,
    This is what available in the trace file
    PARSING IN CURSOR #2 len=38 dep=0 uid=60 oct=3 lid=60 tim=7052598842 hv=3788189359 ad='7d844fa0'
    *"SELECT sysdate AS SERVERDATE FROM dual"*
    END OF STMT
    PARSE #2:c=0,e=12,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,tim=7052598839
    BINDS #2:
    EXEC #2:c=0,e=42,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,tim=7052599002
    WAIT #2: nam='SQL*Net message to client' ela= 1 driver id=1952673792 #bytes=1 p3=0 obj#=-1 tim=7052599058
    FETCH #2:c=0,e=15,p=0,cr=0,cu=0,mis=0,r=1,dep=0,og=1,tim=7052599110
    *** 2012-01-02 17:07:30.364
    WAIT #2: nam='SQL*Net message from client' *" ela= 10007957"* driver id=1952673792 #bytes=1 p3=0 obj#=-1 tim=7062607120Please find the last line WAIT -- in the complete trace after executing this query
    In awr report , this query taken less than a sec for more than 2000 executions.
    Regards,
    VinodhGood idea to check the raw trace file. It is important to notice that this particular wait event appears after the fetch of the result from the database. The client receives the SYSDATE from the database server, and then the client performs some sort of action for about 10 seconds before submitting its next request to the database. The SQL statement that immediately follows and immediately preceeds this section of the trace file might provide clues regarding what caused the delay, and where that delay resides in the client side code. Maybe a creative developer added a "sleep for 10 seconds" routine when intending to sleep for 10ms? Maybe the client CPU is close to 100% utilization?
    Charles Hooper
    http://hoopercharles.wordpress.com/
    IT Manager/Oracle DBA
    K&M Machine-Fabricating, Inc.

  • How do I get SQL*Net Client for Win95?

    Specifically, which software package comes with the SQL*Net Client for Windows 95?

    Any of the products that requires a client side installation will include it. Things like the server will also normally include a client side instalation kit. The JDBC drivers do not come bundled with a client (not when downloaded from technet at any rate).

  • Sql Net*8 Easy configuration on client not responding

    We are evaluting Developer 6.0 Beta version.
    Sql Net*8 is working well on the server side(Window Nt) no probs
    but at the client side (Windows 95) when we click
    start->oracle for windows95->Sql Net*8 easy ,no resond screan
    appears. So we go for manual configuration of tnsnames.ora
    and for that we copy tnsnames.ora from the server side which
    is working fine but at client side when we try to loggin to
    oracle 8 database using sql*plus we get the following error
    ORA-12222:TNS no such protocol adapter.
    we had loaded tcp/ip protocol of microsoft.
    null

    Ankur diwan (guest) wrote:
    : We are evaluting Developer 6.0 Beta version.
    : Sql Net*8 is working well on the server side(Window Nt) no
    probs
    How do you know it ?
    : but at the client side (Windows 95) when we click
    : start->oracle for windows95->Sql Net*8 easy ,no resond screan
    : appears. So we go for manual configuration of tnsnames.ora
    : and for that we copy tnsnames.ora from the server side which
    : is working fine but at client side when we try to loggin to
    : oracle 8 database using sql*plus we get the following error
    : ORA-12222:TNS no such protocol adapter.
    : we had loaded tcp/ip protocol of microsoft.
    Can you ping from client to server ?
    Is TNS listener on server started ?
    null

  • Getting SQL*Net more data from client waits when running a query through web based interface

    Hi, you all,
    We are having this weird behavior when running query through web based interface, we get a lot of "SQL*Net more data from client" waits, the OEM indicates that the current wait event is SQL*Net more data from client
    It's just a very simple query wich invokes a db link.
    When I execute the same query on any PL/SQL tool like toad or sql developer it works fine, but that query inside an application executed through a web based interface, it hangs for ever.
    Where can I start looking for the problem.
    We are working on a 3 Node RAC 11gr2, both databases are on the same RAC.
    Thanks.

    Hi ,
    we managed to reproduce the case in test environment, below are the steps:
    1)have 2 databases on different machines, will call the first one local, the other one remote.
    2)in the local database create:
    a - DBLink to remote database.
    b - read data from remote database(we simply used select count(*) from dummy_table )
    c - insert data into a table on the local database
    d - terminate the connection between the 2 databases (disconnect either machine from the network)
    e - commit on local database.
    what we noticed was the following:
    1)when the local database is disconnected from the network(the machine is not connected to any network at the moment): almost immediately throws an error, and issuing the following:
    select * from dba_2pc_pending;we found some data .
    2) when the remote database was disconnected(the local database is still connected to the network):
    after 7-8 seconds an error is thrown, and issuing the following:
    select * from dba_2pc_pending;did not return any data.
    since this is pretty similar to our case ,we concluded that it's a network issue.
    is this the correct behavior ?
    as a temporary solution till the network issue is fixed ,we did the following:
    1) changed the call of the remote procedure to calling a local procedure that calls the remote procedure.
    2) added pragma autonomous_transaction to the local procedure.
    3) at the end of the local procedure rollback the autonomous transaction.
    it seems that since the global transaction does not use the DBLink database does not issue a 2PC commit.
    this works in my cases since the DBLink is only issed to read data.

  • Is XML-SQL Utility for Java run on Client Side?

    A question about the XML-SQL Utility for Java
    When a client program connect to a Oracle database (the clinet program and Oracle DB is run on two different machine. Oracle 8i is used) and use the oracle.xml.sql.query.OracleXMLQuery Class (form the XSU) to generate XML by given a SQL query. I want to know the transforation process is execute in the Clinet side or the database?
    Is there any method that i can retrieve the XML directly from the database rather then doing the transformation form the Client side?

    Set JDK_HOME to the directory where you install your JDK (Java Development Kit).
    So instance, I've install JDK1.1.8 on my
    C drive so
    set JDK_HOME=c:\jdk1.1.8;c:\jdk1.1.8\bin

  • Which SQL Server Edition support how many sessions to the instance from SQL Management Studio on the client side

    Hi,
    I'm looking for some help on the below query to verify which version of sql server edition supports multiple or N number of sessions to the SQL server Instance using the SQL Server Management Studio tool from the client side.
    SQL Standard Vs Enterprise.
    your urgent help is much appreciated.
    Br.

    Hello,
    See Maximum Capacity Specifications for SQL Server =>
    User connections = 32,767; and this value is independent of use SQL Server Version, edition or the used tools, like SSMS in your question 
    Olaf Helper
    [ Blog] [ Xing] [ MVP]

  • Net Use in Script Client Side Extension

    Hi,
    I just rebuild my home Network. In my old home Network I had my loginscripts added to each user in AD. However - now I want to move my Loginscripts to GPO. So I added a batch to User Configuration\Policies\Windows Settings\Logon
    The script is just a simple net use Batch.
    But after logon and multiple GPUpdates - drives were not mapped. So I started to troubleshoot.
    First I thought the script wasn't started. And yes there were some Problems:
    - Sync Processing,
    - Local Intranet for \\domain.name\sysvol
    But it still didn't work. Executing the script from
    \\domain.name\sysvol... mapped the drives.
    So I changed the script to vbs and added a msgbox now() - and I got a messagebox during logon. But still no drives mapped.
    If I map the drive by Configuration\Preferences\Windows Settings\Drive Maps - the drives will be mapped.
    If I add the script to the user object in AD - I also works.
    So maybe I am wrong - but is there a Problem to map drives in Script Client Side Extensions?
    I searched the web - but didn't find a clear Statement.
    thx in advance

    Hi,
    Since the issue persists when you turned off UAC, I suggest you could try to enable the following policy setting “Always wait for the network at computer startup and logon”
    to see if it works at this time. You could configure it from the following path in GPMC:
    Computer Configuration\Administrative Templates\System\Logon\. For details, please refer to the following article.
    Description of the Windows Fast Logon Optimization feature
    http://support.microsoft.com/kb/305293
    In addition, I suggest you’d better map these drives via GPP. It will reduce your logon scripts. Here is an article as reference, hope it helps.
    GP Preferences Will Reduce Logon Scripts : Mapping Drives
    http://blogs.technet.com/b/grouppolicy/archive/2009/02/11/gp-preferences-will-reduce-logon-scripts-mapping-drives.aspx
    Best Regards,
    Andy Qi
    TechNet Subscriber Support
    If you are
    TechNet Subscription user and have any feedback on our support quality, please send your feedback
    here.
    Andy Qi
    TechNet Community Support

  • SQL*Net Client for Oracle 8i/9i ?

    Hi..All,
    Where do I download just the SQL*NET client for ORacle 8i/9i. ?
    Regards

    I have the same question: is there a stand-alone
    installer for SQL*Net?No.
    >
    I need this for a Windows 2003 Server x64 platform.
    The link provided just goes to the client, which is
    far too large to transfer over my VPN connection to
    a remote host.The alternative is the 'instant client'. You MIGHT be able to use that.

Maybe you are looking for

  • How to rename back to files instead of folder artist / song

    Hello, I have folder full of mp3 that I want to simply be organized by file. In playing around with iTunes, I pointed it to that folder and it did a mass reorganization of all of my mp3s into the classic artist / album / song when all I want is the w

  • Cannot add a new playlist to my iphone - Help!!!

    I am not able to add a new playlist to my iphone.  I recently changed my computer, and when I choose the option to manually manage my music, I get a message that my phone is synced to a different itunes library, and if I sync to this library my conte

  • Export in MP3 to SD card

    My car has two slots for SD cards with music. The cards must be formatted in FAT32 with songs in MP3 format. If I create a Playlist with auto tunes, how would I export this in MP3? I figure I can get them on an SD using some sort of reader. I've gone

  • MBP doesn't recognize FPD2185W Gateway Monitor

    I've had the previous model of the MBP and with the VGA adapter, it worked fine with the FPD2185W Gateway monitor. Now with the newest MBP, and with its new display port requiring having to buy a new adapter, the only thing I can do is mirror the dis

  • Can I type chinese on IPod-touch?

    I can't found out the type of keybord for chinese. Can I upgrade soft to use chinese keybord? or it doesn't work...