在sqlplus中实现命令的上翻下翻功能
在linux下使用Oracle的sqlplus时,缺省情况下箭头键不起到左右移动光标,上下翻动命令的作用。导致使用很不方便。这里我要介绍一 个小工具软件rlwrap(软件卸载地址:http://linux.softpedia.com/get/Terminals/rlwrap-16437.shtml),这是一个“readline wrapper”工具,可以使用左右箭头在一行中左右移动光标,还可以用上下箭头来上翻和下翻回调命令,甚是好用。下载地址:http://utopia.knoware.nl/~hlub/uck/rlwrap/[@more@] 我用的是0.24源代码版。安装和简单: ./configure make make install 其他一些安装的
怎样得到准确的执行计划
我们知道autotrace和explain plan以及dbms_xplan.display包都是通过对plan_table的查询和格式化后输出执行计划的结果,有时会不准确。 准确的执行计划需要从V$sql_plan视图中抓取,下面通过几种方法从V$SQL_PLAN中得到执行计划。[@more@]最好的方法是通过dbms_xplan.display_cursor包,执行这个包需要知道sql的sql_id以及child_numberSQL> select t.* from v$sql s,table(dbms_xplan.display_cursor(s.sql_id,s.child_number)) twhere s.sql_text like '%where b=5%' and s.parsing_user_id <> 0; 2 3 4PLAN_TABLE_OUTP
oracle统计信息和直方图
oracle统计信息和直方图的理解[@more@]以前一直对统计信息的理解就是对行的数据分布的,提供改CBO来选择高效的执行计划。这段时间看了不少资料,对统计有了一个更清晰的认识 统计信息: 1,表中的统计信息 2,索引列的统计信息 3,一般列的统计信息 表的统计信息:1,表行数,使用的块数,空的块数,块的使用率,行迁移和链接的数量,pctfree,pctused的数据,行的平均大小 Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->se
Oracle直方图详解(ZT)
当系统中的某些表存在高度不均匀的数据分布时,使用柱状图能够产生更好的选择性评估,从而产生更加优化的执行计划。柱状图提供一种有效和简捷的方法来呈现数据的分布情况。[@more@]下面通过一个具体的例子解释柱状图的使用。SQL> create table tab (a number, b number);Table created.SQL> begin for i in 1..10000 loop insert into tab values (i, i); end loop; commit; end; /PL/SQL procedure successfully completed.SQL> update tab set b=5 where b between 6 and 9995;99
linux下sqlplus调出历史命令--rlwrap介绍
当在Linux Shell中运行SQL*Plus的时候,并不提供浏览历史命令行的功能。相反的,在Windows操作系统上,当在DOS命令窗口中运行SQL*Plus的时候,可以使用向上,向下键来跳回之前已经执行过的SQL语句。你可以 根据需要修改他们,然后按[Enter]重新提交执行。[@more@]为了在Linux中达到同样的目的,你可以安装rlwrap,这个程式本身是个Shell,可以运行任何你提供给它的命令包括参数,并添加命令历史浏览功能。 The rlwrap program is under the GPL license。1:安装rlwrap-0.28.tar.gz下载地址:http://utopia.knoware.nl/~hlub/uck/rlwrap/(现
利用Oracle 10g SQL优化器(STA)优化语句
SQL优化器(SQL Tuning Advisor STA)是Oracle10g中推出的帮助DBA优化工具,它的特点是简单、智能,DBA值需要调用函数就可以给出一个性能很差的语句的优化结果。下面介绍一下它的使用。使用STA一定要保证优化器是CBO模式下。FROM: http://www.hellodba.com/Doc/how_to_oracle10_sta(1).htm[@more@]一、利用STA优化语句对于问题语句的收集,可以通过Oracle10g的另一个自动化工具:数据库自动诊断监视工具(ADDM)。它的使用可以参照我的另一篇文章《Oracle10g数据库自动诊断监视工具(ADDM)使用指南》。我们下面简单介绍一下如何优化一条找到的
optimizer_dynamic_sampling参数的理解
书上说这个参数让ORACLE在表中不存在统计数据,或者虽然存在统计数据,但统计数据太旧,或者存在其它方面的不可靠性的时候,即时估算optimizer统计数据。[@more@]OPTIMIZER_DYNAMIC_SAMPLINGParameter type Integer Default value If OPTIMIZER_FEATURES_ENABLE is set to 9.2.0 or higher, then 1 If OPTIMIZER_FEATURES_ENABLE is set to 9.0.1 or lower, then 0 Parameter class Dynamic: ALTER SESSION, ALTER SYSTEM Range of values 0 to 10 OPTIMIZER_DYNAMIC_SAMPLING controls the level of dynamic sampling performed by the o
关于cursor_sharing = similar(ZT)
关于cursor_sharing = similar摘要:本文通过简单实验来尝试说明cursor_sharing=similar的含义。 [@more@]1.1. 实验现象我们先看看在表没有分析无统计数据情况下的表现 SQL> alter session set cursor_sharing = similar; Session altered. SQL> select name,value from v$sysstat where name like @#%parse%@#; NAME VALUE ---------------------------------------------------------------- ---------- parse time cpu 4948 parse time elapsed 4468 parse count (total) 170148 parse count (hard) 1619 (硬分析次数)parse cou
什么时候使用绑定变量性能反而更差
转自http://www.hellodba.com/Doc/Oralce_no_bind_variable.htm[@more@]扫描成本和OPTIMIZER_INDEX_COST_ADJ我们知道,在CBO模式下,Oracle会计算各个访问路径的代价,采用最小代价的访问路径作为语句的执行计划。而对于索引的访问代价的计算,需要根据一个系统参数OPTIMIZER_INDEX_COST_ADJ来转换为与全表扫描代价等价的一个值。这是什么意思呢?我们先稍微解释一下这个参数:OPTIMIZER_INDEX_COST_ADJ。它的值是一个百分比,默认是100,取值范围是1~10000。当估算索引扫描代价时,会将索引的原始代价值乘以这个百分比,将换算后的值作为
实时获得最耗CPU资源的SQL语句(zt)
在Oracle性能诊断和日常监控中,最耗CPU的语句通常也是我们最需要关心的语句。所以在Oracle10g的awr中,将cpu time和elapsed time最高的语句加入到了报表,并且放到了SQL语句部分的前两位。那么在平时的监控中,也可以通过shell脚本实时捕获系统中CPU耗用最多的进程中正在执行的SQL,以更加有效和及时的诊断和发现问题。[@more@]首先写一个根据spid来或者其SQL的脚本get_by_spid.sh[oracle@qht107 test]$ cat get_by_spid.sh#!/bin/ksh# creator:NinGoo# function: get sql statement by spid# parameter: spid# useage: get_by_spid.sh s