暂无图片
优化大神看下 recursive calls问题吧 ,谢谢
我来答
分享
马老师r
2023-02-20
优化大神看下 recursive calls问题吧 ,谢谢


空表、小表查询非常慢,现2条数据查询超过10秒,且recursive calls 越执行越多



10:48:00 SQL> set autot trace
10:48:12 SQL> select * from SSJ_LHCC.F_ZJXZPPBBAK;

2 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 218475219

------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | TQ |IN-OUT| PQ Distrib |
------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 2 | 154 | 2 (0)| 00:00:01 | | | |
| 1 | PX COORDINATOR | | | | | | | | |
| 2 | PX SEND QC (RANDOM)| :TQ10000 | 2 | 154 | 2 (0)| 00:00:01 | Q1,00 | P->S | QC (RAND) |
| 3 | PX BLOCK ITERATOR | | 2 | 154 | 2 (0)| 00:00:01 | Q1,00 | PCWC | |
| 4 | TABLE ACCESS FULL| F_ZJXZPPBBAK | 2 | 154 | 2 (0)| 00:00:01 | Q1,00 | PCWP | |
------------------------------------------------------------------------------------------------------------------


Statistics
----------------------------------------------------------
5120 recursive calls
0 db block gets
13 consistent gets
0 physical reads
0 redo size
1062 bytes sent via SQL*Net to client
524 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
2 rows processed








09:42:15 SQL> select * from table(dbms_xplan.display_cursor('66pbp77fr414j',null,'advanced'));

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SQL_ID 66pbp77fr414j, child number 0
-------------------------------------
select * from SSJ_LHCC.F_ZJXZPPBBAK

Plan hash value: 218475219

------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | TQ |IN-OUT| PQ Distrib |
------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | | 2 (100)| | | | |
| 1 | PX COORDINATOR | | | | | | | | |
| 2 | PX SEND QC (RANDOM)| :TQ10000 | 2 | 154 | 2 (0)| 00:00:01 | Q1,00 | P->S | QC (RAND) |
| 3 | PX BLOCK ITERATOR | | 2 | 154 | 2 (0)| 00:00:01 | Q1,00 | PCWC | |
|* 4 | TABLE ACCESS FULL| F_ZJXZPPBBAK | 2 | 154 | 2 (0)| 00:00:01 | Q1,00 | PCWP | |
------------------------------------------------------------------------------------------------------------------

Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------

1 - SEL$1
4 - SEL$1 / F_ZJXZPPBBAK@SEL$1

Outline Data
-------------

/*+
BEGIN_OUTLINE_DATA
IGNORE_OPTIM_EMBEDDED_HINTS
OPTIMIZER_FEATURES_ENABLE('11.2.0.4')
DB_VERSION('11.2.0.4')
ALL_ROWS
OUTLINE_LEAF(@"SEL$1")
FULL(@"SEL$1" "F_ZJXZPPBBAK"@"SEL$1")
END_OUTLINE_DATA
*/

Predicate Information (identified by operation id):
---------------------------------------------------

4 - access(:Z>=:Z AND :Z<=:Z)

Column Projection Information (identified by operation id):
-----------------------------------------------------------

