My immediate answer was :
- Login to database with the same user.
- Get Execution plan.
- Watch TempSpc column in execution plan.
Client called me back and said "there is not TempSpc column in execution plan."(By the way client runs latest 10g version (10.2.0.3)).
There are basically two reasons that TempSpc may not appear in execution plan.
Reason 1 : SQL statement does not need temporary tablespace and dedicated memory (PGA) is enough to run all operations
Reason 2 : Plan table is old and has not any column to keep Temp space usage.
To update plan, run the followings :
- drop table plan_table
- @$ORACLE_HOME/rdbms/admin/utlxplan.sql
(If you are using sqltrace for getting execution plan, you need to run @$ORACLE_HOME/sqlplus/admin/plustrce.sql as sys and then grant PLUSTRACE to the user)
Here is an example to demostrate TempSpc column in exeuction plan.
Execution plan for select * from dba_tables which has not any TempSpc columns because all operation can fit in existing memory.
![Estimate TEMP usage without running SQL [转]](http://img.e-com-net.com/image/product/9432c7b8b4b74c8f9a9f199669e4208a.jpg)
Execution plan for select * from dba_tables order by table_name which TempSpc column appears since sorting needs more space than existing PGA.
![Estimate TEMP usage without running SQL [转]](http://img.e-com-net.com/image/product/c342f25983154a25858c0f3548eb6906.jpg)