当前位置: 首页 > 工具软件 > Elapse > 使用案例 >

关于trace文件中的recursive calls , elapse time及cpu time,

申炳
2023-12-01

Recursive Calls. Number of recursive calls generated at both the user and system level. Oracle Database maintains tables used for internal processing. When it needs to change these tables, Oracle Database generates an internal SQL statement, which in turn generates a recursive call.
In short, recursive calls are basically SQL performed on behalf of your SQL. So, if you had to parse the query, for example, you might have had to run some other queries to get data dictionary information. These would be recursive calls. Space management, security checks, calling PL/SQL from SQL—all incur recursive SQL calls

根据oracle的定义及常见的导致recursive calls 的情景,总结了一下,不知是否准确:  

执行一条SQL语句时,产生的对其他SQL的调用,这些额外的语句称之为''recursive calls''或''recursive SQL statements''.
1. Parse - 硬解析时会出现更多的 recursive calls,软解析可以避免recursive calls.
2. Security checks - 访问权限相关的数据字典表
3. Firing of database triggers - 触发DB触发器
4. Handle constraint - Enforcement of referential integrity constraints,引用完整性约束  
5. 数据字典记录了所有对象的结构、数据信息,在对象结构、数据发生变化时都会访问数据字典
6. Space management - 没有足够的空间时,Oracle 通过Recursive Call访问数据字典来动态的分配空间。
7. 执行DDL语句时,ORACLE总是隐含的发出一些recursive SQL语句,来修改数据字典信息,以便成功执行该语句。
8. 当Shared Pool过小,data dictionary cache 也会相应的过小,没有足够的空间存储ORACLE的系统数据字典信息时,
    会发生 Recursive calls,这些Recursive calls会将数据字典信息从硬盘读入内存中。
9. 存储过程、包、触发器,函数或匿名PL/SQL块内如果有SQL调用的话,也会产生recursive SQL。
10. Calling PL/SQL from SQL - 从SQL中调用PL/SQL

第9 , 10 理解起来比较纠结, 比如  select  max(column_name) from  tab1 where col2=xxx ;   做了一下trace ,  首次执行
会出现一次 recursive calls ,  第二次执行就是 0 了。  procedure 或 packages 中肯定有SQL调用, 非SQL部分都是一些游标
处理,计算等, 称为NON-RECURSIEVE CALLS ,   目前我们在运行一个packages时,发现 NON-RECURSIEVE CALLS 及 RECURSIEVE CALLS
消耗的时间都比较高, 而且发现所有的运行所花的时间(一个一个相加) 不等于后面的 TOTAL NON-RECURSIEVE CALLS 及
TOTAL RECURSIEVE CALLS 的和 (虽然比较接近)。 不知道这些时间如何计算的 ?  听Oracle顾问说trace中时间有一定误差
是存在的 , 现在可以通过另外一个工具来替代trace .   

trace文件中 Elapsed times include waiting on following events: 部分的时间消耗和 cpu time, elapsed 是什么关系 , 如何计算 ?




来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-741855/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/35489/viewspace-741855/

 类似资料: