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.
Execution plan for select * from dba_tables order by table_name which TempSpc column appears since sorting needs more space than existing PGA.
1 comment:
Thank you for your answer.
Will this work on Oracle version 12.1.0.2.0 - 64bit Production as well??
Post a Comment