Tkprof the trace file
Hi,
i know the procedure to generate a tkprof for the trace file but i dont know wat are the things to be analysed and wat kind of action should be taken after analysing the trace file.Please say me the procedure about things to be analysed and action should be taken after analysing the contents from the trace file.
Regards
Aram
Pl also see MOS Doc 760786.1 (TKProf Interpretation (9i and above) )
HTH
Srini
Similar Messages
-
Any way to generate trace report from the TKPROF formatted trace file?
As titled.
Is there any automatically way to make a report on SQL tuning report from the TKPROF formatted trace file(or from the dynamic performance views)
PaulDave,
That's what report queries are for, take a look at shared components. Walk through the create report query wizard, and on the final page, you'll get a URL that you can use to integrate this with your page. You'll find the same URL when editing your report query afterwards.
Alternatively, suppose you already have you report page, but don't want to always go there, you can just copy that report region print link (reference my answer to your previous question), and make that the target of a branch or from another page.
Regards,
Marc -
Need information from the Trace file.
Hi
I have enabled the trace file for the query and found that the below contents in top of the query in trace file .Could you please explain what are the below values and need explanation.
**PARSING IN CURSOR #2 len=82 dep=1 uid=0 oct=3 lid=0 tim=52772641300291 hv=3873422482 ad='3a40cc8c8' sqlid='0k8522rmdzg4k'**
Note : Please provide the notes if have any.
Thanks
LioThis is of course right but TKPROF has also some limitations: for example TKPROF does not report values for bind variables but you can find them in raw trace file.
-
Miliseconds in the trace files
I'm using the tkprof tool to analyze a procedure, but in the time columns there appear only 0.00.
Is there a way to obtain milliseconds instead of 'centiseconds' in the trace files?As previously stated Oracle tkprof will show centiseconds, just to add more information. There are a few exceptions where Oracle gathers information with more time resolution, milliseconds.
SQL> desc v$system_event;
Name Null? Type
EVENT VARCHAR2(64)
TOTAL_WAITS NUMBER
TOTAL_TIMEOUTS NUMBER
TIME_WAITED NUMBER
AVERAGE_WAIT NUMBER
TIME_WAITED_MICRO NUMBER
EVENT_ID NUMBER
WAIT_CLASS_ID NUMBER
WAIT_CLASS# NUMBER
WAIT_CLASS VARCHAR2(64)As you can see from the TIME_WAITED_MICRO column above. This is valid from 9i -
How to find out the Trace file
Hi Dba's
I need to find out the trace file with the Request id. how can i find out it?
ThanksThere are many ways to create a trace file in the apps. Pl provide details on how you enabled trace, as that will determine where the trace file is created.Concurrent requests trace files are always created under USER_DUMP_DEST directory.
-
How to get the trace file name for current running application?
Hi, I want to know if it is possible to get the file name directly for current running application instance which is launched by javaws.
There is a property "deployment.user.logdir" tells the log directory, it would be great if a file name property
is available. something like "instance.trace.file".
Our application wants it because we would like our client send use the application log by clicking a "send error"
button, the codes finds the trace file and compress it and send it by using a smtp server.
In 1.5, we can do it by using a shell program.I found other asked it before, but I tried to set both properties, but neither works. my sun JRE version :java version "1.6.0_04"
<property
name="deployment.javaws.traceFileName"
value="abcfefsfdsf"/>
<property
name="deployment.javapi.trace.filename"
value="235235235"/>
But it always write to one trace file with name lik javaws63645.trace -
I am not able to see the trace files for SQL query
Hello, I am using windows vista OS.
SQL> select * from v$version;
BANNER
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Prod
PL/SQL Release 10.2.0.3.0 - Production
CORE 10.2.0.3.0 Production
TNS for 32-bit Windows: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production
SQL>
I enabled the trace as below
alter system set timed_statistics=TRUE
alter system set sql_trace=TRUE
After this, I ran sql query from scott as below.
select count(*) from emp;
After this, i checked in user dump directory. The trace files are generating... But this sql code is not appearing in the trace files...
Am i missing anything... Any help is appreciated.
ThanksThis may happen when the trace file is not completely closed.You may try again doing like this,
alter session set sql_trace=true;
select * from emp;
alter session set sql_trace=false;After this,disconnect and exit from your session as well. This should close the file completely and you should be able to see your command in it.
HTH
Aman.... -
Any simple way to get the trace file
One user want the trace file i went to bdump dir.
any way to fine that trace file from there.Re: dbms_session and sql_trace
ALTER SESSION SET TRACEFILE_IDENTIFIER= will help you identify the file name.
Search is a wonderful help in this forum. -
How to stop the generation of the trace files relate to the particular user
Dear All,
Please advice:
Is it possible to stop the trace file created by a user for a particular job (sql/exp)
For example :
Trace files create whenever the user run the sql/exp command from his application server.
This will created a huge files and caused the file system getting full (not in bdump but it is generation in application user home directory).
Is there any method to stop the generation of the trace files relate to the particular user base on that job.
thanks,
ShanojDear SHANOJ
This trigger will created for that specific user by dba or person who have sysdba privs. it will triggered at the login time of that user and alter the sqltrace.
for example we have write one trigger in our database for every ddl operation in database.
CREATE OR REPLACE TRIGGER "SYS"."SYS$DDLTRIG" after DDL on database
declare
v_machinename VARCHAR2(100);
v_osuser VARCHAR2(100);
v_dbuser VARCHAR2(100);
v_host VARCHAR2(100);
v_program VARCHAR2(100);
v_instance VARCHAR2(100);
v_date VARCHAR2(100);
begin
select to_char(sysdate, 'mm-dd-yyyy HH24:MI:SS'),user,sys_context('userenv','OS_
USER'),sys_context('userenv','HOST'), (select instance_name from v$instance),(se
lect program from v$session where sid = (select distinct sid from v$mystat)),(se
lect machine from v$session where sid = (select distinct sid from v$mystat)) int
o v_date,v_dbuser,v_osuser,v_host,v_instance,v_program,v_machinename from dual;
IF ora_sysevent = 'DROP' or ora_sysevent = 'REVOKE' or ora_sysevent = 'GRANT' or
ora_sysevent = 'CREATE' or ora_sysevent = 'TRUNCATE' or ora_sysevent = 'ALTER'
Then
insert into ddl_log_new(v_date,v_dbuser,v_osuser,v_host,v_instance,v_program,v_m
achinename,V_EVENT,V_OBJECT_NAME,V_OBJECT_TYPE,V_OBJECT_OWNER) values (v_date,v_
dbuser,v_osuser,v_host,v_instance,v_program,v_machinename,ora_sysevent,ora_dict_
obj_name,ora_dict_obj_type,ora_dict_obj_owner);
END IF;
END;
i hope above example will helpful for u,
Regards
Ambrish
Edited by: ambrishr24 on Dec 5, 2012 5:02 PM
Edited by: ambrishr24 on Dec 5, 2012 5:05 PM
Edited by: ambrishr24 on Dec 5, 2012 5:20 PM -
Why backup controlfile to trace doesn't produce the trace file in udump?
Hi there,
I recently redirected some of the data files on different drives. I started nomount with pfile and created new controlfile with the new datafile locations. I was able to open db and saw the new location of the db files. But when I trace the controlfile, I didn't see the trace file on the udump. Could anybody explain why?also, when I did the show parameter I got the following results:
SQL> show parameter spfile
NAME TYPE VALUE
spfile string
SQL> show parameter pfile
NAME TYPE VALUE
spfile string
I did startup the db with pfile and open it with resetlogs. I created spfile from pfile. Why I'm not seeing the location of the pfile or spfile? Could you please help me understand this? -
Read the results shown in the trace files
Hi,
I have a question,
In oracle 10g or 11g, How can I interpret the results shown in the trace files?
ok I explain more ... when I enable the trace sql session , a trace file is created under user dump!
What 's the meaning of :
*1- PARSING IN CURSOR*
*2- tim= is it in Microseconds? Timestamp ? How can I convert it in seconds?*
*3- STAT*
*4- CLOSE*
*5- hv=*
*6- tim=*
*7- lid=*
*8-dep=*
PARSING IN CURSOR #2 len=104 dep=0 uid=0 oct=2 lid=0 tim=13651992547 hv=3760112805 ad='284c0e6c' sqlid='6shmgvbh1xj55'
INSERT INTO employee(ID,NAME,department_id, DEPARTMENT_SUB_ID) VALUES(10002, 'employee', 12, 0)
END OF STMT
PARSE #2:c=93750,e=102539,p=24,cr=471,cu=0,mis=1,r=0,dep=0,og=1,plh=0,tim=13651992547
EXEC #2:c=0,e=0,p=5,cr=1,cu=7,mis=0,r=1,dep=0,og=1,plh=0,tim=13651992547
STAT #2 id=1 cnt=0 pid=0 pos=1 obj=0 op='LOAD TABLE CONVENTIONAL (cr=1 pr=5 pw=0 time=0 us)'
CLOSE #2:c=0,e=0,dep=0,type=0,tim=13652013059Thnak you a lot guys,
Smith794130 wrote:
Thank you,
Sorry, I am new in Oracle and I want to get things really clear (something that is diifficult I think)
When an end user submit a query, one user process communicates the query to a server process.
The server process analyse the syntax and the symentic of the query, this known as the parse process.
The syntax of the query and the tables, columns are verified against the database buffer cache.
One PGA is allocated to store the query.
The server process read from the datafile and gets the results and store it into the shared pool.
The result is then back to the user process and then to the end user
Is it correct ?
Thank you all,
SSome of the above concepts are close. There is a nice description in the Oracle Database Concepts guide of what happens during the processing of a SQL statement (see the stages listed in the documentation):
http://download.oracle.com/docs/cd/B19306_01/server.102/b14220/sqlplsql.htm#sthref3460
It is probably a good idea to distinguish between a hard parse, a soft parse, and a session cursor cache hit:
http://download.oracle.com/docs/cd/B19306_01/server.102/b14211/glossary.htm#sthref1591
The database buffer cache is not used to verify the validity of SQL statements, but instead as a means to reduce the number of disk accesses that are required to return a query result to a client computer.
One or more pieces of PGA memory may be used simultaneously while processing a SQL statement. I have a couple of blog articles that show multiple PGA memory allocations in use at the same time.
The server process may not need to access a physical data file to return the query results to a client computer, depending of course on the current contents of the buffer cache.
I recommend that you wait a while before trying to work with 10046 trace files. Right now the contents are probably providing too much detail for you, although I definitely recommend that you return to working with 10046 trace files at a later time. A good starting point is either the free Database Concepts Guide:
http://download.oracle.com/docs/cd/B19306_01/server.102/b14220.pdf
or Tom Kyte's "Expert Oracle Database Architecture: Oracle Database Programming 9i, 10g, and 11g Techniques and Solutions, Second Edition" book. You can read my review of that book on Amazon's website:
http://www.amazon.com/Expert-Oracle-Database-Architecture-Programming/dp/1430229462/ref=dp_ob_title_bk
Charles Hooper
Co-author of "Expert Oracle Practices: Oracle Database Administration from the Oak Table"
http://hoopercharles.wordpress.com/
IT Manager/Oracle DBA
K&M Machine-Fabricating, Inc. -
Getting timestamps for SQL session without the trace file enabled
hi, i have a clarification. Is there a method or way by which i can get the timestamps of an SQL session without the the trace file enabled , and if so please get me the details of this.
thanks in advance.Hi,
Don't very understand what do you want.
SQL> set timing on
SQL> select * from dual;
D
X
Elapsed: 00:00:01.07
SQL> Is this ?
Nicolas. -
Does someone know the meaning of the NTTCNR and the NTTVLSER codes in the
trace file from the Oracle server????
Below is an example of the mentioned codes in the trace:
nttcnr: entry
nttcnr: waiting to accept a connection.
nttvlser: entry
nttvlser: valid node check on incoming node 10.20.30.201
nttvlser: Accepted Entry: 10.20.30.201
nttcnr: exit
nullHi,
I am new in sap i would like to mare about ST01 in deatil .
Regards
Pallav -
How to get the real table information of a structure from the trace file?
I user the ST05 to trace a program to find the real table information of a structure in this program. But I found so many sql trace information in the trace file. So how can I find which information is useful for me to find the real table of a structure?
Hi!
If you don't recognize some tables, because they belong to same application, then it's difficult.
Try to change interesting value. Afterwards you can search for 'INSERT', 'UPDATE' (and 'MODIFY'?) - that will leave only a small number of lines, which have to be analyzed in detail (e.g. have a look at them with SE16).
Regards,
Christian -
Dbms_monitor.session_trace_enable does not generate the trace file
hi All,
i'm trying the example from Tom Kyte's <<expert oracle database architecture>>, after runnning the java code using dbms_monitor.session_trace_enable, the trace file for the session can't be found in user_dump_dest, could anyone help explain. oracle version is 10.2.0.1.0 on RHEL 5. thanks.
[oracle@CS-RHEL chapter09]$ cat perftest.java
import java.sql.*;
import oracle.jdbc.OracleDriver;
import java.util.Date;
public class perftest
public static void main (String arr[]) throws Exception
DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
Connection con = DriverManager.getConnection
("jdbc:oracle:thin:@127.0.0.1:1522:cs10g",
"sid", "sid");
Integer iters = new Integer(arr[0]);
Integer commitCnt = new Integer(arr[1]);
con.setAutoCommit(false);
doInserts( con, 1, 1 );
Statement stmt = con.createStatement ();
stmt.execute
( "begin dbms_monitor.session_trace_enable(waits=>TRUE); end;" );
doInserts( con, iters.intValue(), commitCnt.intValue() );
doInserts( con, iters.intValue(), iters.intValue() );
con.commit();
con.close();
static void doInserts(Connection con, int count, int commitCount )
throws Exception
PreparedStatement ps =
con.prepareStatement
("insert into test " +
"(id, code, descr, insert_user, insert_date)"
+ " values (?,?,?, user, sysdate)");
PreparedStatement commit =
con.prepareStatement
("begin /* commit size = " + commitCount + " */ commit; end;" );
int rowcnt = 0;
int committed = 0;
long start = new Date().getTime();
for (int i = 0; i < count; i++ )
ps.setInt(1,i);
ps.setString(2,"PS - code" + i);
ps.setString(3,"PS - desc" + i);
ps.executeUpdate();
rowcnt++;
if ( rowcnt == commitCount )
commit.executeUpdate();
rowcnt = 0;
committed++;
con.commit();
long end = new Date().getTime();
System.out.println
("pstatement " + count + " times in " +
(end - start) + " milli seconds committed = "+committed);
}run the java class
[oracle@CS-RHEL chapter09]$ java -cp .:./ojdbc14.jar perftest 1000 1
pstatement 1 times in 5 milli seconds committed = 1
pstatement 1000 times in 2255 milli seconds committed = 1000
pstatement 1000 times in 509 milli seconds committed = 1hi virendra.k and Kecskemethy,
thanks for your help. believe i find the arnswer.
1. i used shared server connection. i can find the trace info in the backgroup_dump_dest, in the files: cs10g_s000_17467.trc and cs10g_s001_17469.trc
Ref:http://www.dbspecialists.com/files/presentations/tracing_ind_sessions.html
First, rather than using DBMS_MONITOR.CLIENT_ID_TRACE_ENABLE, we use DBMS_MONITOR.SESSION_TRACE_ENABLE. This can be run either by the session itself,
or by another session (specifying the SID of the session to be traced). The tracing output will be in the instance’s background_dump_dest directory,
rather than the user_dump_dest. And then you use trcsess with the session_id option, where session ID is actually the SID.SERIAL# of the session
(from v$session). Again you get a consolidated trace file containing just the activity of the desired session.2. after change to dedicated server, the trace file is generated in user_dump_dest now.
sid@CS10G> show parameter trace_enable
NAME TYPE VALUE
trace_enabled boolean TRUE
sid@CS10G> show parameter shared_servers
NAME TYPE VALUE
max_shared_servers integer
shared_servers integer 10
sid@CS10G> alter system set shared_servers=0
2 ;
System altered.
[oracle@CS-RHEL udump]$ pwd
/home/u02/app/oracle/product/11.1.0/db_1/admin/cs10g/udump
[oracle@CS-RHEL udump]$ tail -25 cs10g_ora_22313.trc
WAIT #8: nam='SQL*Net message to client' ela= 2 driver id=1952673792 #bytes=1 p3=0 obj#=-1 tim=1220152901405248
WAIT #8: nam='SQL*Net message from client' ela= 151 driver id=1952673792 #bytes=1 p3=0 obj#=-1 tim=1220152901405433
=====================
PARSING IN CURSOR #9 len=43 dep=0 uid=61 oct=47 lid=61 tim=1220152901405586 hv=1042574845 ad='3ace843c'
begin /* commit size = 1000 */ commit; end;
END OF STMT
PARSE #9:c=0,e=99,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,tim=1220152901405582
=====================
PARSING IN CURSOR #10 len=6 dep=1 uid=61 oct=44 lid=61 tim=1220152901405781 hv=255718823 ad='0'
COMMIT
END OF STMT
PARSE #10:c=0,e=13,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=0,tim=1220152901405776
XCTEND rlbk=0, rd_only=0
EXEC #10:c=0,e=146,p=0,cr=0,cu=1,mis=0,r=0,dep=1,og=0,tim=1220152901406000
EXEC #9:c=999,e=396,p=0,cr=0,cu=1,mis=0,r=1,dep=0,og=1,tim=1220152901406082
WAIT #9: nam='log file sync' ela= 3234 buffer#=5459 p2=0 p3=0 obj#=-1 tim=1220152901409385
WAIT #9: nam='SQL*Net message to client' ela= 2 driver id=1952673792 #bytes=1 p3=0 obj#=-1 tim=1220152901409450
WAIT #9: nam='SQL*Net message from client' ela= 142 driver id=1952673792 #bytes=1 p3=0 obj#=-1 tim=1220152901409633
XCTEND rlbk=0, rd_only=1
WAIT #0: nam='SQL*Net message to client' ela= 1 driver id=1952673792 #bytes=1 p3=0 obj#=-1 tim=1220152901409735
WAIT #0: nam='SQL*Net message from client' ela= 283 driver id=1952673792 #bytes=1 p3=0 obj#=-1 tim=1220152901410043
XCTEND rlbk=0, rd_only=1
WAIT #0: nam='SQL*Net message to client' ela= 2 driver id=1952673792 #bytes=1 p3=0 obj#=-1 tim=1220152901410146
WAIT #0: nam='SQL*Net message from client' ela= 316 driver id=1952673792 #bytes=1 p3=0 obj#=-1 tim=1220152901410489
XCTEND rlbk=0, rd_only=1
Maybe you are looking for
-
CUPS broken after 10.4.11 update
The 10.4.11 ppc combo updater broke the CUPS installation on my system (iMac G5, 10.4.8). I did repair permissions, tried to reinstall the printers with Printer Setup Utility, used Printer Setup Repair. http://www.fixamacsoftware.com/software/psr Tha
-
I have an older MacBook Pro (2007) and my screen went blank (gray). I have tried restarting the computer and I also went through the AHT trouble shooting that was recommended on the Support site. I havent had any luck with getting anything
-
[SOLVED] Gnome doesn't apply the theme to new opened windows
Hi, I'm using Gnome as desktop environment, but encountered a really annoying issue . I want to change the theme and therefore do the following "Right click on desktop -> "Change desktop background" -> Theme -> "Darklooks". All opened windows (as wel
-
Hi all I am using oracle 9i, is it possible to create foreign key that referenced by more than one table, for example if I have such field I want the value for this field be referenced by values exist in either Table X or Table Y. Message was edited
-
Preventing computer from going to sleep
Our main production software (IQue 5.5) is screwed up if the computer goes to sleep. We put in an order for 10 mac minis running mavericks and then the new mini got announced the very next day and there is no stock left on the old machines and we we