ORACLE9I可以在显示RAM内存使用情况的同时提供执行计划信息,要获得这方面的信息,你需要从V$SQL出发搜集合适的SQL语句的地址。举例来说,如果你有一个关于NEW_CUSTOMER表格运作方面的疑问时,你可以运行下面的代码来获得地址。
select
address
from
v$sql
where
sql_text like '%NEW_CUSTOMER';
88BB460C
1 row selected.
获得了地址以后,你可以将他插入下列脚本之中来获得执行计划的详细资料和SQL语句的PGA内存使用状况。
select
operation,
options,
object_name name,
trunc(bytes/1024/1024) "input(MB)",
trunc(last_memory_used/1024) last_mem,
trunc(estimated_optimal_size/1024) opt_mem,
trunc(estimated_onepass_size/1024) onepass_mem,
decode(optimal_executions, null, null,
optimal_executions||'/'||onepass_executions||'/'||
multipasses_exections) "O/1/M"
from
v$sql_plan p,
v$sql_workarea w
where
p.address=w.address(+)
and
p.hash_value=w.hash_value(+)
and
p.id=w.operation_id(+)
and
p.address='88BB460C';
下面是来自这个脚本的表单:
OPERATION OPTIONS NAME
input(MB)
LAST_MEM OPT_MEM ONEPASS_MEM O/1/M
------------ -------- ---- ---------
-------- ---------- ---------- ----
SELECT STATESORT GROUP
BY 4582 8 16
16 26/0/0HASH JOIN SEMI 4582 5976
5194 187 16/0/0TABLE ACCESS FULL ORDERS
51TABLE ACCESS FUL LINEITEM 1000
你可以在其中看到关于执行计划和特殊内存使用方面的细节,这是ORACLE9I的一个令人激动的进步,他使得DBA可以获得关于任何SQL语句内部执行过程的高度详细的资料。
责任编辑:超凡