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 pl/sql forall:如何计算表空间已满(1654)错误的实际插入行数
如何在oracle中查询某个表的占用了多大的空间!如果是sql语句请讲的详细子我是菜鸟!