首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

记一次library cache locklibrary cache pin导致的函数编译hang住分析及处理过程

所以,第一时间检查了下数据库中是否存在行锁: SQL> @block no rows selected 可以看到,此时并没有排查到数据库有行锁。...从上述描述中,可以理解为,library cache lock/pin是当两个客户端同时访问(修改)同一个数据库对象的时候(通常为table, view, procedure, function, package...针对于不同的操作,其获得的锁如下: 所有的DDL操作(包括对过程、函数、视图等编译)都会对访问对象请求exclusive模式的lock和pin; 通过上述的描述,我们其实大概可以看出一些造成编译无法成功的原因了...我们通过v$session也可以找到这个会话的sql_id,并查看该sql_id的sql_text: select sql_id from v$session where sid=368; ======...作者 王鑫,近7年数据库服务经验,目前就职于云和恩墨西区交付团队,擅长Oracle、PostgreSQL数据库的迁移运维等工作,具有11g OCP、11g OCM、PGCA、PGCE等数据库认证。

1K20

六千字带你了解 Oracle 统计信息和执行计划

从 Oracle11G 开始,数据库统计信息的自动收集被整合到自动维护任务中,基本上都是默认自动执行的,也满足大多数情形下的运行需求,不过也可以手动收集,下面可以一起说一说。...使用 gather_stats_job 自动收集是在创建数据库时自动创建的,并由调度程序进行管理。他会收集数据库中优化程序统计信息缺失或已过时的所有对象的统计信息。...11g中自动任务默认的执行时间窗口(oracle时间窗口介绍)为: 周一到周五是晚上 10 点开始到 2 点结束 周末是早上六点,持续 20 个小时。 这期间一般服务器压力比较小。...好了统计信息就说到这里了,下面来进入到今天的主题:执行计划。 二、执行计划 执行计划:一条 SQL 语句在数据库中的访问路径或者执行过程的描述。...实际上启动了两个会话连接,一个会话用于执行查询,另一个会话用户记录执行计划和输出最终结果,这两个会话是由同一个进程派生出来的(一个进程对应多个会话)。

2.8K42
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    查看SQL执行计划的方法及优劣

    在 Oracle 的性能分析中,很多时候需要对 SQL 进行分析,而最重要的就是对执行计划的分析。在本次的分享中,我主要介绍常用的查看 SQL 执行计划的方法。...与 AWR 报告采集相同,因为性能数据的记录是累计的值,所以两个 snap_id 间如果重启过数据库会报错。如果在选择的 snap_id 间没有该条 SQL 的信息同样会报错。...需要注意的是,该方法是根据当前的 session 的参数来进行解析,如果业务程序与当前会话的设置存在不同,很可能执行计划不同。通常可用于验证自己的优化方法是否会有效。...优势:执行计划信息全面; 劣势:存在与业务执行计划不同的可能; DBMS_XPLAN.display_cursor(‘sql_id’,cursor_child_no,'advanced') 该方法可查看在数据库...使用改方法看到的执行计划与 AWR 报告中的是相同的。但是因为没有时间限制,会显示所有的执行计划。如果存在多个执行计划,不好判断问题时段使用的是哪个执行计划。 优势:保存时间较长。

    1.2K20

    【DB笔试面试580】在Oracle中,什么是High Version Count?

    ♣ 题目部分 在Oracle中,什么是High Version Count? ♣ 答案部分 一个父游标下对应的子游标个数被称为Version Count,每个子游标对应一个执行计划。...对于一个特定的游标有多少个版本(Version Count)就属于高版本游标是没有明确定义的。对于不同的系统有不同的数量界定。...High Version Count不仅产生的原因是多种多样的,而且会导致各种令人头痛的问题,轻则导致数据库的性能急剧下降,CPU利用率剧增,重则导致数据库挂起,触发ORA-04031或者其它BUG导致宕机...在AWR报告中,Version Count大于20就会被报告出来,如下图所示: ? SQL执行计划的生成,是受到很多因素影响的。相同父游标只是表示输入SQL的字面值相同。...在Oracle 11g中,V$SQL_SHARED_CURSOR可以用来诊断子游标不共享问题的原因。该视图通过SQL_ID和CHILD_NUMBER就可以定义某个特定子游标的信息。

    1.3K10

    【DB笔试面试585】在Oracle中,什么是常规游标共享?

    Oracle数据库中典型的不安全的谓词条件有范围查询(使用了>、>=、的谓词条件),使用了带通配符(%)的LIKE,以及对有直方图统计信息的目标列施加的等值查询等。...Oracle数据库中的常规游标共享受参数CURSOR_SHARING的控制,其值可以被设置为EXACT、SIMILAR或FORCE,它们各自的含义如下所示: l EXACT表示Oracle不会用系统产生的绑定变量来替换目标...Oracle 11g及其后续的版本)。...EXACT,所以Oracle不会用系统产生的绑定变量来替换上述SQL的WHERE条件中的输入值,而上述两个SQL的WHERE条件中的输入值并不相同(一个是0,另一个是1),即意味着这两个SQL在执行时均会使用硬解析...(仅适用于Oracle 11g之前的版本)。

    89340

    【DB笔试面试688】在Oracle中,跟踪会话执行语句的方法有哪几种?

    ♣ 题目部分 在Oracle中,跟踪会话执行语句的方法有哪几种? ♣ 答案部分 因为TRACE的目标范围不同,所以导致必须使用不同的方法。若作用于数据库全局的,则改初始化参数。...在大多数时候使用SQL_TRACE跟踪的都是当前会话的进程。通过跟踪当前进程可以发现当前操作的后台数据库递归活动,这在研究数据库新特性时尤其有效,在研究SQL执行,发现后台错误等方面也非常有用。...11g中还可以对单个SQL打开10046事件跟踪,命令如下所示: 1ALTER SYSTEM SET EVENTS 'SQL_TRACE [SQL:&&SQL_ID] WAIT=TRUE,BIND=TRUE...如下的代码是跟踪LHR用户的信息,在用户LHR登录数据库系统时会启动10046跟踪。...可在模块级别、动作级别、客户端级别、数据库级别、会话级别进行跟踪,Oracle官方支持。

    1K30

    网罗收集10046的各种Case,方便trace信息的收集 | Oracle官方博客转载

    编辑丨TeacherWhat 转载自:Oracle官方博客 - 数据库产品技术支持 题图:Oracle Middle East Headquarter 作者:Jerome Zhang 原文链接:https...://blogs.oracle.com/database4cn/10046casetrace 正文共1500字,建议阅读时间3分钟 ---- 每逢与遇到SQL相关性能,我们总是需要收集10046的,来查看和诊断问题...以上 1. event++在system级别指定sql_id,对新起的会话和当前的会话有效, 对其他已经存在的会话无效 SQL> alter system set events 'sql_trace...event ++: SQL> alter system set events 'sql_trace [sql: 5qcyrymp65fak] off'; 2. event ++ 指定某个process的sql_id...SQL> oradebug setospid 的会话的spid<<<<<<<<<<<select spid from V$process, V$session where

    54210

    iOS中相同IP,不同端口,session失效的问题

    进行正常登陆业务等处理 https://ip1:443/ 然后在端口444服务器进行资料文件上传等处理 https://ip1:444/ 因为服务器在https://ip1:443/登陆成功之后对cookie中的...session进行校验保存,而一旦出现访问443->444->443,就是进行文件上传操作后,再调用443端口后,服务器对session校验失败,出现会话超时问题 原因 因为session状态是靠cookie...中存储的jsessionid实现的,所以,由于两个服务器的sessionid,名称、域、路径都一样,导致sessionid被覆盖,从而导致session失效;由此也得出cookie是不区分端口的。...NSHTTPCookieStorage sharedHTTPCookieStorage]setCookie:cookieuser]; } } PS:AFNetworking也能用相同处理办法

    2K30

    【DB笔试面试578】在Oracle中,什么是会话游标?会话游标和共享游标的区别有哪些?会话游标分为哪几类?

    会话游标(Session Cursor)与会话(Session)是一一对应的,不同会话的会话游标之间不能共享,这是与共享游标(Shared Cursor)的本质区别。...联系1.会话游标是以哈希表的方式缓存在PGA中,意味着Oracle会通过相关的哈希运算来存储和访问在当前会话的PGA中的对应会话游标。...在上表中需要注意的是,动态游标是Oracle数据库中最灵活的一种会话游标,它的灵活性表现在:①动态游标的定义方式非常灵活,它可以有多种定义方式。②动态游标可以作为存储过程的输入参数和函数的输出参数。...视图V$OPEN_CURSOR可以用来查询数据库中状态为OPEN或者己经被缓存在PGA中的会话游标的数量和具体信息(例如,SQL_ID和SQL文本等)。...在Oracle 10g中默认为20(注意:在官方文档中记录的该值默认为0是有误的),11g中默认为50。

    1.5K30

    Oracle 11g Data Guard环境中的归档管理

    熊军(老熊) 云和恩墨西区总经理 Oracle ACED,ACOUG核心会员 在11g里面,随着ASM、RAC、Data Guard(包括Active Data Guard)的成熟,使用RAC+ASM+...这篇文章谈谈如何管理Oracle 11g Data Guard环境中的归档日志。 归档日志是重要的,备份恢复需要它,而Data Guard也需要它。...在早期版本的Data Guard环境中,常常面临着归档日志管理问题,,但11g做了很多改进,使得我们使用和维护更加方便。...这种情况下,快速恢复区的归档可能会增加到空间耗尽,最后就会出现数据库不能归档,数据库挂起的问题。 那么快速恢复区的空间消耗多少百分比的时候才算是空间不足?...答案是肯定的。没有相应的数据库参数来设定,但是可以通过事件来设置,事件号是19823: ?

    1.7K70

    详述Oracle11g因JDBC bug引发异常Library Cache Lock等待处理事件

    墨墨导读:在Oracle 11g 版本中可能出现由于JDBC bug导致sql绑定变量无法共享,过期游标过多的情况,此时如果发生大量并发业务,很有可能造成异常library cache lock等待事件...library cache lock等待事件是Oracle数据库较为常见的等待事件之一,在之前的几次月刊中,我们也提到过产生library cache lock等待出现的原因有很多,如登录密码错误尝试过多...在Oracle 11g 版本中可能出现由于JDBC bug导致sql绑定变量无法共享,过期游标过多的情况,此时如果发生大量并发业务,很有可能造成异常library cache lock等待事件,造成数据库突发性能问题...其中SQL_ID:g14zxrn7wyaxh就是此次library cache lock等待最为严重的SQL。 ? 导致SQL不共享的原因很多,一部分是由于SQL中绑定变量长度不一致导致。 ?...文本,通过在原SQL文本中,加入不同的注释,从而将其变为若干个不同SQLID,但功能相同的SQL。

    1.3K20

    在Oracle中,如何定时清理INACTIVE状态的会话?

    今天小麦苗给大家分享的是在Oracle中,如何定时清理INACTIVE状态的会话? 在Oracle中,如何定时清理INACTIVE状态的会话?...一般情况下,少量的INACTVIE会话对数据库并没有什么影响,但是,如果由于程序设计等某些原因导致数据库出现大量的会话长时间处于INACTIVE状态,那么将会导致大量的系统资源被消耗,造成会话数超过系统...此时就需要清理那些长时间处于INACTIVE状态的会话。...直接KILL掉INACTIVE的会话。V$SESSION视图中的LAST_CALL_ET字段表示用户最后一条语句执行完毕后到sysdate的时间,单位为秒。...每次用户执行一个新的语句后,该字段复位为0,重新开始记数。可以通过该字段来获得一个连接用户最后一次操作数据库后的空闲时间。推荐使用这种方法来释放INACTIVE状态的会话。

    2.7K20

    V$SQL、V$SQLAREA 和 V$SQLSTATS 的区别

    Oracle 数据库提供了三个动态视图,用于查询当前共享池中的所有 SQL 语句的执行统计信息。它们分别是 V$SQL、V$SQLAREA 和 V$SQLSTATS。本文将探讨它们之间的区别。...V$SQLAREA 和 V$SQLSTATS 对于每个不同的 SQL 字符串(即每个父游标)只有一行记录。这意味着所有子游标的统计信息,即该游标的不同版本,都被合并到一起。...首先,我们执行相同的 SQL 语句两次,同时在两次执行之间更改会话变量,以创建同一个SQL的两个执行版本: SQL> select /* sql_version */ last_name from employees...V$SQLSTATS 与 V$SQLAREA 有几点不同: VSQLSTATS 包含 SQL 语句的完整文本,不再需要访问 VSQLAREA 和 V Oracle声称V$SQLSTATS 更快且更具扩展性...在下一篇文章中,我将为读者提供一些现成的脚本用于查询V$SQLSTATS 找到需要优化的TOP SQL 。

    74110

    SQL Monitor,你值得掌握的一个特性(r10笔记第29天)

    如果你在11g的版本中,SQL Monitor就是一个大大的福利,你值得掌握,如果你还没有好好掌握它,就实在太可惜了。...至于SQL Monitor更多的细节就不一一描述了,11g推出的这个特性其实和MySQL里的慢日志有些类似,MySQL里面的阈值要更低一些,SQL Monitor是5秒。...一旦达到这个标准,就会进收集到v$sql_monitor这个视图中,可以得到详细的会话信息和执行计划。 如果想单独定制,那么也不是一件难事。可以使用hint monitor来完成。...HTML格式的效果如下: 执行概览,会话信息,执行计划一目了然,非常贴心。 ? 那么ACTIVE格式是什么意思呢,大体就是最炫,最全面的效果,还有一个小的flash效果。 ?...这个功能在Enterprise Manager中查看是很自然的一件事情,如果没有安装EM,我们不能因为这个专门去部署一个EM来不是。

    88170

    DBA命令速查6: 临时表空间( Temporary Tablespace)的相关确认SQL

    编辑|SQL和数据库技术(ID:SQLplusDB) 临时表空间表空间信息 select * from dba_temp_free_space; 临时表空间的使用量 SELECT d.tablespace_name...sql_id要用v$session视图的sql_id,而不要用v$sort_usage视图的sql_id,v$sort_usage视图里面的sql_id是不准确的*/ SQL执行时候的临时表空间使用量...sql_id='SQL_ID>' order by sample_time; 查询历史的temp表空间的使用的SQL_ID select a.SQL_ID, a.SAMPLE_TIME...WHERE vs.inst_id = vt.inst_id AND vs.saddr = vt.session_addr ORDER BY tempseg_usage DESC; 查询使用临时表空间会话...発生原因とその対処方法について(KROWN:68738) (Doc ID 1723269.1) [10g 新機能] 一時表領域グループ(KROWN:84881) (Doc ID 1727040.1) 11g

    69120
    领券