cbhp=0x7f5227960e50 siz=10376 inu=10008 nps=8768
在cursor frame dump部分我们可以看见kxsc开始的一些信息,这些意味着Kernel eXECUTION Shared Cursor,其中的每一行的siz参数告诉我们当前分配的私有内存大小。当然,我们需要汇总所有的siz,这个值就是此游标的memory usage。 下面是我的一些猜测汇总: 01.Heap description Meaning 02.kxscphp Cursor permanent heap. Allocated when cursor is opened 03.kxscdfhp Cursor default heap - default duration allocations 04.kxscehp Cursor ephemeral heap - short lived duration allocations 05.kxscwhp Cursor Work heap - used when actually executing the cursor (workareas etc) 06.kxscbhp Cursor Bind heap - this is where bind variable values and their metadata are kept.
四、实验代码
1、创建表和PL/SQL函数
create
table dh_t (id
number(2,1),
name varchar2(200));
create
or replace
procedure p_dh1
as
v_id
number :=1234335;
v_name varchar2(200) :='oradh';
begin
--just
for errorstack test
insert
into dh_t
values (v_id,v_name);
commit;
end;
/
create
or replace
procedure p_dh2
as
v_cnt
number;
begin
----just
for errorstack test
select
count(*)
into v_cnt
from dh_t;
dbms_output.put_line('the dh_t count is '||v_cnt);
p_dh1;
end;
/
2、进行errorstack跟踪
SQL*Plus: Release 11.2.0.1.0 Production
on Tue Jul 1 11:15:52 2014
Copyright (
c) 1982, 2009, Oracle.
All rights reserved.
Connected
to:
Oracle
Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Oracle Label
Security, OLAP,
Data Mining,
Oracle
Database Vault
and
Real Application Testing
options
SQL>
set linesize 200 pagesize 999
SQL> col tracefile format a100
SQL>
select spid,tracefile
from v$process a
where addr=(
select paddr
from v$
session
where sid=(
select sid
from v$mystat
where rownum=1));
SPID TRACEFILE
--------------- --------------------------------------------------------------------------------------------------
10848 /u01/oracle/diag/rdbms/cn100/cn100/trace/cn100_ora_10848.trc
SQL>
alter
session
set events='1438 trace name errorstack forever,level 3';
Session altered.
SQL>
exec p_dh2;
BEGIN p_dh2;
END;
*
ERROR
at line 1:
ORA-01438:
value larger
than specified
precision allowed
for this
column
ORA-06512:
at "DBMON.P_DH1", line 6
ORA-06512:
at "DBMON.P_DH2", line 7
ORA-06512:
at line 1
[oracle@192oracle ~]$ ls -ltr /u01/oracle/diag/rdbms/cn100/cn100/trace/cn100_ora_10848.trc
-rw-r----- 1 oracle oinstall 12190347 Jul 1 11:16 /u01/oracle/diag/rdbms/cn100/cn100/trace/cn100_ora_10848.trc
|