Showing posts with label DB Tools. Show all posts
Showing posts with label DB Tools. Show all posts

Wednesday, 30 November 2011

How to execute TKPROF on trace files larger than 2GB ? --> Use pipe

Here is a nice trick to work with files larger than 2GB on Unix/Linux using pipe.
First case - TKPROF
When trying to execute TKPROF on a trace file larger than 2 GB I got this error:
[udump]$ ll test_ora_21769.trc
-rw-r-----  1 oratest dba 2736108204 Jun 23 11:04 test_ora_21769.trc
[udump]$ tkprof test_ora_21769.trc test_ora_21769.out
TKPROF: Release 9.2.0.6.0 - Production on Thu Jun 23 21:05:10 2008
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
could not open trace file test_ora_21769.trc
In order to successfully execute TKPROF on this trace file you can use the mkfifo command to create named pipe as follow:
  • Open a new unix/linux session (1st), change directory where the trace file exists and execute:
[udump]$ mkfifo mytracepipe
[udump]$ tkprof mytracepipe test_ora_21769.out

TKPROF: Release 9.2.0.6.0 - Production on Thu Jun 23 21:07:35 2008

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

  • Open another session (2nd), change directory where the trace file exists and execute:
[udump]$ cat test_ora_21769.trc > mytracepipe
This way you'll successfully get the output file.

Second case - spool
Similar issue with spool to file larger than 2GB can be treat similarly.
$ mkfifo myspoolpipe.out
--> Create new named pipe called 'myspoolpipe.out'
$ dd if=myspoolpipe.out of=aviad.out &
--> What you read from 'myspoolpipe.out' write to 'aviad.out'
$ sqlplus user/pwd@dbname
SQL*Plus: Release 9.2.0.6.0 - Production on Tue Jun 24 12:05:37 2008
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.6.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.6.0 - Production

SQL> spool myspoolpipe.out
--> Spool to the pipe
SQL> select .....
SQL> spool off SQL> 5225309+294082 records in
5367174+1 records out

SQL> exit Disconnected from Oracle9i Enterprise Edition Release 9.2.0.6.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.6.0 - Production

[1]+  Done                    dd if=myspoolpipe.out of=aviad.out

$ ls -ltr
prw-r--r--  1 oratest dba          0 Jun 24 12:22 myspoolpipe.out
-rw-r--r--  1 oratest dba 2747993487 Jun 24 12:22 aviad.out

Related Notes:
Note 62427.1 - 2Gb or Not 2Gb - File limits in Oracle
Note 94486.1 - How to Create a SQL*Plus Spool File Larger Than 2 GB on UNIX