当前位置:首页 » 编程语言 » oraclesql慢

oraclesql慢

发布时间: 2023-09-02 03:27:54

❶ oracle数据库运行sql很卡很慢很顿,看等待事件都是cursor:pin s on x,这是啥

详解cursor: pin S wait on X等待事件
‘cursor: pin * events’等待事件
该类等待事件一般是为了pin相关的子游标
‘Cursor: pin S on X’ 最常见的等待事件, 进程为了共享操作例如执行pin游标而以SHRD S mode申请mutex, 但是未立即获得。原因是该游标被其他进程以EXCL X mode 持有了。
实际该 cursor: pin S wait on X等待事件往往是由于其他因素诱发的。Mutex争用仅仅是问题的症状,但根本原因需要Database Consultant 进一步挖掘。

下面我们列出一些已知的常见案例, 在这些例子中可以看到 我上面提到的 Mutex的争用仅仅是伪争用:

过多的子游标 High Version Counts

过多的子游标版本Version Count可能导致Mutex 争用,一般一个SQL的Version Count不要高于500。
检查High Version Count很简单, 在AWR里就有SQL ordered by High Version Count,也可以写SQL查V$SQL、V$SQLAREA

昂贵的X$、V$视图查询

一些对于V$、X$视图的查询,需要访问X$KGL*之类的fixed table,可能触发Mutex争用。

Mutex持有者得不到CPU

Mutex持有者若得不到足够的CPU片可能一直阻塞他人,直到它拿到需要的CPU。
这种情况可能由于OS操作系统的实际情况或者使用Resource Manager而引起。需要配合AWR中的Host CPU、Instance CPu一起看。

已经被KILLED的SESSION仍持有Mutex

当session正持有Mutex,而其对应的Process被强制KILL掉, 则直到PMON彻底清理掉该Dead Process并释放Mutex,其他session才能不再等待。 诊断该类问题,最好能检查PMON的TRACE。 当然也存在部分BUG会导致PMON清理过程非常慢。
举例来说,bug 9312879描述了一种场景:PMON 需要获得某个Mutex以便清理某个dead process,但是该Mutex又被其他进程持有,则PMON甚至无法开始真正清理并释放Mutex。

如果自己搞不定可以找ASKMACLEAN专业ORACLE优化团队成员帮您搞定!

❷ oracle数据库执行sql很慢怎么回事

由于经常执行sql语句,如果一条一条执行效率低下。
oarclecmd.commandtext
=
sqlstr;
oraclecmd.executenonquery();
sqlstr
可以写成如下所示语句
begin
sql1;
sql2;
......
sqln;
end;
//注意此处的分号很重要
然后同样调用executenonquery()方法,可以一次执行多条sql语句。

❸ oracle 查询的sql语句特别慢,是什么原因,是or特别慢吗,用什么优化,急急急!!!

把查询计划的内容发出来,你这一大堆代码谁能看出来啥啊。看你的代码这么长,条件那么多,语句用了函数,很多低效的or,not in等操作,另外还用了group by,order by,左右连接等等,如果表数据量很大的话,你这个语句性能不好是预料中的事情。如果你这条语句无法优化,建议从调整表结构角度考虑

❹ oracle sql 查询我使用自已写的函数查询很快,加了函数做条件就很慢是为什么

慢是因为
对于 几十万条记录左右,
你那个 test(a) 函数, 需要执行 很多次, 每行执行一次, 然后判断 LIKE '%123%'

至于:
select a,b, test(a) c from demo; --只这样查很快

我估计你使用的是 PLSQL Developer。
查询的时候, 默认是查询第一页, 因此很快。
因为只显示少部分行。
例如一页20行的话, 那么也就执行你那个函数 20次。

❺ oracle数据库运行sql很卡很慢很顿,看等待事件都是cursor:pin s on x,这是啥

