A 10046 trace is a text file and holds more than timings: the text of each SQL statement with the values written in it, server and application names, paths and, if you turn them on, bind values. This page lists what goes into the file, what WaitScope keeps, what it deletes and what to check before uploading.
What the trace contains
| Data | Where it is in the trace | In the report |
|---|---|---|
| File path on the server | Header, Trace file line | File on server, in the Summary |
| Database version, instance and server name | Header: Oracle Database, Instance name, Node name | Session and environment, in the Summary |
| Session and process | *** SESSION ID and Unix process pid | Session and environment |
| Service, module, action and client_id | *** SERVICE NAME, *** MODULE NAME, *** ACTION NAME and *** CLIENT ID | Session and environment |
| Text of each SQL statement, with its literals | Between PARSING IN CURSOR and END OF STMT | Statement lists and statement detail, with the literal mask |
| Bind values | BINDS blocks, only with binds turned on: level 4 or 12, or binds => true | They do not appear: WaitScope ignores these lines |
| Object IDs and names | obj# in the waits; obj= and the name in the operation of the STAT lines | Plan and Objects with the most wait time |
| ORA errors | ERROR and PARSE ERROR lines | Errors section |
A deadlock trace also contains, for each session involved, the database user, the machine, the program, the module, the action, the SQL and the row waited for, with its rowid, plus a dump of the process state. The report shows what it reads from these parts in the Deadlocks section.
What WaitScope keeps
- The result of the analysis: timings, counts, the text of each statement as it is in the trace (in a statement that adds up variants, the text with
:sand:nand the literals of the variants that cost the most), the header names, the object names and the parts of the deadlock that the report shows. - The name of the uploaded file: it becomes the name of the analysis in History and the report title, including in the downloaded HTML.
- The size and number of lines of the file.
The result is kept for the retention period, and only your account sees your analyses: no other user, not even the console administrator (retention and privacy). Bind values do not go into the result.
What is deleted
- The trace is removed from the server as soon as the analysis finishes, whether it succeeded or failed. There is no trace download and no reprocessing: to analyze it again, upload the file again.
- A partial upload is deleted when you cancel it, after 24 hours without a new chunk, or when the session that made the upload ends, in the browser or in the app.
- The analysis is deleted when the retention period expires, or earlier, when you delete it.
What to check before uploading
- Generate it without binds. Use level 8 of 10046 or
binds => falsein DBMS_MONITOR. If the file already hasBINDSblocks, WaitScope does not use them, but they travel in the file until the analysis finishes and the trace is deleted. - Rename the file. The name becomes the report title and appears in History and in the app notification. Remove customer, system or personal names from it:
zz-lote-noturno.trcworks. - Check the literal mask. It is on by default and is in My account, in the Report privacy panel; your name at the top of the console opens the page.
- Keep the header in mind. The server name, instance, service, module, action, client_id and file path appear in the report as they are: the mask applies only to the SQL text.
Literal mask
The mask replaces with *** the quoted text and every number used as a value in the SQL, including in GROUP BY, where the number is a value and not a column position. Only the position number in ORDER BY, as in order by 2, stays as it is. It applies to everything you see: the page, the downloaded HTML and JSON, the API and the app. The stored analysis keeps the original text, and unchecking the options shows the SQL as it came in the trace.
In a statement that adds up variants, the text already shows :s and :n in place of the literals. The mask hides the literals in the Variants that cost the most table and also the SQL ID of each variant, which would lead back to the text with the values.
Hints /*+ */, names in double quotes and binds, such as :1, stay as they are. Inside a comment, quoted text and numbers also become ***. The details are in hidden literals.
Where to go next
- To generate the trace without binds: turn on tracing with DBMS_MONITOR or 10046 levels.
- For the retention period and isolation between accounts: retention and privacy.
- To upload: upload from the browser.