在 fedora 和 centos 等 redhat 系列中,命令: yum provides tc [root@dock ~]# yum provides t...
而在命令行模式,我们可以通过DBMS_SQLDIAG程序包中提供的方法,来调用SQL修复顾问(SQL Repair Advisor)。...Database PL/SQL Packages and Types Reference >152 DBMS_SQLDIAG https://docs.oracle.com/en/database/oracle...', -- 输出路径 sql_id => 'SQL_ID>', -- 指定SQL_ID plan_hash_value => , -- 指定plan_hash_value...输出路径 sql_id => 'g59vz2u4cu404', -- 指定SQL_ID plan_hash_value => 2937609675, -- 指定plan_hash_value exportData...Diagnostic Data with SQL Test Case Builder Database PL/SQL Packages and Types Reference >EXPLAIN_SQL_TESTCASE
SQL> SELECT sql_id, hash_value, substr(sql_text,1,40) sql_text FROM v$sql WHERE sql_text like 'select...ON SQL> SET ECHO OFF SQL> SET FEEDBACK OFF SQL> SQL> SELECT DBMS_SQLTUNE.report_sql_monitor(sql_id =...包查看结果。...通过SQLID或者时间等其他条件,DBAHISTREPORTS中查找历史SQL监控报告的REPORTID。...Database PL/SQL Packages and Types Reference >31 DBMSAUTOREPORT 相关参数 我们可以通过下面的方法查看历史SQL监控功能(Historical
@xxx (直接在数据库服务器上执行也可以) SQL>@e:\scripts\sqlhc.sql T sql_id> 两个参数,第一个参数T,第二个参数是你要采集的sql_id(下面红色部分换成你的...如果sql执行时间很长, 可以不需要等待sql执行结束,在sql执行一段时间后即可保存sql monitor文件: 需要先查到业务sql对应的sqlid信息(业务sql的hint里面加tag001的意义就是为了方便查找...sql_id=>'&sql_id', report_level=>'ALL', type=>'active') as report from dual...补充信息的收集,可以在sqlplus下完成,也可以在pl/sql developer下实现: pl/sql developer 工具使用F5得到的执行计划信息,适合分析简单的SQL,不适合分析复杂SQL...使用pl/sql developer 得到与前面方法1和方法2一样sql真实执行计划及详细信息: 在sql window下执行(其中b1对应的是绑定变量) declare b1 date; begin
SQL> select sql_id,sql_text,executions from v$sqlarea -->首次查询后在v$sqlarea保存父游标且执行次数EXECUTIONS为1...> select sql_id,hash_value,child_number,sql_text from v$sql -->查询视图v$sql查看该SQL对应的子游标,且CHILD_NUMBER为0...> select sql_id,sql_text,executions from v$sqlarea -->视图v$sqlarea中EXECUTIONS值为3,对应的SQL被执行了3次...sql_id,hash_value,child_number,sql_text from v$sql...SQL> select sql_text,executions,sql_id from v$sqlarea where sql_text like 'select * from emp where deptno
SQL监控结果的方法 1.DBMS_SQLTUNE包的以下子程序包 REPORT_SQL_MONITOR :实时SQL监控报告 REPORT_SQL_MONITOR_LIST :(11.2...参考: Database PL/SQL Packages and Types Reference >140 DBMS_SQLTUNE >>Real-time SQL Monitoring Subprograms...各版本变化 11gR1: 推出该功能 11gR2: DBMS_SQLTUNE.REPORT_SQL_MONITOR程序包增加了 'ACTIVE' 参数,用于显示HTML 和Flash的输出结果...监控结果 4.1 方法1:通过DBMSSQLTUNE.reportsql_monitor包来显示查看实时SQL监控结果。...> 参考 Database PL/SQL Packages and Types Reference >140 DBMS_SQLTUNE Oracle® Databaseリファレンス 11gリリース2
, datatype_string, last_captured, value_string from v$sql_bind_capture where sql_id='&sql_id'; 测试过程如下...SQL> var x1 varchar2(1) SQL> exec :x1 := 1 PL/SQL procedure successfully completed....where sql_id=''9acwyk91jxtm4'''); SQL_ID : 9acwyk91jxtm4 NAME...sql_id, name, position, datatype_string, last_captured, value_string from v$sql_bind_capture where sql_id...因此,在12c前,要看到Timestamp类型绑定变量参数的值,就得依靠ANYDATA,我们是可以从《PL/SQL Packages and Types Reference》找到对这个ANADATA的介绍
sqlhc是老虎刘最常用的SQL优化工具,没有之一。 这个工具在oracle 的 MOS网站可以下载,原压缩包里面有3个文件,老虎刘一般只用sqlhc.sql一个文件。...使用sqlhc之前,首先要提供要检查或优化的SQL的sql_id,一般DBA都知道sql_id,遗憾的是有些初级研发人员却不知道sql_id为何物,自己百度一下,非常简单。...T|D|N] (required) Enter value for 1: T 第一个参数,根据购买License情况选择T、D或N(大多数人会选择T) PL/SQL procedure successfully...压缩包内的文件一般如下图所示: 其中4个html文件和log.zip是通常存在的。...如果*sql_monitor.zip 也包含在sqlhc压缩包内,说明你的SQL执行时间超过了5s,或者是并行的SQL,而且收集sqlhc时仍保留在sql monitor的内存。
调优 SQLT:SQLTXPLAIN,也被称为 SQLT,是由 Oracle 服务器技术中心- ST CoE 提供的工具。...SQLTXPLAIN 用户被授予以下系统权限: • CREATE SESSION • CREATE TABLE PL/SQL包和视图的 SQL 集由用户SQLTXADMIN拥有。...如果必须使用 SYS 或其他 DBA 账户,那么在 12c 中,由于 PL/SQL 的安全模型的更改,需要手动执行额外的授权。...结束后生成的文件名以 sqlhc 开头,依次是日期、时间、sql_id。...如果 sql_monitor.zip 也包含在 sqlhc 压缩包内,说明 SQL 执行时间超过了 5s,或者是并行的 SQL,而且收集 sqlhc 时仍保留在 sql monitor 的内存里。
SQL> var v1 varchar2(4); SQL> begin :v1 := 'WARD'; end; / 2 3 4 PL/SQL procedure successfully...> var v1 varchar2(100); SQL> begin :v1 := 'SMITH'; end; / 2 3 4 PL/SQL procedure successfully...> select SQL_ID,CHILD_NUMBER,EXECUTIONS from v$sql where sql_id='fawn2kwuxq1dq';SQL_ID CHILD_NUMBER...SQL> var v1 varchar2(800); SQL> begin :v1 := 'MILLER'; end; / 2 3 4 PL/SQL procedure successfully...> select SQL_ID,CHILD_NUMBER,EXECUTIONS from v$sql where sql_id='fawn2kwuxq1dq';SQL_ID CHILD_NUMBER
为CBO收集信息 SQL> exec dbms_stats.gather_table_stats(user,'t'); PL/SQL procedure successfully completed...>30%'; SQL_ID CHILD_NUMBER ------------- ------------ fcvjyr3skfj5b 0 SQL> select * from...(user,'t',cascade=>true); PL/SQL procedure successfully completed SQL> 查看分析后的情况: SQL> select a.num_rows...默认情况下,dbms_stats包会对所有的列做直方图分析。...现在我们将直方图信息删除,但是保留表和索引的分析信息 SQL> exec dbms_stats.delete_column_stats(user,'t',colname => 'id'); PL/SQL
所以这里Oracle在执行范例PL/SQL代码1、2、3时每次都是硬解析,但在执行范例PL/SQL代码4和5时会用软解析/软软解析,因为范例PL/SQL代码4和5可以重用之前执行的范例PL/SQL代码3...a60 LHR@orclasm > SELECT SQL_TEXT,SQL_ID,VERSION_COUNT,EXECUTIONS FROM V$SQLAREA WHERE SQL_TEXT LIKE...SQL_ID VERSION_COUNT EXECUTIONS ------------------------------------------------------------ -...,SQL_ID,D.CHILD_NUMBER,D.CHILD_ADDRESS,EXECUTIONS FROM V$SQL D WHERE SQL_ID = '01g03pruhphqc'; SQL_TEXT...D.SQL_ID = '01g03pruhphqc'; SQL_ID CHILD_NUMBER B ------------- ------------ - 01g03pruhphqc
但是从我了解到的情况来看,大多数DBA想去调优一个sql,很少会用到这个包,主要原因就在于使用感觉不是很方便,因为整个过程就像是自己开发了一段pl/sql代码一样,而且复用性较差。...(sql_id => l_sql_id,scope => 'COMPREHENSIVE',time_limit => 120); " >> gentunerpt_$1.sql echo...sql_id即可,就会创建对应的task,然后开始调用sql_tune包进行分析,最后输出结果。...通过上面的脚本会自动生成下面的pl/sql代码块。...(sql_id => l_sql_id,scope => 'COMPREHENSIVE',time_limit => 120); :tuning_task:=l_tuning_task
i in test_cur loop insert into t values(i.object_id,i.object_name); end loop; commit; end; / 我们在pl...不过还有一个细节之处就是在pl/sql里面直接调用sql语句的时候, shared pool里都是转换成大写来处理的。...select hash_value,sql_id,child_latch,version_count,sql_text,parse_calls from v$sqlarea where sql_text...v$sqlarea where sql_text like 'insert%' HASH_VALUE SQL_ID CHILD_LATCH VERSION_COUNT SQL_TEXT...SQL> select hash_value,sql_id,version_count,parse_calls,sql_text from v$sqlarea where sql_text like
SQL> variable name varchar2(100); SQL> exec :name:='aaa'; PL/SQL procedure successfully completed....SQL> select sql_id,hash_value,address,child_address from v$sql where sql_text like 'select *from test_var...SQL> exec :name:='bbb'; PL/SQL procedure successfully completed....> col sql_text format a50 SQL> select sql_id,hash_value,address,child_address from v$sql where sql_text...我把变量类型从varchar2改为了char SQL> variable name char(3); SQL> exec :name:='aaa'; PL/SQL procedure successfully
然后我们使用如下的pl/sql来尝试从表t中取出数据然后重新插入t中。...SQL>select hash_value,sql_id,child_latch,version_count,sql_text,parse_calls from v$sqlarea where sql_text...like 'INSERT%' HASH_VALUE SQL_ID CHILD_LATCH VERSION_COUNT SQL_TEXT...生成的sql_id只有一个。至于parse_calls是66,我们可以断定表t中应该有66*2=132条数据。因为pl.sql是基于66条数据的基础上做了一次insert....SQL>select hash_value,sql_id,child_latch,version_count,sql_text,parse_calls from v$sqlarea where sql_text
Oracle数据库中执行sql的时候,优化器会根据优化器统计信息和一些参数来生成“它认为最好的“执行计划。 但是并不能够保证每一次都会选择最优的哪个执行计划。...如果遇到了sql语句在一定时间段执行时性能变差, 并且发现它的执行计划发生了变化,那么可以考虑固定哪个”好的”时候的执行计划。 当然,必须保证sql语句没有被修改,是同一个sql。 1....attribute_name => 'FIXED', - attribute_value => 'YES' ); PL/SQL procedure successfully...',plan_name=>'SQL_PLAN_dzs1udsva8m0x2f8e26bd'); PL/SQL procedure successfully completed....- 首先需要知道发生性能问题的sql语句,好的时候处于哪个AWR的snapshot的时间段。
--------------------------------------------------------- SQL_ID...-------------------------------------------------------- SQL_ID...------------------------------------------------------------ SQL_ID...---------------------------------------------- -->由此可知,并非最佳的执行计划被执行 SQL_ID...--------------------------------------------------------------------- SQL_ID
explain plan命令 PL/SQL Developer中通过快捷键F5就可以查看目标SQL的执行计划了。但其实按下F5后,实际后台调用的就是explain plan命令,相当于封装了该命令。...DBMS_XPLAN包 (1) select * from table(dbms_xplan.display);--上面以说明。...')); 其中第一个参数可以输入SQL的sql_id或hash value,方法就是如果执行的SQL仍在库缓存中,则可以使用V$SQL查询: ?...其中,使用@dbsnake大牛的SQL可以知道SQL_ID和HASH_VALUE的一一对应关系: ?...(4) select * from table(dbms_xplan.display_awr('sql_id')); (1)是使用explain plan for +SQL作为前提,(2)和(3)
Oracle在执行SQL的时候,有时候会生成很多额外的SQL语句,这个就称为递归调用。这个参数和访问数据字典的次数有很大的关系,一般来说,这个参数值不会很大。...=>1,FORMAT => 'ADVANCED ALLSTATS')); 其中参数SQL_ID为父游标,如果为NULL,那么表示显示该会话之前的SQL执行计划。...5、第三方工具 利用第三方工具,如PL/SQL DEV、TODO等开发工具,在PL/SQL DEV中选定SQL后,按F5即可查看执行计划: ?...>'&SQLID',TYPE=>'ACTIVE',REPORT_LEVEL=>'ALL') AS REPORT FROM DUAL;是是有有有有有有其它工具利用第三方工具,如PL/SQL DEV、TODO...等开发工具,在PL/SQL DEV中选定SQL后,按F5即可查看执行计划否不确定无无无无无无 对于这几种获取执行计划的方法有如下结论: ① 若目标SQL需要执行很长时间才能返回结果,则推荐使用EXPLAIN