![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
oracle之tuning
文章平均质量分 64
huchenghua987
这个作者很懒,什么都没留下…
展开
-
一.statspack安装及如何使用
1。相关参数job_queue_processes=10 show parameter job_qu ; NAME TYPE VALUE------------------------------------ ----------- -------------job_queue_processes integer 10timed_statistics=tureshow原创 2010-08-24 20:32:00 · 2550 阅读 · 0 评论 -
如何查看行迁移的表
<br />statspack or awr report ---->instance statistics---->table fetch continued row <br />如果这里发现大量发生行迁移行链接的对象,那么就要找出哪些对象发生行迁移行链接<br /><br /><br />发生行迁移和行链接的表:<br />SQL> select owner,table_name ,tablespace_name from dba_tables<br /> 2 where CHAI原创 2010-08-26 20:17:00 · 277 阅读 · 0 评论 -
DBVERIFY工具用来验证数据文件的物理结构。
<br />DBVERIFY工具用来验证数据文件的物理结构。<br /><br />一.DBVERIFY工具的主要目的是为了检查数据文件的物理结构,包括数据文件是否损坏,是否存在逻辑坏块,以及数据文件中包含何种类型的数据。<br />DBVERIFY工具可以验证ONLINE或OFFLINE的数据文件。不管数据库是否打开,都可以访问数据文件。一个最简单的访问数据文件的例子:<br />1.ONLINE DATAFILE : <br />SQL> select file_name from dba_data_f原创 2010-10-08 16:16:00 · 203 阅读 · 0 评论 -
rowid的介绍
<br />1.rowid的介绍 <br />先对rowid有个感官认识:<br />SQL> select rowid,t.* from scott.dept t<br /> 2 /<br />ROWID DEPTNO DNAME LOC<br />------------------ ------ -------------- -------------<br />AAAGDvAABAAAH1UAAA 10 ACCOUNTING NEW Y原创 2010-10-08 16:17:00 · 173 阅读 · 0 评论 -
Tkprof: 分析ORACLE跟踪文件并且产生一个更加人性化清晰的输出结果的可执行工具
<br />Tkprof: 分析ORACLE跟踪文件并且产生一个更加人性化清晰的输出结果的可执行工具<br />使用步骤: <br />SQL> alter system set timed_statistics=true;<br />1.用户级自跟踪:<br />ALTER SESSION SET SQL_TRACE=TRUE;---开始跟踪<br />这期间的sql都会被记录到udump下的Trace中<br />ALTER SESSION SET SQL_TRACE=FALSE;---结束跟踪<br原创 2010-10-08 16:22:00 · 266 阅读 · 0 评论 -
启动自动跟踪
<br />@?/rdbms/admin/utlxplan <br />create public synonym plan_table for plan_table;<br />grant all on plan_table to public ;<br />@?/sqlplus/admin/plustrce.sql <br />grant plustrace to public;原创 2010-10-08 16:42:00 · 178 阅读 · 0 评论 -
初始化参数db_file_multiblock_read_count 影响Oracle在执行全表扫描时一次读取的block的数量.
<br />初始化参数db_file_multiblock_read_count 影响Oracle在执行全表扫描时一次读取的block的数量.<br />db_file_multiblock_read_count的设置要受OS最大IO能力影响,也就是说,如果 你系统的硬件IO能力有限,即使设置再大的db_file_multiblock_read_count也是没有用的。<br />理论上,最大db_file_multiblock_read_count和系统IO能力应该有如下关系:<br /> Ma原创 2010-10-08 16:59:00 · 1131 阅读 · 0 评论 -
得到ROWID
<br />create or replace function get_rowid<br />(l_rowid in varchar2)<br /> return varchar2<br /> is<br /> ls_my_rowid varchar2(200);<br /> rowid_type number;<br /> object_number number;<br /> relative_fno number;<br /> block_number number;<br /> row原创 2010-10-08 17:01:00 · 166 阅读 · 0 评论 -
索引快速全扫描
<br />索引快速全扫描<br />他和执行计划同时存在,索引快速全扫描在当前版本的优化器中不会经常出现,但是它是一个不需要提示即可以显示的路径<br />实际上,对于一个仅仅引用索引中一部分列的查询来说,oracle会把索引看作一个包含一些混合无用数据的很小的表(比如存储的一些rowid和无意义的分支块)<br /> 这就意味着oracle能够按照物理块顺序来读取索引段,并使用多块读取,在读取的同时抛弃分支块。索引记录将不会按照索引顺序返回,<br />这时因为oracle不会按照常用的指针那样从一个叶原创 2010-10-08 17:05:00 · 841 阅读 · 0 评论 -
索引跳跃扫描(index skip scan)
<br />索引跳跃扫描(index skip scan)在索引的首列的NDV(number of distinct values)很小才会被用到,下面举例测试:<br />创建表test(a,b)<br />where b=123<br />由于a列只有3个不同的值,所以oracle可以作类似下面这样的查询,从而利用index skip scan来提高查询效率。<br />select ... from .. where (a=0 and b = 123) or (a=1 and b=123) or (a原创 2010-10-08 17:07:00 · 426 阅读 · 0 评论 -
可以在没有跟踪的情况下 来看用户
<br />可以在没有跟踪的情况下使用<br />使用说明计划:<br />1.使用utlxplan.sql 创建PLAN_TABLE <br />SQL>@$ORACLE_HOME/rdbms/admin/utlxplan<br />2.运行EXPLAIN PLAN SQL 命令.<br />3.查询PLAN_TABLE显示执行计划.<br />set linesize 700<br />@?/rdbms/admin/utlxpls.sql;原创 2010-10-08 16:20:00 · 133 阅读 · 0 评论 -
扫描方式
<br />访问路径----〉就是访问表数据的方法,有这些路径:<br />1.1 全表扫描<br />1.2 ROWID扫描<br />1.3 索引扫描<br />1.1 全表扫描:<br />ORACLE将读取指定段中用于某一点或另一点上的每个块.全扫描就是批读取所有的块,准确地说读取段高水位标记之下所有的块,全扫描是读取ORACLE的大量数据的行之有效的方法,因为数据库将使用多块读取.多块读的数量由初始化参数db_file_multiblock_read_count确定<br /> <br />1.2原创 2010-10-08 16:28:00 · 225 阅读 · 0 评论 -
索引唯一扫描
<br />22:49:40 sys@ORCL> set autotrace traceonly<br />SQL> select * from scott.emp where empno=7900;<br /> EMPNO ENAME JOB MGR HIREDATE SAL COMM<br />---------- ---------- --------- ---------- -------------- -------原创 2010-10-08 17:03:00 · 185 阅读 · 0 评论 -
SQL编写规范
<br />明确的规范<br /> nsql语句的所有表名、字段名全部小写,系统保留字、内置函数名、sql保留字大写。n连接符or、in、and、以及=、<=、>=等前后加上一个空格。n对较为复杂的sql语句、过程、函数加上注释,说明算法、功能。nSQL语句的缩进风格<br /> 1. 一行有多列,超过80个字符时,基于列对齐原则,采用下行缩进 <br /> 2. where子句书写时,每个条件占一行,语句另起一行时,以保留字或者连接符开始,连接符右对齐。n多表连接时,使用表的别名来引原创 2010-10-08 15:48:00 · 247 阅读 · 0 评论 -
解析(过程实现功能)
<br />SQL> conn sys as sysdba<br />输入口令:<br />已连接。<br />SQL> alter system flush shared_pool;<br /> <br />系统已更改。<br /> <br />SQL> conn scott/scott<br />已连接。<br />SQL> set timing on<br />SQL> set autotrace on<br /> <br />这是一次硬解析(hard parse)<br />SQL> select原创 2010-10-08 16:12:00 · 223 阅读 · 0 评论 -
察看表空间使用情况
<br />察看表空间使用情况,yz_stat达到99.9% ,相对9号下午4点增加了3个百分点<br />col f.tablespace_name format a15<br />col d.tot_grootte_mb format a10<br />col ts-per format a15<br />set linesize 600<br />select upper(f.tablespace_name) "ts-name",<br />d.tot_grootte_mb "ts-bytes(m)"原创 2010-10-08 16:25:00 · 976 阅读 · 0 评论 -
如何使用AWR
10G 新特性 同样可采样数据性能和统计 使用表空间sysaux,用户 sys,保留时间 七天一。查看相关属性desc dba_hist_wr_control ------>查询保留的天数,及相隔时间的快照Name Null? Type ----------------------------------------- -------- ---------------------------- DBID原创 2010-08-25 19:36:00 · 310 阅读 · 0 评论 -
如何计算高水位线
<br />SQL> create or replace procedure p_unused_space(p_object_name in varchar2,<br />p_object_type in varchar2 default 'TABLE',<br />p_owner in varchar2 default user,<br />p_partition_name in varchar2 default '') is<br />v_total_blocks number;<br原创 2010-08-26 20:42:00 · 347 阅读 · 0 评论 -
理解高水位线 及模拟HWM
<br />HWM:<br />场景:<br />big table :select count(*) from table ; cost <br />delete from table ; select count(*) from table ; cost <br />truncate table ; select count(*) from table cost <br /><br /><br />SQL> create table ttt as select * from al原创 2010-08-26 20:10:00 · 131 阅读 · 0 评论 -
通过spid与PID找到该会话执行过的应用 根据进程查询其对于的SQL语句
<br />注意:从nt体统查找消耗资源过的SQL,可先用top,topas,glance等等工具查看那个<br />ORACLE进程消耗资源过大(cpu)<br /> <br />一。找到当前oracle sid 即实例<br />SQL> select distinct sid from v$mystat;<br /><br /> SID<br />----------<br /> 159<br />二。通过实例 找到其当前会话地址,再通过当前会话地址找到spid原创 2010-08-25 20:08:00 · 1341 阅读 · 0 评论 -
跟踪某个用户一段时间的所有操作
<br />1。alter_sid.log 2。后台跟踪文件bdump 3。用户跟踪文件udump<br /> <br />一。首先查找sid 和serial<br />/SQL> @/u01/app/oracle/script/logon.sql<br /><br /> SID SERIAL# MACHINE USERNAME<br />---------- ---------- -------------------- -------------原创 2010-08-25 20:15:00 · 303 阅读 · 0 评论 -
共享池的优化~! 之模拟一个库缓存等待
shared_pool_size 1.库缓存--->语句文本,解析码和执行执行 lru算法管理2.字典缓存--->包含表,定义栏和数据字典表的权限注意: 过大的shared_pool_size设置可能是个有害的选择,由于管理的开销可能会折磨你的数据库SQL> select namespace,gets,gethits,gethitratio from v$librarycache;NAMESPACE GETS GETHITS GETHI原创 2010-08-26 19:49:00 · 301 阅读 · 0 评论 -
如何处理行迁移?
<br />方法一:<br />exp ... imp <br />expdp ....impdp <br />--->影响应用,速度慢,安全<br /><br />方法二:<br />move <br />--->简单,但是需要2倍磁盘空间来处理<br /><br />方法三:<br /><br />建立一个存放行迁移的表<br />SQL> @?/rdbms/admin/utlchain.sql<br /><br />Table created.<br />原创 2010-08-26 20:18:00 · 179 阅读 · 0 评论 -
shrink的语法及如何降低高水位线
alter table tbname row movement;保持高水位:alter table tbname shrink space compact;回缩表和hwm:alter table my_t shrink space;回缩表与相关索引alter table tbname shrink space cascade;回缩素引:alter index idxname shrink space;---->assm (注意索引表空间也要是assm)从10g开始,原创 2010-08-26 20:48:00 · 642 阅读 · 0 评论 -
通过sid找到该会话执行的SQL语句
<br />一。得到当前实例号和序列号<br />SQL> col machine format a20;<br />SQL> select sid,serial#,machine,username from v$session<br /> 2 where username is not null;<br /><br /> SID SERIAL# MACHINE USERNAME<br />---------- ---------- -----原创 2010-08-25 19:55:00 · 573 阅读 · 0 评论 -
如何保持一个大对象到共享池的保留空间!
<br />rdbms/admin/dbmspool.sql 脚本用来创建dbms_shared_pool包<br /><br /><br />保持大对象:<br />SQL> select owner,name,namespace from v$db_object_cache<br /> 2 where SHARABLE_MEM>100000<br /> 3 and (TYPE='PACKAGE' or type='PROCEDURE' or type='FUNCTION' OR原创 2010-08-26 19:55:00 · 123 阅读 · 0 评论 -
高速缓存区db_cache的优化
<br />调试高速缓存区:<br />SQL> desc v$db_cache_advice<br /> Name Null? Type<br /> ----------------------------------------- -------- ----------------------------<br /> ID原创 2010-08-26 19:59:00 · 165 阅读 · 0 评论 -
高速缓存区db_cache的优化
<br />调试高速缓存区:<br />SQL> desc v$db_cache_advice<br /> Name Null? Type<br /> ----------------------------------------- -------- ----------------------------<br /> ID原创 2010-08-26 20:00:00 · 229 阅读 · 0 评论 -
解析ROWID,通过ROWID查看一个表的对象号,文件号;
<br /><br />SQL> select rowid,t.* from scott.dept t;<br /><br />ROWID DEPTNO DNAME LOC<br />------------------ ---------- -------------- -------------<br />AAAPW1AALAAAAA1AAA 10 ACCOUNTING NEW YORK<br />AAAPW原创 2010-08-26 20:15:00 · 253 阅读 · 0 评论 -
SID,PID,SPID,UID.....咋这么多ID...
<br /> <br /> <br />今天Kill Session时查找的对这几个id一些研究<br />SID:是Oracle 实例的标识,不同的SID 对应不同的内存缓冲(SGA)和不同的后台进程。<br />SPID:system process id ,表示server process 在 os 中的process id.<br />PID:oracle process id,oracle自己用的id<br />kill session时用的是v$process.spid或v$se原创 2010-08-25 19:36:00 · 2999 阅读 · 0 评论 -
跟踪某个用户一段时间的所有操作
<br />1。alter_sid.log 2。后台跟踪文件bdump 3。用户跟踪文件udump<br /> <br />一。首先查找sid 和serial<br />/SQL> @/u01/app/oracle/script/logon.sql<br /><br /> SID SERIAL# MACHINE USERNAME<br />---------- ---------- -------------------- -------------原创 2010-08-25 20:16:00 · 322 阅读 · 0 评论 -
如何估算一个表的行记录
<br />估算表的行记录:<br />SQL> select bytes from dba_segments<br /> 2 where segment_name='SOLO';<br /><br /> BYTES<br />----------<br /> 6291456<br /><br /><br />SQL> select avg_row_len from dba_tables <br /> 2 where table_name='SOLO';<br原创 2010-08-26 19:56:00 · 146 阅读 · 0 评论 -
SGA的管理
<br /><SGA>管理:<br />asmm(auto shared memory management) ---->mman <br />自动共享内存管理,10g中新增特性,针对以下内存发挥作用<br />buffer cache,共享池 ,java池,大池,流池 <br /><br />SQL> show parameter sga_tar<br /><br />NAME TYPE VALUE<br /原创 2010-08-26 20:03:00 · 155 阅读 · 0 评论 -
PGA的调优
<br />PGA:<br />进程全局区一段内存<br />SQL> show parameter pga_a<br /><br />NAME TYPE VALUE<br />------------------------------------ ----------- ------------------------------<br />pga_aggregate_target原创 2010-08-26 20:06:00 · 287 阅读 · 0 评论 -
索引范围扫描
<br />对于索引范围扫描,优化程序知道可能返回0行,1行或多行,不能保证索引查找只返回一行<br />通常,索引按升序从低到高读取,也可以倒退按降序读取<br />22:50:03 sys@ORCL> select empno from scott.emp where empno<5000 order by empno desc;<br />未选定行<br /><br />执行计划<br />--------------------------------------------------------原创 2010-10-08 17:04:00 · 260 阅读 · 0 评论