详解cursor: pin S wait on X等待事件 ‘cursor: pin * events’等待事件 该类等待事件一般是为了pin相关的子游标 ‘Cursor: pin S on X’ 最常见的等待事件, 进程为了共享操作例如执行pin游标而以SHRD S mode申请mutex, 但是未立即获得。原因是该游标被其他进程以EXCL X mode 持有了。 实际该 cursor: pin S wait on X等待事件往往是由于其他因素诱发的。Mutex争用仅仅是问题的症状,但根本原因需要Database Consultant 进一步挖掘。 下面我们列出一些已知的常见案例, 在这些例子中可以看到 我上面提到的 Mutex的争用仅仅是伪争用: 过多的子游标 High Version Counts 过多的子游标版本Version Count可能导致Mutex 争用,一般一个SQL的Version Count不要高于500。 检查High Version Count很简单, 在AWR里就有SQL ordered by High Version Count,也可以写SQL查V$SQL、V$SQLAREA 昂贵的X$、V$视图查询 一些对于V$、X$视图的查询,需要访问X$KGL*之类的fixed table,可能触发Mutex争用。 Mutex持有者得不到CPU Mutex持有者若得不到足够的CPU片可能一直阻塞他人,直到它拿到需要的CPU。 这种情况可能由于OS操作系统的实际情况或者使用Resource Manager而引起。需要配合AWR中的Host CPU、Instance CPu一起看。 已经被KILLED的SESSION仍持有Mutex 当session正持有Mutex,而其对应的Process被强制KILL掉, 则直到PMON彻底清理掉该Dead Process并释放Mutex,其他session才能不再等待。 诊断该类问题,最好能检查PMON的TRACE。 当然也存在部分BUG会导致PMON清理过程非常慢。 举例来说,bug 9312879描述了一种场景:PMON 需要获得某个Mutex以便清理某个dead process,但是该Mutex又被其他进程持有,则PMON甚至无法开始真正清理并释放Mutex。 如果自己搞不定可以找ASKMACLEAN专业ORACLE优化团队成员帮您搞定!

❻ oracle数据库执行sql很慢怎么回事

一条sql突然执行变慢,耗时9秒,应用是不能改的,只能从数据库方面下手解决
步骤思路:
1:查看sql是否走索引
2:查看索引是否失效
3:hint 强制走索引(只是用来查看hint状态下,查询是否更改,应用是不能改的)
4:收集该表所有信息(包括索引)
5:分析该表所有信息(包括索引)
6:再次执行并查看
注意:哪个用户执行较慢,就用哪个用户进行操作,这样才准确

❼ 求助各位大侠,关于plsql连接oracle 慢

1、你在服务器上用plsql连接没有问题
说明:第一不是服务器问题,第二不是plsql软件问题
2、你在自己电脑上连接sql正常
说明:不是网络问题
3、但是你在你自己的电脑上连接服务器上的oracle有问题
个人认为应该从一下两个方面找原因
第一:你的plsql版本和你在服务器上测试时候用的版本是否一致
第二:你本地的oracle客户端版本和服务器上的版本是否一致
第三:你本地的tns文件和服务器上的tns文件是否一致
我没有遇到过这样的问题,但是如果我遇到了也就这个思路了!

热点内容
怎么编程套料 发布:2025-02-04 02:50:31 浏览:205
副编译 发布:2025-02-04 02:05:25 浏览:613
解压按摩师 发布:2025-02-04 01:21:31 浏览:424
linuxssh限制 发布:2025-02-04 01:20:40 浏览:697
脚本式是什么 发布:2025-02-04 01:06:24 浏览:248
手机wps密码怎么取消密码 发布:2025-02-04 00:51:44 浏览:596
算法逻辑表 发布:2025-02-04 00:51:44 浏览:241
零售股票如何配置主线 发布:2025-02-04 00:51:07 浏览:950
预算法施行时间是 发布:2025-02-04 00:50:30 浏览:344
世界ol上传照片 发布:2025-02-04 00:34:13 浏览:64