Oracle:如何找出函数 table 使用了多少 space(在 RAM 上)?

Oracle: how to find out how much space (on RAM) is used by a function table?

我正在考虑实现一个功能 table。由于 table 可能有大约 100 000 个结果集,我想知道它的内存使用情况(在 RAM 上)。我可以(如果可能)与 toad 或 pl/sql 开发人员核实为我的结果集分配了多少内存吗?

提前致谢!

您的会话 PGA 保存数据,因此您可以查询您的会话统计信息以查看消耗了多少,例如

SQL> select s.name, st.value
  2  from   v$statname s, v$mystat st
  3  where st.statistic# = s.statistic#
  4  and s.name like '%pga%';

NAME                                                                  VALUE
---------------------------------------------------------------- ----------
session pga memory                                                  5025416
session pga memory max                                              5025416

SQL> declare
  2    type t is table of char(1000) index by pls_integer;
  3    r t;
  4  begin
  5    for i in 1 .. 10000
  6    loop
  7      r(i) := rpad('x',1000);
  8    end loop;
  9  end;
 10  /

PL/SQL procedure successfully completed.

SQL> select s.name, st.value
  2  from   v$statname s, v$mystat st
  3  where st.statistic# = s.statistic#
  4  and s.name like '%pga%';

NAME                                                                  VALUE
---------------------------------------------------------------- ----------
session pga memory                                                  4370056
session pga memory max                                             16297608