如何获得oracle11g数据库中进程的RAM使用情况?

问题描述:

我想要测量oracle 11g数据库环境中的sql语句(例如简单的创建或插入语句)的RAM使用情况。如何获得oracle11g数据库中进程的RAM使用情况?

我试图通过使用dbms_space来获取它,但它似乎只是获取磁盘空间。

我也发现这个网站: http://www.dba-oracle.com/m_memory_usage_percent.htm

但声明

select 
* 
from 
v$sql 
where sql_text like {my table} 

不返回创建语句。

+0

在该页面的顶部有一个链接[查看用于在Oracle9i执行计划操作RAM(http://www.dba-oracle.com/m_memory_usage_percent.htm )。 – Ben

见上文评论:

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_executions) "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= (select address 
         from v$sql 
        where sql_text like '%my_table%') 
+0

不工作:ORA-01427,子查询返回多行。此外,我正在查找的创建和插入语句不在v $ sql中。 – Hauke

+0

哦,有一个错字multipasses_exections - > multipasses_executions – Hauke

+0

@Hauke,谢谢;错字固定。返回多于一行的子查询意味着v $ sql有多个列表,其中包含表名。你必须更具体。 – Ben