SQL Trace to detect SET NOCOUNT OFF
I have inherited an application that has a 9000+ stored procedures. In a previous upgrade, the publisher added "SET NOCOUNT ON" to many of the procedures, but apparently not all. I am trying to determine which procedures don't have
this and may need to be fixed. Can SQL trace or profiling detect activity from a proc that is running with SET NOCOUNT OFF - ? Or is there another approach to detect this activity?
If this is not the correct forum, please kindly redirect me.
Thanks
tgoddard
So I don't think you could filter the SPs only having NOCOUNT OFF in profiler. Probably what you could do is a combination of the trace and the above query.
First you could use the trace to capture all the activities of the server, and parse all the stored procedure names them using a T-SQL (use the SP_STARTING OR SP_COMPLETED events and the ObjectName in the output columns while starting the trace)
You can later load the trace using the sql statement
SELECT
objectname
FROM fn_trace_gettable('D:\TrC1.trc', 10)
where OBJECTNAME is not null
Now use the above query to filter out the SPs that are having NOCOUNT OFF and join it with the trace output using the object name and you can get the SPs that are getting executed in the system and have NOCOUNT OFF.
Select OBJECT_ID, OBJECT_NAME(object_id) From sys.objects where type= 'P' and object_id not in (
Select object_id From sys.sql_modules where definition like '%SET NOCOUNT%')
Does this help you?
Satheesh
My Blog | How to ask questions in technical forum
Similar Messages
-
I have 2 servers connected over a low speed wan and we're running SQL Server 2008 with Merge replication.
At the subscriber, sometimes when attempting to insert new rows, I get this error:
A trigger returned a resultset and/or was running with SET NOCOUNT OFF while another outstanding result set was active.
My database doesn't have any triggers; the only triggers are the one created by the Merge replication
Also, whenever this error occurs it automatically rolls back the existing transaction
I am using DataTables and TableAdapters to
insert and update the database using transactions
What I have checked:
the database log file size is below 50Mb
Checked the source code for Zombie transactions (since I wasn't able to retrieve the actual error at the beginning)
Checked the connection between the two servers and found it congested
Questions:
How to avoid this behavior and why it's occurring at first place?
Why it's cancelling the open transaction?did the issue happen on some specific tables or all the tables?
I suggest to run sql server trace at publisher and subscriber when the issue happens. Please involve below events and columns
Stored Procedures
RPC:Completed
RPC:Starting
sp:Completed
sp:Starting
sp:StmtStarting
sp:StmtCompleted
TSQL
SQL:StmtCompleted
SQL:StmtStarting
SQL:BatchCompleted
SQL:BatchStarting
Unprepare SQL
‘Errors and Warnings’
ErrorLog
EventLog
Exceptoin
attention
columns:
TextData ,error, LoginName, ApplicationName , StartTime ,EndTime,DatabaseName,NestLevel,ObjectName,ObjectType,ServerName,eventsequence,linenumber,cpu,reads ,writes,rowcounts,clientprocessid,spid,transactionid
Once the issue happens, please check the trace to find which step or statement hit the error. -
Using SQLCMD need to SET NOCOUNT OFF for Sql Server Parallel Data warehouse (PDW) V2
Using SQLCMD to copy data to a flat file that is imported into Oracle using SQL Loader.
At the bottom of the files created by SQLCMD there’s a blank row (ALL NULLs) and then there’s a row that shows the total number of rows, e.g., (12571 rows affected).
SQL Loader allows us to remove headers (SKIP = 2), but it does not allow us to skip trailing records. Using the WHEN TABLE_ID != BLANKS command I can remove the blank row above the count marker, but SQLLDR still tries to load the count marker into the first
column, which fails the import.
When using SET NOCOUNT in the PDW I receive the error ‘NoCount is not a recognized option’.
Any suggestions on how to get around this and remove the trailing count?Hi Waldropj,
Thank you for your question. I am trying to involve someone more familiar with this topic for a further look at this issue. Sometime delay might be expected from the job transferring. Your patience is greatly appreciated.
Thank you for your understanding and support.
If you have any feedback on our support, please click
here.
Elvis Long
TechNet Community Support -
Hi,
Is there a way to trace a user settings in the portal EP6 Sp2 Patch 40, I need to know where a settings is stored in the oracle database of the portal. The reason I am asking is, i want to activate the accessibility feature for all user and i just want to activate it for all user at once. Then they can turn it off if they want, but by default it will be on.
Thanks
Jean SeguinHi,
Just activate and launch the SQL Trace and try setting this accessibility setting for user from Portal. In your SQL Trace, you will see into which DB Table the settings are saved.
http://help.sap.com/saphelp_nw70/helpdata/en/17/358df9c9fee2469105731e10756921/frameset.htm
Greetings,
Praveen Gudapati
[Points are welcome for helpful answers] -
Get ID from database, launching a query from code and set NOCOUNT clause
Hello,
I need to extract some id from some table in mydatabase. I launching query from code.
I would like to know if it is correct what I do
SET NOCOUNT ON
SELECT ID FROM tblID
SET NOCOUNT OFF
it is right to set nocount on at the beginning and if you need to reset it in the end.
Many thanks
www.Photoballot.netWhen SET NOCOUNT is ON, the count is not returned. When SET NOCOUNT is OFF, the count is returned.
SET NOCOUNT ON prevents the sending of DONE_IN_PROC messages to the client for each statement in a stored procedure. For stored procedures that contain several statements that do not return much actual data, or for procedures that contain Transact-SQL loops,
setting SET NOCOUNT to ON can provide a significant performance boost, because network traffic is greatly reduced.
It won't have any major impact in your case however like they say its good to have it.
To read more about see -
http://msdn.microsoft.com/en-us/library/ms189837.aspx
If this post answers your query, please click "Mark As Answer" or "Vote as Helpful". -
제품 : ORACLE SERVER
작성날짜 : 2002-05-07
PURPOSE
Client에서 SQL trace를 뜨는 방법
EXPLANATION
오라클을 사용하는 tool 에서 sql trace 를 사용하고자 하면
alter session set sql_trace=true ; 를 사용한다.
또는 dbms_session.set_sql_trace (true) 사용한다.
이는 forms 를 비롯하여 precompiler 를 포함한다.
또 이의 반대는
alter session set sql_trace= false ; 를 사용한다.
또는 dbms_session.set_sql_trace (false) 사용한다.
이 때 실행된 결과는 user_dump_dest 에 쌓이는데 , file 이름은 process 번호를
참고한다.
그러나 MTS 의 경우 trace file 의 구분이 모호해지므로 client를 connect 시
dedicate 로 붙여 trace 를 사용하여야 하며, 만일 다른 session 에서 다른
session의 것을 trace 뜨고 싶으면,
dbms_system.set_sql_trace_in_session 을 사용할 수 있다.
EXAMPLE
이의 사용법은 다음과 같다.
1. Setup
catproc.sql 에서 생성되는 package 와는 달리 dbms_system 의
public synonym 은 생성되지 않고 권한도 부여되지 않는다.
DB 생성 초기에 SYS user 만 reference 할 수 있으므로 이 package 를
사용할 user에게 권한을 부여한다.
예제 : GRANT EXECUTE ON DBMS_SYSTEM to username;
2. v$session 으로부터 SID 와 serial 번호를 부여한다.
SQL> select sid, serial#, osuser, username
2> from v$session;
SID SERIAL# OSUSER USERNAME
7 66 <osLogin> <oracleUserName>
3. 원하는 session 에서 SQL trace 를 setting 한다.
exec sys.dbms_system.set_sql_trace_in_session
(12,16631,TRUE);
또는 pl/sql procedure 에서:
begin
sys.dbms_session.set_sql_trace ((<sid>,<serial>,TRUE);
end
4. session 에서 SQL Trace 를 끝마친다. 이 결과는 user_dump_dest에
쌓인다.
exec sys.dbms_system.set_sql_trace_in_session
(<sid>,<serial>,FALSE);
또는 pl/sql procedure 에서
begin
sys.dbms_session.set_sql_trace (<sid>,<serial>,FALSE);
end
만일 os user 가 khpark 인 client 에서 실행하는 sql 의 trace 를 뜨고
싶으면
svrmgrl> select sid,serial#,osuser from v$session
where osuser='KHPARK';
sid serial# osuser
=================================================
8 12 khpark
svrmgr>execute dbms_system.set_sql_trace_in_session (8,12,TRUE);
이렇게 하면 udump 에 trace file 이 생기므로 이를 이용하여 tkprof 를 수행한다.
REFERENCE DOCUMENT
---------------------Hello Carl,
SQL Trace and SQL Profiler are deprecated since SQL Server 2012 which means that at any future version it might not be available anymore. Have you considered using Extended Events - Microsoft.SqlServer.Management.XEvent
Namespace?
Ivan Donev MCT and MCSE Data Platform
I've spent a fair bit of time reading about XEvents - eventually I won't need SQL 2008 support anymore and I can stop using Trace - but I'm not seeing anything remotely close to TraceServer. What I see is an elaborate infrastructure for efficiently
collecting information about high volume OLTP workloads with minimal server impact. That's all well and good, but of no use to me at all. What I'm looking for is real-time information about OLAP database processing that I can embed in my app to
provide detailed metrics on same.
Presumably something can be put together using XEvents as the source and ETW as the target, with real-time monitoring of ETW events, but that's a lot of API to get a handle on, and I haven't seen any helpful samples that show putting it all together to get
a profiler-like experience with live viewing of processing events as they happen.
Any pointers to helpful samples/resources on XEvents are appreciated - long term, that's going to be my path, I'm sure.
-cd Mark the best replies as answers! -
SPOOLing in sql developer does not take into consideration SET ECHO OFF
I'm running SQL Developer 3.1.07.42 on Windows 7 64 bit with java 1.7
I have the following very simple script just to show the problem:
SET ECHO OFF;
SET FEEDBACK OFF;
SET SERVEROUTPUT ON;
SET VERIFY OFF;
SET PAGES 0;
SET HEAD OFF;
SPOOL c:\test.sql
SELECT 1, 2, 3 FROM DUAL;
SPOOL OFF;
/if I run it in TOAD 10.6.0.42 it creates the file with
1 2 3This is as expected (by me)
if I run the exact same query in SQL Developer 3.1.07.42 , it creates the file with:
< SELECT 1, 2, 3 FROM DUAL
1 2 3(the < above is actually ">" but the CODE formatting software is screwing ">")
but I don't want the ECHOed command to be spooled. For the life of me, I cannot find a way to disable the ECHO from spooling in sql developer.
Tried the same in 3.0.4 and 2.1.1 with the same (bad) result (plus some warning on some of the unsupported SET commands).
Am I missing something obvious? Cause like this, the spool command cannot be used in sql developer to generate a CSV file for example, because of the echoed command. And windows doesn't come with SED by default so that is out. (plus that my original script is integrated into a much larger and complex set of scripts and the main script using them is executed from SQL Developer as a company policy (so that everybody uses the same tool and the code runs the same for everybody))
Any ideas/suggestions are welcome
Thanks.Hi Gary, you seem to have some extensive knowledge. I'd like to follow-up on this thread and try to understand why SQL Developer won't hide the code even though I'm already running the code as a Worksheet (I assume you mean Run Script F5 button in SQL Developer).
I generally develop in SQL Developer that does a lot of dbms_output to echo data using a Spool command. When I'm in SQL Developer I can't get the code NOT to spool, it typically is echoed directly in the spool file at the top followed by the dbms_output data. If I save the sql file and run in in sqlplus it only outputs the data (good). If I use @C:\xyz_script.sql and hit F5 in SQL Developer it only outputs the data (per your previous answer) -- good.
So why can't I hit F5 in SQL Developer in the script file and have it only output the data? It just doesn't work no matter how many "SETs" you turn-off.
Looks like Echo, Term, Feed are supported in SQL Developer, maybe supported means something other than work.
http://www.oracle.com/technetwork/developer-tools/sql-developer/sql-worksheet-commands-097146.html -
Can I set up SQL Trace or Audit to connect to servers
I have a server (2003) with SQL (2005) on it.
If i install MS SQL Management Studio 2012 on my PC, can I audit what SQL on that server is doing by connecting to it from the PC ?
Or would it be better to set up SQL Trace on the server itself ?
Thanks
PeteSo if I install SSMS 2012 on my PC, I can connect to the databases on different servers from 1 place.
Yes, as long as there is network connection. In SSMS open up the Registered Servers window and register all servers:
http://technet.microsoft.com/en-us/library/ms188231.aspx
Related thread:
http://social.msdn.microsoft.com/forums/sqlserver/en-US/8209ad2c-6efd-49d6-9605-b7f348eb56bb/how-to-connect-sql-database-on-different-network
Setting up server-side tracing:
http://www.sqlusa.com/bestpractices/createtrace/
Kalman Toth Database & OLAP Architect
SQL Server 2014 Design & Programming
New Book / Kindle: Exam 70-461 Bootcamp: Querying Microsoft SQL Server 2012 -
How to set SQL trace in OCI session ?
Hello,
In a SQL*Plus session, I can use the SQL statement "alter session set sql_trace=true;" to set SQL trace in that session only. I assume I could execute the same SQL statement from C code in an OCI client and achieve the same goal.
However, if I cannot change the code of this OCI client, is there a way to set SQL trace for that single session alone, without changing the C code? Say, through an environment variable, configuration file, etc.?
Thanks.I am not aware of a way to selectively enable the server-side tracing without modifying the client code.
There is client tracing available by setting the environment variable EVENT_10842 as follows:
"server=<>;user=<>;stmt=<>;level=<>;interval=<>"
e.g.
setenv EVENT_10842 "server=inst1,inst2;user=scott,system;stmt=all;level=15"
Where:
"server" is a comma separated list or "all"
"user" is a comma separated list or "all"
"stmt" can be INSERT,UPDATE,DELETE,SELECT or "all"
The following levels are supported:
1 - Trace all server attach and server detach calls for servers listed in "server" attribute of the environment variable.
2 - Trace all session begin, logon, session end, logoff calls for the users listed in "user" attribute of the environment variable.
3 - Trace all prepare, execute, fetch calls for the specified statement types listed in "stmt" attribute of environment variable.
4 - Trace all Bind, Define, Describe calls.
5 - Trace all OCI LOB calls
7 - Get statistical info on all connection pooling /connection related calls
8 - Get statistical info on all session info
9 - Get statistical info on all handle info
10 - Get statistical info on time taken in execute and fetch calls
11 - Get statistical info on transaction related calls
15 - Trace all calls with statistical info. -
Ability to perform ALTER SESSION SET SQL TRACE but not all alter clauses
I see that in order to run the ALTER SESSION SET SQL TRACE command, the user should be explicitly granted alter session privilege as the CREATE SESSION privilege alone is not enough. Is there a way to grant the ability to perform ALTER SESSION SET SQL TRACE but not the other clauses such as GUARD, PARALLEL & RESUMABLE?.
Thanks
SathyaIf you are using Oracle 10g and above, you can use DBMS_SESSION.session_trace_enable procedure,
it doesn't require alter session system privilege.
Simple example:
SQL> connect test/test@//192.168.1.2:1521/xe
Connected.
SQL> alter session set tracefile_identifier='my_id';
Session altered.
SQL> alter session set sql_trace = true
2 ;
alter session set sql_trace = true
ERROR at line 1:
ORA-01031: insufficient privileges
SQL> execute dbms_session.session_trace_enable;
PL/SQL procedure successfully completed.
SQL> select * from user_sys_privs;
USERNAME PRIVILEGE ADM
TEST CREATE PROCEDURE NO
TEST CREATE TABLE NO
TEST CREATE SEQUENCE NO
TEST CREATE TRIGGER NO
TEST SELECT ANY DICTIONARY NO
TEST CREATE SYNONYM NO
TEST UNLIMITED TABLESPACE NO
7 rows selected.
SQL> execute dbms_session.session_trace_disable;
PL/SQL procedure successfully completed.
SQL> disconnect
Disconnected from Oracle Database 10g Release 10.2.0.1.0 - Productionand here is result from tkprof:
TKPROF: Release 10.2.0.1.0 - Production on So Paź 23 00:53:07 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Trace file: xe_ora_176_my_id.trc
( ---- cut ---- )
select *
from
user_sys_privs
call count cpu elapsed disk query current rows
Parse 1 0.08 0.08 0 0 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 2 0.01 0.01 0 15 0 7
total 4 0.09 0.09 0 15 0 7
Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: 61
Rows Row Source Operation
7 HASH GROUP BY (cr=15 pr=0 pw=0 time=11494 us)
7 CONCATENATION (cr=15 pr=0 pw=0 time=4913 us)
0 MERGE JOIN CARTESIAN (cr=4 pr=0 pw=0 time=1169 us)
0 NESTED LOOPS (cr=4 pr=0 pw=0 time=793 us)
0 TABLE ACCESS FULL SYSAUTH$ (cr=4 pr=0 pw=0 time=592 us)
0 INDEX RANGE SCAN I_SYSTEM_PRIVILEGE_MAP (cr=0 pr=0 pw=0 time=0 us)(object id 312)
0 BUFFER SORT (cr=0 pr=0 pw=0 time=0 us)
0 TABLE ACCESS FULL USER$ (cr=0 pr=0 pw=0 time=0 us)
7 NESTED LOOPS (cr=11 pr=0 pw=0 time=3429 us)
9 HASH JOIN (cr=9 pr=0 pw=0 time=2705 us)
9 TABLE ACCESS FULL SYSAUTH$ (cr=4 pr=0 pw=0 time=512 us)
63 TABLE ACCESS FULL USER$ (cr=5 pr=0 pw=0 time=914 us)
7 INDEX RANGE SCAN I_SYSTEM_PRIVILEGE_MAP (cr=2 pr=0 pw=0 time=510 us)(object id 312)
Elapsed times include waiting on following events:
Event waited on Times Max. Wait Total Waited
---------------------------------------- Waited ---------- ------------
SQL*Net message to client 2 0.00 0.00
SQL*Net message from client 2 20.64 20.65
BEGIN dbms_session.session_trace_disable; END;
call count cpu elapsed disk query current rows
Parse 1 0.01 0.00 0 0 0 0
Execute 1 0.00 0.00 0 0 0 1
Fetch 0 0.00 0.00 0 0 0 0
total 2 0.01 0.00 0 0 0 1
Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: 61 -
SQL Server set ansi_null_default off
Hi All
Can someone tell me the difference between having the ANSI_NULL_DEFAULT [ON/OFF]
Ive written code below and the both create nullable columns so im very confused?
thanks
alter database CloseMonitoring
set ansi_null_default off
create table tbl_compare_off
[id] int
alter database CloseMonitoring
set ansi_null_default on
create table tbl_compare_on
[id] intThis is what MSDN says
When SET ANSI_NULLS is ON, a SELECT statement that uses WHERE column_name = NULL returns zero rows even if there are null values in column_name.
A SELECT statement that uses WHERE column_name <> NULL returns zero rows even if there are nonnull values in column_name.
When SET ANSI_NULLS is OFF, the Equals (=) and Not Equal To (<>) comparison operators do not follow the ISO standard. A SELECT statement that uses WHEREcolumn_name = NULL returns
the rows that have null values in column_name. A SELECT statement that uses WHERE column_name <> NULL returns
the rows that have nonnull values in the column. Also, a SELECT statement that uses WHERE column_name <> XYZ_value returns all rows that are not XYZ_value and
that are not NULL.
http://technet.microsoft.com/en-us/library/ms188048.aspx
Also SET ANSI_NULL OFF is a deprecated feature.
Important
In a future version of SQL Server, ANSI_NULLS will always be ON and any applications that explicitly set the option to OFF will generate an error. Avoid using this feature in new development work,
and plan to modify applications that currently use this feature.
Satheesh
My Blog -
What is SQL Trace and How to Use it .
Dear Experts .
1.) May You Please tell me What is the Purpose of SQL-Trace and How to use it ?
2.) What is purpose of T-codes SE30 and ST22 ?
Please it is urgent ...
Regards : RajneeshHi
SQL Trace transaction ST05: The trace list has many lines that are not related to the SELECT statement in the ABAP program. This is because the execution of any ABAP program requires additional administrative SQL calls. To restrict the list output, use the filter introducing the trace list.
The trace list contains different SQL statements simultaneously related to the one SELECT statement in the ABAP program. This is because the R/3 Database Interface - a sophisticated component of the R/3 Application Server - maps every Open SQL statement to one or a series of physical database calls and brings it to execution. This mapping, crucial to R/3s performance, depends on the particular call and database system. For example, the SELECT-ENDSELECT loop on a particular database table of the ABAP program would be mapped to a sequence PREPARE-OPEN-FETCH of physical calls in an Oracle environment.
The WHERE clause in the trace list's SQL statement is different from the WHERE clause in the ABAP statement. This is because in an R/3 system, a client is a self-contained unit with separate master records and its own set of table data (in commercial, organizational, and technical terms). With ABAP, every Open SQL statement automatically executes within the correct client environment. For this reason, a condition with the actual client code is added to every WHERE clause if a client field is a component of the searched table.
To see a statement's execution plan, just position the cursor on the PREPARE statement and choose Explain SQL. A detailed explanation of the execution plan depends on the database system in use.
Run time analysis transaction SE30 :This transaction gives all the analysis of an ABAP program with respect to the database and the non-database processing.
STEPS
Run time analysis transaction SE30
In Transaction SE30, fill in the transaction name or the program name which needs to be analyzed for performance tuning.
For our case, let this be ZABAP_PERF_TUNING
After giving the required inputs to the program, execute it. After the final output list has been displayed, PRESS the BACK button.
On the original SE30 screen, now click on ANALYZE button.
The percentage across each of the areas ABAP/ Database/System shows the percentage of total time used for those areas and load on these areas while running the program . The lesser the database load faster the program runs.
SQL Trace ST05
Starting the Trace:
To analyze a trace file, do the following:
Choose the menu path Test Performance Trace in the ABAP Workbench or go to Transaction ST05. The initial screen of the test tool appears. In the lower part of the screen, the status of the Performance Trace is displayed. This provides you with information as to whether any of the Performance Traces are switched on and the users for which they are enabled. It also tells you which user has switched the trace on.
Using the selection buttons provided, set which trace functions you wish to have switched on (SWL trace, enqueue trace, RFC trace, table buffer trace).
If you want to switch on the trace under your user name, choose Trace on. If you want to pass on values for one or several filter criteria, choose Trace with Filter.
Typical filter criteria are: the name of the user, transaction name, process name, and program name.
Now run the program to be analyzed.
Stopping the Trace:
To deactivate the trace:
Choose Test Performance Trace in the ABAP Workbench. The initial screen of the test tool appears. It contains a status line displaying the traces that are active, the users for whom they are active, and the user who activated them.
Select the trace functions that you want to switch off.
Choose Deactivate Trace. If you started the trace yourself, you can now switch it off immediately. If the performance trace was started by a different user, a confirmation prompt appears before deactivation-
Analyzing a Sample trace data: PREPARE: Prepares the OPEN statement for use and determines the access method.
OPEN: Opens the cursor and specifies the selection result by filling the selection fields with concrete values.
FETCH: Moves the cursor through the dataset created by the OPEN operation. The array size displayed beside the fetch data means that the system can transfer a maximum package size of 392 records at one time into the buffered area. -
OCCI/ODBC application sql trace failure...
Hi,
I was doing the sql*net trace for an OCCI/ODBC Application writen in c++. I have an InstantClient on my PC. I was trying to access the Oracle through my C++ program to
compare the performance of OCCI and ODBC.
I was using the Oracle 10g(ver10.2.0.1.0 ), Oracle instant cilent(win32-10.2.0.3-20061115), and VS 8.0.
TNSNAMES.ora:
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = host_name)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
(SID = ORCL)
LISTENER.ORA:(It was created by net manager.)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = F:\oracle\product\10.1.0\Db_3)
(SID_NAME = ORCL)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = HOST_NAME)(PORT = 1521))
The sqlnet.ora file was writen to trace the client sql. Fortunately, my C++ program can access the oracle and get my result back successfully. In the same time, the trace files
can be created, but when using the tkprof tool to explain it, it comes to the file with useless information.
One of the *.trc file explaind by tkprof tool:
Sort options: default
count = number of times OCI procedure was executed
cpu = cpu time in seconds executing
elapsed = elapsed time in seconds executing
disk = number of physical reads of buffers from disk
query = number of buffers gotten for consistent read
current = number of buffers gotten in current mode (usually for update)
rows = number of rows processed by the fetch or execute call
Trace file: ora21763.trc
Trace file compatibility: 8.00.04
Sort options: default
1 session in tracefile.
0 user SQL statements in trace file.
0 internal SQL statements in trace file.
0 SQL statements in trace file.
0 unique SQL statements in trace file.
327 lines in trace file.
Finally, I got TNS-12518 TNS-12564 error. I tried to add DIRECT_HANDOFF_TTC_LISTENER=OFF, but it didnt work. I traced the listener, the error occured in the listener.trc "
ntt2err: soc 464 error " and " nsbequeath: error reading REDIR/NSE msg".
I just cann't get the right trace file and cann't sovle the two errors(TNS-12518 TNS-12564). Can somebody give me some advices, please.Hi,
The TKPROF facility accepts as input an SQL trace file generated when SQL Trace has been turned on for the system or a session, not a SQL*NET trace file. A SQL*Net trace file is a dump of raw data packets and communications at the SQL*NET layer. If you want to get performance statistics from SQL beign executed by your application, then you need to turn on SQL Trace not SQL*MET tracing.
To enable SQL trace at the system level, you need to execute:
alter system set SQL_TRACE=TRUE
The NS-12518 TNS-12564 normally means you are running into some sort of resource deletion issue. This can be caused by various things. Make sure you are properly cleaning up and closing sessions in your application.
Are you performing some sort of stress test or have you just written a Multi-threaded test harness that executes different types of SQL with OCCI/ODBC?
HTH
J.B. -
No insert Statements for EKKO EKPO in ST05 sql trace for transaction me21n
No insert Statements for EKKO EKPO in ST05 sql trace for transaction me21n.
IN ST05 I set a filter for ME21N and executed transaction to create a Purchase Order and then checked
ST05 but there is NO insert for EKKO or EKPO??
How Do I find in which columns of EKKO and EKPO data is inserted in ST05?
Edited by: DeepakNandikanti on Apr 28, 2010 8:27 AMHi,
I tried in my system and I can see INSERT statement on EKKO and EKPO tables. What exactly you are looking for? Some one else might have switched on the trace at the same time. Can you try again and see.
ST05=>Switch on trace
ME21N=>Create PO.
ST05=>Switch off and display trace.
In trace list search for EKKO and EKPO.
Column names are not shown in the trace list. It is the SQL trace and column list is generated dynamically like :A0, :A1....
@ Suhas,
That might be because the tables are updated via BAPIs ... Do you think SAP uses direct update statements on the DB tables ??
I didn't get above statement. Is there any other way of updation that happens when using BAPI? I believe that, even in case of BAPI there will be update task FMs called during database update. Please correct if i got it wrong.
Thanks,
Vinod. -
1.How can we change the language setting while uploading BDC?
2.How can we add a push button to the ALV report?
3. What is SQL Trace, how would you carried out performance analysis of ABAP code Using SQL Trace? Give the steps?Hi
SQL Trace transaction ST05: The trace list has many lines that are not related to the SELECT statement in the ABAP program. This is because the execution of any ABAP program requires additional administrative SQL calls. To restrict the list output, use the filter introducing the trace list.
The trace list contains different SQL statements simultaneously related to the one SELECT statement in the ABAP program. This is because the R/3 Database Interface - a sophisticated component of the R/3 Application Server - maps every Open SQL statement to one or a series of physical database calls and brings it to execution. This mapping, crucial to R/3s performance, depends on the particular call and database system. For example, the SELECT-ENDSELECT loop on a particular database table of the ABAP program would be mapped to a sequence PREPARE-OPEN-FETCH of physical calls in an Oracle environment.
The WHERE clause in the trace list's SQL statement is different from the WHERE clause in the ABAP statement. This is because in an R/3 system, a client is a self-contained unit with separate master records and its own set of table data (in commercial, organizational, and technical terms). With ABAP, every Open SQL statement automatically executes within the correct client environment. For this reason, a condition with the actual client code is added to every WHERE clause if a client field is a component of the searched table.
To see a statement's execution plan, just position the cursor on the PREPARE statement and choose Explain SQL. A detailed explanation of the execution plan depends on the database system in use.
SQL Trace ST05
Starting the Trace:
To analyze a trace file, do the following:
Choose the menu path Test  Performance Trace in the ABAP Workbench or go to Transaction ST05. The initial screen of the test tool appears. In the lower part of the screen, the status of the Performance Trace is displayed. This provides you with information as to whether any of the Performance Traces are switched on and the users for which they are enabled. It also tells you which user has switched the trace on.
Using the selection buttons provided, set which trace functions you wish to have switched on (SWL trace, enqueue trace, RFC trace, table buffer trace).
If you want to switch on the trace under your user name, choose Trace on. If you want to pass on values for one or several filter criteria, choose Trace with Filter. Typical filter criteria are: the name of the user, transaction name, process name, and program name.
Now run the program to be analyzed.
Stopping the Trace:
To deactivate the trace:
Choose Test Performance Trace in the ABAP Workbench. The initial screen of the test tool appears. It contains a status line displaying the traces that are active, the users for whom they are active, and the user who activated them.
Select the trace functions that you want to switch off.
Choose Deactivate Trace. If you started the trace yourself, you can now switch it off immediately. If the performance trace was started by a different user, a confirmation prompt appears before deactivation-
Analyzing a Sample trace data:
PREPARE: Prepares the OPEN statement for use and determines the access method.
OPEN: Opens the cursor and specifies the selection result by filling the selection fields with concrete values.
FETCH: Moves the cursor through the dataset created by the OPEN operation. The array size displayed beside the fetch data means that the system can transfer a maximum package size of 392 records at one time into the buffered area.
Maybe you are looking for
-
A guy was selling this Mac used so I got it. The only thing was after he had cleaned the hardrive he had put it in his name again, and sold it like that. I later figured this out and reset the hardrive and, what I thought, put it back to factory sett
-
New serial numbers in SAP for new equipment
Hi Experts, I recently ordered new machines & receipted machines prior to creating serial numbers. The serial numbers created are not showing as being in new stock location XXXX. Later, unreceipted the PO & tried to create serial numbers first before
-
Connecting to IPCC DB (db_cra) using Business Objects
Hi, I've been tasked with creating a Business Objects universe against a CISCO IPCC SQL Server database (db_cra), and I have no knowledge of the database and how the system works. I also don't have access to the database outside of Crystal Reports.
-
Picture colour = background colour
How can i change the background colour to the most frequent colour of a picture? for example i load a picture of a red flower (taking the size of the photo, therefore the red is the main picture colour) through XML, and the background changes to red,
-
im looking to have my albums in one place and my singles in the other. so when I click my music there should be my albums and my singles. can I do this