1 - "F_ZJXZPPBBAK"."RWID"[VARCHAR2,50], "F_ZJXZPPBBAK"."NBXH"[VARCHAR2,50],
"F_ZJXZPPBBAK"."JCJG"[VARCHAR2,10], "F_ZJXZPPBBAK"."ZJXZID"[VARCHAR2,25],
"F_ZJXZPPBBAK"."OPEN_TIME"[TIMESTAMP,11], "F_ZJXZPPBBAK"."BJW"[VARCHAR2,1]
2 - (#keys=0) "F_ZJXZPPBBAK"."RWID"[VARCHAR2,50], "F_ZJXZPPBBAK"."NBXH"[VARCHAR2,50],
"F_ZJXZPPBBAK"."JCJG"[VARCHAR2,10], "F_ZJXZPPBBAK"."ZJXZID"[VARCHAR2,25],
"F_ZJXZPPBBAK"."OPEN_TIME"[TIMESTAMP,11], "F_ZJXZPPBBAK"."BJW"[VARCHAR2,1]
3 - "F_ZJXZPPBBAK"."RWID"[VARCHAR2,50], "F_ZJXZPPBBAK"."NBXH"[VARCHAR2,50],
"F_ZJXZPPBBAK"."JCJG"[VARCHAR2,10], "F_ZJXZPPBBAK"."ZJXZID"[VARCHAR2,25],
"F_ZJXZPPBBAK"."OPEN_TIME"[TIMESTAMP,11], "F_ZJXZPPBBAK"."BJW"[VARCHAR2,1]
4 - "F_ZJXZPPBBAK"."RWID"[VARCHAR2,50], "F_ZJXZPPBBAK"."NBXH"[VARCHAR2,50],
"F_ZJXZPPBBAK"."JCJG"[VARCHAR2,10], "F_ZJXZPPBBAK"."ZJXZID"[VARCHAR2,25],
"F_ZJXZPPBBAK"."OPEN_TIME"[TIMESTAMP,11], "F_ZJXZPPBBAK"."BJW"[VARCHAR2,1]

SQL_ID 66pbp77fr414j, child number 1
-------------------------------------
select * from SSJ_LHCC.F_ZJXZPPBBAK

Plan hash value: 218475219

------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | TQ |IN-OUT| PQ Distrib |
------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | | 2 (100)| | | | |
| 1 | PX COORDINATOR | | | | | | | | |
| 2 | PX SEND QC (RANDOM)| :TQ10000 | 2 | 154 | 2 (0)| 00:00:01 | Q1,00 | P->S | QC (RAND) |
| 3 | PX BLOCK ITERATOR | | 2 | 154 | 2 (0)| 00:00:01 | Q1,00 | PCWC | |
|* 4 | TABLE ACCESS FULL| F_ZJXZPPBBAK | 2 | 154 | 2 (0)| 00:00:01 | Q1,00 | PCWP | |
------------------------------------------------------------------------------------------------------------------

Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------

1 - SEL$1
4 - SEL$1 / F_ZJXZPPBBAK@SEL$1

Outline Data
-------------

/*+
BEGIN_OUTLINE_DATA
IGNORE_OPTIM_EMBEDDED_HINTS
OPTIMIZER_FEATURES_ENABLE('11.2.0.4')
DB_VERSION('11.2.0.4')
ALL_ROWS
OUTLINE_LEAF(@"SEL$1")
FULL(@"SEL$1" "F_ZJXZPPBBAK"@"SEL$1")
END_OUTLINE_DATA
*/

Predicate Information (identified by operation id):
---------------------------------------------------

4 - access(:Z>=:Z AND :Z<=:Z)

Column Projection Information (identified by operation id):
-----------------------------------------------------------

1 - "F_ZJXZPPBBAK"."RWID"[VARCHAR2,50], "F_ZJXZPPBBAK"."NBXH"[VARCHAR2,50],
"F_ZJXZPPBBAK"."JCJG"[VARCHAR2,10], "F_ZJXZPPBBAK"."ZJXZID"[VARCHAR2,25],
"F_ZJXZPPBBAK"."OPEN_TIME"[TIMESTAMP,11], "F_ZJXZPPBBAK"."BJW"[VARCHAR2,1]
2 - (#keys=0) "F_ZJXZPPBBAK"."RWID"[VARCHAR2,50], "F_ZJXZPPBBAK"."NBXH"[VARCHAR2,50],
"F_ZJXZPPBBAK"."JCJG"[VARCHAR2,10], "F_ZJXZPPBBAK"."ZJXZID"[VARCHAR2,25],
"F_ZJXZPPBBAK"."OPEN_TIME"[TIMESTAMP,11], "F_ZJXZPPBBAK"."BJW"[VARCHAR2,1]
3 - "F_ZJXZPPBBAK"."RWID"[VARCHAR2,50], "F_ZJXZPPBBAK"."NBXH"[VARCHAR2,50],
"F_ZJXZPPBBAK"."JCJG"[VARCHAR2,10], "F_ZJXZPPBBAK"."ZJXZID"[VARCHAR2,25],
"F_ZJXZPPBBAK"."OPEN_TIME"[TIMESTAMP,11], "F_ZJXZPPBBAK"."BJW"[VARCHAR2,1]
4 - "F_ZJXZPPBBAK"."RWID"[VARCHAR2,50], "F_ZJXZPPBBAK"."NBXH"[VARCHAR2,50],
"F_ZJXZPPBBAK"."JCJG"[VARCHAR2,10], "F_ZJXZPPBBAK"."ZJXZID"[VARCHAR2,25],
"F_ZJXZPPBBAK"."OPEN_TIME"[TIMESTAMP,11], "F_ZJXZPPBBAK"."BJW"[VARCHAR2,1]


114 rows selected.

我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
刘贵宾

你的shared pool多大啊?当Shared Pool过小,data dictionary cache 也会相应的过小,没有足够的空间存储ORACLE的系统数据字典信息时,会发生Recursive calls,这些Recursive calls会将数据字典信息从硬盘读入内存中。

暂无图片 评论
暂无图片 有用 2
打赏 0
暂无图片
马老师r

--表结构

11:23:56 SQL> desc SSJ_LHCC.F_ZJXZPPBBAK
Name Null? Type
-------------------- -----------------
RWID NOT NULL VARCHAR2(50)
NBXH NOT NULL VARCHAR2(50)
JCJG NOT NULL VARCHAR2(10)
ZJXZID NOT NULL VARCHAR2(25)
OPEN_TIME NOT NULL TIMESTAMP(6)
BJW NOT NULL VARCHAR2(1)

--正常执行计划

11:33:14 SQL> select * from SSJ_LHCC.F_ZJXZPPB;

2 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 4198924619

-------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 2 | 168 | 5 (0)| 00:00:01 |
| 1 | TABLE ACCESS FULL| F_ZJXZPPB | 2 | 168 | 5 (0)| 00:00:01 |
-------------------------------------------------------------------------------


Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
12 consistent gets
0 physical reads
0 redo size
1084 bytes sent via SQL*Net to client
524 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
2 rows processed

暂无图片 评论
暂无图片 有用 0
打赏 0
马老师r

SQL> select
2 component,
CURRENT_SIZE/1024/1024/1024 CUR_GB, 3
4 granule_size/1024/1024/1024 GRANULE_GB,min_size/1024/1024/1024 MIN_GB,max_size/1024/1024/1024 MAX_GB,
5 LAST_OPER_TIME
6 from v$sga_dynamic_components;

COMPONENT CUR_GB GRANULE_GB MIN_GB MAX_GB LAST_OPER_TIME
------------------------------ ---------- ---------- ---------- ---------- -------------------
shared pool 42 .5 37 42 2022-12-31 11:00:17
large pool 2 .5 2 46 2022-12-06 15:51:48
java pool 3.5 .5 3.5 3.5
streams pool 1 .5 1 1
DEFAULT buffer cache 269.5 .5 226 274.5 2022-12-31 11:00:17
KEEP buffer cache 0 .5 0 0
RECYCLE buffer cache 0 .5 0 0
DEFAULT 2K buffer cache 0 .5 0 0
DEFAULT 4K buffer cache 0 .5 0 0
DEFAULT 8K buffer cache 0 .5 0 0
DEFAULT 16K buffer cache 0 .5 0 0
DEFAULT 32K buffer cache 0 .5 0 0
Shared IO Pool 0 .5 0 0
ASM Buffer Cache 0 .5 0 0

14 rows selected.

SQL> !free -h
total used free shared buffers cached
Mem: 1.5T 602G 911G 1.7G 838M 17G
-/+ buffers/cache: 583G 929G
Swap: 99G 0B 99G

SQL> show parameter sga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 320G
sga_target big integer 320G
SQL> 






这个大小  内存都够用

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
换服务器 之前oracle还原的有问题,有些视图和存储过程还有表的索性之类的有错误,现在找到了这些视图名称,怎么批量把sql拿来重新编译下?
回答 1
已采纳
如果你数据库里这些对象当前的sql都是正确的,直接批量编译无效对象就好了@$ORACLEHOME/rdbms/admin/utlrp.sql或者执行execdbmsutility.compilesch
Oracle 12.2 安装目录下 groovy.js 有什么作用?
回答 1
index。html里面用来做一些数据统计之类工作的吧
数据库挂了
回答 10
环境都不说下
硬解析会对数据库性能产生哪些影响?
回答 1
已采纳
‌1、增加CPU和内存资源的使用‌:硬解析过程中需要生成执行计划,这需要消耗大量的CPU资源和SGA中的内存资源。此外,硬解析过程中需要申请和使用闩,而在资源有限的情况下,大量的闩使用会导致进程等待,
oracle 19c 创建的job不执行,怎么办?
回答 3
是不是缺少相关权限?
每小时生成的awr报告,它生成在哪个路径下,怎么查看?
回答 3
每小时默认是生成一个snapshot,不是生成在本地。awr的数据同样是表的形式存在数据库中。需要手工执行@?/rdbms/admin/awrrpt。执行后在sqlplus的当前目录下生成html文件
mysql数据导入oracle , 表结构不一致怎么办?
回答 4
已采纳
oracle有很多方法可以查看表结构。如果你对sql不熟悉,建议使用PLSQLDeveloper软件或navicat连接到oracle数据库,编辑对应表的表结构即可。
有人遇到这个问题吗,数据库是12G本地oracle是11g?
回答 2
另外catalogstartwith‘/backup/’多加一个/
rdbms ipc message 这个事件可以kill吗?
回答 1
已采纳
首先你的问题是内存不足,然后你的思路是说找到内存占用最高的对象!&nbsp;然后kill&nbsp;进程!&nbsp;&nbsp;但是你的问题是问等待事件对应空闲的进程能否被kill,这个是完全不同的
Oracle中的锁定过程是怎样的?
回答 1
已采纳
由于锁是数据的一个属性,所以Oracle不需要传统的锁管理器。锁定过程如下:1)找到想锁定的那一行的地址;2)到达那一行;3)就地锁住这一行,就是在行的位置上,而非某个大列表(如果这一行已经被锁住,则
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~