Oracle:如何找出函数表使用了多少空间(在 RAM 上)?

Posted

技术标签:

【中文标题】Oracle:如何找出函数表使用了多少空间(在 RAM 上)?【英文标题】:Oracle: how to find out how much space (on RAM) is used by a function table? 【发布时间】:2021-11-23 11:56:00 【问题描述】:

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

提前致谢!

【问题讨论】:

"function table" 是一个奇怪的用法。您是指 PL/SQL 集合还是嵌套表?还是您的意思是流水线功能? 我的意思是 PL/SQL 集合。 【参考方案1】:

您的会话 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

【讨论】:

以上是关于Oracle:如何找出函数表使用了多少空间(在 RAM 上)?的主要内容,如果未能解决你的问题,请参考以下文章

oracle 查询出 表的空间大小 占用存储空间

Oracle pl/sql forall:如何计算表空间已满(1654)错误的实际插入行数

如何查看oracle中某个用户占用表空间大小情况

如何在oracle中查询某个表的占用了多大的空间!如果是sql语句请讲的详细子我是菜鸟!

oracle数据库表空间占用太大,如何在不删除表的情况下缩小占用空间

oracle临时表空间使用率达到多少记录使用临时表空间语句