简单描述下现在的情况:
1、环境 A 之前通过网页调用数据库的存储过程时出现过死锁的情况,但是没有人为处理,过了一夜之后死锁情况消失,可能是 Oracle 自动检测并解决了。但是一些复杂的查询会变慢,手动执行了 Oracle 统计分析之后查询速度正常。
2、过了一夜之后,存储过程放在 plsql 中执行,大概耗时十几秒左右即可成功执行,但是在网站中(环境 A )调用执行却执行了 20 多分钟还没有结束。
3、同样代码,在另外一个环境(环境 B )调用同一个数据库的同一个存储过程会很快,大概也是十几秒的样子。
请问这是什么原因呢?现在应该怎么操作才能解决环境 A 中调用存储过程慢的问题呢?
1
zhaoritian19 OP 现在环境 A 又正常了,我已经彻底懵逼了!什么鬼啊,oracle 自动分析了?
|
2
sun1991 2020-01-09 15:08:30 +08:00 1
死锁的情况 Oracle 会自动处理并留下日志. 不需要人工处理.
你说的执行慢的情况, 可能是存储过程等待其他资源释时被堵塞. 解决办法是在堵塞发生时看看当前事物正在申请的资源是什么. |
3
zhaoritian19 OP @sun1991 谢谢大佬解答,要怎么看“当前事物正在申请的资源”啊,对 oracle 不是很熟悉……
|
4
sun1991 2020-01-09 15:58:41 +08:00
既然上了 Oracle, 那就应该有 DBA 吧? 应该都懂.
基本上就是一些 view: V$LOCK, V$TRANSACTION, V$SESSION, ALL_OBJECTS 之类. |
5
zhaoritian19 OP @sun1991 嗯呐 谢谢解答,我已经搜到相关文章啦,但是我登录的用户满意权限,让 DBA 看一下吧。
|