ORACLE--性能优化
文章平均质量分 78
Two手揣兜
这个作者很懒,什么都没留下…
展开
-
解析的几种方式
一条SQL的执行过程1.在PGA中进行语法、语义检查(检查执行该SQL语句的用户是否有权限访问某个对象) 2.检查该SQL是否存在于共享池3.如果SQL语句不存在就对该SQL进行硬解析,生成执行计划,解析树等等,如果SQL语句存在,就选择最佳执行计划,这个就是软解析4.执行SQL,返回结果主要讨论一下oracle的解析方式1硬解析:SQL转换为HASH_VALUE在原创 2014-08-18 17:06:55 · 878 阅读 · 0 评论 -
SQL Profiles-STA使用方法
1、创建优化任务并执行使用SQL Profile还必须有CREATE ANY SQL PROFILE、DROP ANY SQL PROFILE和ALTER ANY SQL PROFILE等系统权限set timing offDECLARE my_task_name VARCHAR2(30); my_sqltext CLOB;BEGIN my_sqlte原创 2015-05-06 10:16:46 · 793 阅读 · 0 评论 -
SQL Profiles-AUTO
http://www.laoxiong.net/sql-profiles-part.htmlhttp://www.laoxiong.net/sql-profiles-partii.htmlSQL Profiles可以说是Outlines的进化。Outlines能够实现的功能SQL Profiles也完全能够实现,而SQL Profiles具有Outlines不具备的优化,个人认为最原创 2015-05-06 10:21:19 · 489 阅读 · 0 评论 -
SQL Profiles-MANUAL
Manual管理SQL Profile步骤1、针对目标sql使用脚本coe_xfr_sql_profile.sql产生能生成其Manual类型的SQL Profile 的脚本A2、改写目标sql的文本,在其中使用合适的hint,直到加入hint后的sql能走出我们想要的执行计划。然后对加入合适hint后的sql使用脚本coe_xfr_sql_profile.sql,产生能生成其Manual原创 2015-05-06 10:25:14 · 572 阅读 · 0 评论 -
SPM-AUTO
SQL Profile 实际上只是一种亡羊补牢、被动的技术手段,应用在那些执行计划已经发生了不好的变更的SQL上。SPM是一种主动的稳定执行计划的手段,能够保证只有被验证过的执行计划才会被启动。当启用SPM,每一个sql都会存在对应的SQL Plan Baseline,这个SQL Plan Baseline存储的就是该SQL的执行计划,如果一个sql有多个执行计划,那么该sql就会有多个SQL原创 2015-05-07 13:52:15 · 604 阅读 · 0 评论 -
SPM-MANUAL
手动生成SPB1根据sql_id、plan_hash_value导入目标sql至SPB中2加入hint改写sql,导入改写后的执行计划至SPB3删除步骤1中产生执行计划对于的SPB设置试验环境SYS@fyl>create table t2 as select * from dba_objects;Table created.SYS@fyl>create index原创 2015-05-07 14:03:09 · 704 阅读 · 0 评论 -
bind peeking--绑定变量窥视
绑定变量窥视,就是指oracle在第一次解析SQL语句的时候(也就是说该SQL第一次传入shared pool),会将你输入的绑定变量的值带入SQL语句里,从而参考你的字面值来猜测该SQL大概会返回多少条记录,从而得到优化的执行计划。然后,以后再次执行相同的SQL语句时,不再考虑你所输入的绑定变量的值,直接取出第一次生成的绑定变量。但是,很可惜的是,使用绑定变量从而共享游标与SQL优化是两个矛盾的原创 2014-08-18 17:08:17 · 715 阅读 · 0 评论 -
WRH$_ACTIVE_SESSION_HISTORY Does Not Get Purged Based Upon the Retention Policy (文档 ID 387914.1)
Applies to:Oracle Database - Enterprise Edition - Version 10.2.0.1 and laterInformation in this document applies to any platform.***Checked for relevance on 25-Apr-2014***SymptomsAWR tables a原创 2015-09-28 17:24:24 · 779 阅读 · 0 评论 -
oradebug 推进SCN
1 linux 32位[oracle@lx01 ~]$ uname -aLinux lx01 2.6.18-194.el5 #1 SMP Tue Mar 16 21:52:43 EDT 2010 i686 i686 i386 GNU/LinuxSYS@fyl>select * from v$version;BANNER----------------------------------原创 2014-10-08 20:54:55 · 3265 阅读 · 0 评论 -
AWR阅读
http://download.csdn.net/detail/u013820054/8626753原创 2015-04-24 09:10:27 · 411 阅读 · 0 评论 -
查看执行计划的几种方式总结
总结了执行计划的几种方式1、autotrace@?/rdbms/admin/utlxplangrant all on plan_table to public;@?/sqlplus/admin/plustrcegrant plustrace to publicSCOTT@fyl>set autotrace onSCOTT@fyl>select * from t where原创 2014-08-30 10:16:06 · 1890 阅读 · 0 评论 -
数据块dump详解及大小表扫描过程
查找对象的数据块、RDBA、dump trace文件SCOTT@ prod>select deptno,rowid, 2 dbms_rowid.rowid_relative_fno(rowid) file#, 3 dbms_rowid.rowid_block_number(rowid) block#, 4 dbms_rowid.rowid_row_number(rowid)原创 2014-10-22 16:18:30 · 2056 阅读 · 0 评论 -
Buffer cache学习(二)
和BUFFER CACHE相关的主要Latch有:cache buffer lru chain、cache buffers chainsbuffer cache就是一块含有许多数据块的内存区域,这些数据块主要都是数据文件里的数据块内容的拷贝,那么数据的查询和修改都要通过它来完成。接下来就看看访问数据的流程是怎样的1 :当一个进程要访问数据时,首先要查找BUFFER CACHE看看数据是否已原创 2014-08-22 13:41:42 · 557 阅读 · 0 评论 -
几种索引扫描方式学习
1:索引唯一扫描(index unique scan)通过唯一索引查找一个数值经常返回单个 ROWID。2:索引范围扫描(index range scan)(a) 在唯一索引列上使用了 range 操作符(> >= (b) 在唯一组合索引上,只使用部分列进行查询(引导列需要存在),如引导列不存在走全表扫描,如组合索引列全存在index unique scan。(c原创 2014-08-12 12:33:01 · 910 阅读 · 0 评论 -
Buffer cache学习(三)
接Buffer cache学习(二)2.6:现在再回过头,看看怎样查找BUFFER CACHE看看数据是否已经存在? (Y) 如果数据在BUFFER CACHE中存在的情况。 1) 根据要查找的数据块的DBA等信息,通过上面给的HASH算法( Hash Bucket = MOD(Data Block Address, _DB_BLOCK_HASH_BUCKETS) ),原创 2014-08-22 13:48:38 · 548 阅读 · 0 评论 -
Buffer cache学习(四)--实验Cache Buffers Chains Latch
测试:模拟Cache Buffers Chains Latch竞用 1:创建表test,总共一条记录,共1个Block。SCOTT@prod>select * from test; ID---------- 1 SCOTT@prod>selectdbms_rowid.rowid_relative_fno(rowid) file#,原创 2014-08-22 15:43:03 · 592 阅读 · 0 评论 -
latch简单理解(一)
latch简单理解1.1、Latch可以理解为一种清量级的锁, Latch是一种快速的被获取和释放的内存锁,用于防止共享内存结构被多个用户同时访问。他不会造成阻塞,只会造成等待。阻塞时系统设计问题,等待是资源征用问题。最常见的latch争用而等待的----共享池中latch争用,数据缓冲池latch的争用。1.2、对于Latch的请求,不用排队等待资源,由于Latch的分配相当随机,所原创 2014-08-22 13:41:54 · 4608 阅读 · 0 评论 -
shared pool与log buffer学习(五)
shared pool介绍及相关的latch(解析)Latch:shared poolLatch:library cache我们知道Oracle通过SHARED POOL来实现SQL共享,减少硬解析等。而SQL的相关信息,如:SQL语句文本,SQL执行计划等都存放在SHARED POOL的Library Cache部分其中Library Cache的结构如下图可以看到其结构原创 2014-08-25 09:46:27 · 538 阅读 · 0 评论 -
列基数与列选择性、集簇因子、直方图
一、基数: 一个列中唯一键(Distinct_keys)的个数,如有一个100W行的表,性别列的基数为2 (select distinct xx from t),主键列的基数为100W(select distinct id from t);二、选择性: 基数/总行数所占的百分比,性别 2/100w * 100% 主键 100% 选择性越高 越有利于使用索引原创 2014-08-26 19:49:37 · 1372 阅读 · 0 评论 -
统计信息及DBMS_STATS.GATHER_TABLE_STATS学习
一、统计信息的收集Gather_stats_job 调用 dbms_stats.gather_database_stats_job_proc 过程来收集statistics的信息。该过程收集对象statistics 的条件如下:(1)对象的统计信息之前没有收集过。(2)当对象有超过10%的 rows 被修改,此时对象的统计信息也称为stale statistics。select j原创 2014-08-27 16:55:15 · 13590 阅读 · 0 评论 -
oracle常见hint
与优化器模式相关的hint1.1 /*+ all_rows */ 让优化器启动CBO1.2 /*+ first_rows(n)*/优化器启动CBO,选择会快返回前n行数据的执行计划。与first_rows_n不同,first_rows_n n只能为1,10,100,1000.1.3 /*+ rule */ 启动RBO,与其他hint连用,其他hint一般会失效。与表及索引访原创 2015-01-23 15:20:15 · 2888 阅读 · 0 评论