
Oracle Tuning
czmmiao
这个作者很懒,什么都没留下…
展开
-
Oracle Redo 并行机制
Redo log 是用于恢复和一个高级特性的重要数据,一个redo条目包含了相应操作导致的数据库变化的所有信息,所有redo条目最终都要被写入redo文件中去。Redo log buffer是为了避免Redo文件IO导致性能瓶颈而在sga中分配出的一块内存。一个redo条目首先在用户内存(PGA)中产生,然后由oracle服务进程拷贝到log buffer中,当满足一定条件时,再由LGWR进程写...原创 2017-04-07 11:31:03 · 289 阅读 · 0 评论 -
Parallel Execution: Large/Shared Pool and ORA-4031 (文档 ID 238680.1)
Applies toOracle Database - Enterprise Edition - Version 8.1.7.0 and laterInformation in this document applies to any platform.PurposeGive some information what can be check if we get and ORA-4031 an...原创 2014-07-17 17:47:44 · 192 阅读 · 0 评论 -
Oracle Predicate Pushing(原创)
IntroductionThe join predicate pushdown (JPPD) transformation allows a view to be joined with index-based nested-loop join method, which may provide a more optimal alternative. In the join predicate ...2014-02-22 21:17:01 · 302 阅读 · 0 评论 -
SQL Tuning : Setup Sample Schema
STEP 1 : Setup userCREATE USER "TUNING" PROFILE "DEFAULT" IDENTIFIED BY "TUNING" DEFAULT TABLESPACE "USERS" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK;GRANT CREATE SESSION TO "TUNING";GRANT CREAT原创 2014-02-22 20:25:01 · 165 阅读 · 0 评论 -
Oracle SWAP_JOIN_INPUTS hint(原创)
考虑下列sqlselect /*+ leading(t1 t2 t3 t4) use_hash(t2) use_hash(t3) use_hash(t4) */ count(t1.small_vc), count(t2.small_vc), count(t3.small_vc), count(t4.small_vc)from ...2014-02-22 20:13:09 · 380 阅读 · 0 评论 -
Oracle SQL提示含义与示例 --- 概要数据提示
QB_NAME语法:QB_NAME(<有效字符串>)描述:该提示为所在查询块指定标识符,该标识符可以用于其他提示的全局格式,指定对象所在位置;查询块被引用时的格式为:@<标识符> 或者 <对象名>@<标识符>HELLODBA.COM>exec sql_explain('select /*+full(@INV U@INV)*...原创 2014-02-22 19:53:47 · 207 阅读 · 0 评论 -
Star Transformation And Cardinality Estimates
If you want to make use of Oracle's cunning Star Transformation feature then you need to be aware of the fact that the star transformation logic - as the name implies - assumes that you are using a pr...原创 2014-06-30 07:33:10 · 132 阅读 · 0 评论 -
Optimizer Transformations: Star Transformation
Star transformation was introduced in Oracle 8i to process star queries efficiently. These queries are commonly used in data warehouse applications that follow the Star Schema data model. The Star S...原创 2014-06-30 07:32:38 · 190 阅读 · 0 评论 -
Optimizer statistics-driven direct path read decision for full table scans
Hello all fellow Oracle geeks and technology enthusiasts! Long time no see ;-)In the hacking session about Oracle full table scans and direct path reads I explained how the direct path read decisio...原创 2014-06-06 16:09:28 · 338 阅读 · 0 评论 -
Oracle的Filter,Nest loop,Merge sort join和Hash join(原创)
Merge Sort Join按照Merge Sort Join连接的两表地位完全相同。这种算法会把每个表按照连接列进行排序,生成两个排序集。然后对两个排序集进行一次遍历便可以得到最终结果集。这个算法的特点是,每个表都需要排序,排序后都需要遍历一次。以下面的例子说明,Merge Sort Join的执行过程如下:SQL> explain plan for select /*+ us...2013-02-18 22:43:58 · 368 阅读 · 0 评论 -
PARALLEL Related Hint
PARALLEL Hint Note on Parallel Hints Beginning with Oracle Database 11g Release 2 (11.2.0.1), the PARALLEL and NO_PARALLEL hints are statement-level hints and supersede the earlier object-level...原创 2013-11-27 19:13:27 · 195 阅读 · 0 评论 -
Automating Parallelism
Parallel query, the essence of the “divide and conquer” technique in query processing, has been part of Oracle Database for quite a while. In general, parallel query works by creating several paralle...原创 2014-07-17 17:49:36 · 140 阅读 · 0 评论 -
ORACLE SQL TUNING各种技巧及复杂实例
一.优化器模式ORACLE的优化器共有3种:a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选择性)为了使用基于成本的优化器(CBO, Cost-Based Optimizer) , 你必须定期更新统计信息,以保证数据库中的对象统计信息(object statistics)的准确性.如果数据库的优化器模式设置为选择性(CHOOSE),那么实际的优化器模式将和是否...原创 2014-02-25 23:17:34 · 351 阅读 · 0 评论 -
Query Transformations : Subquery unnesting(原创)
Subquery Unnesting Subqueries are nested when they appear in the WHERE clause of the parent statement. When Oracle Database evaluates a statement with a nested subquery, it must evaluate the subquery...2014-07-23 08:42:14 · 356 阅读 · 0 评论 -
Append Values and how not to break the database
With the advent of the /*+ APPEND_VALUES*/ hint in 11gR2, I suspect we will see the feature misused and a bunch of questions on why it "doesn't work". The documentation states that "direct-path INSER...原创 2015-09-29 20:12:41 · 157 阅读 · 0 评论 -
Oracle表高水平位的优化与监控
高水平位虚高的案例--构造表drop table t purge;create table t as select * from dba_objects;insert into t select * from t;insert into t select * from t;insert into t select * from t;insert into t select * from t;...原创 2015-02-13 09:21:31 · 479 阅读 · 0 评论 -
Oracle行迁移和行链接详解(原创)
行迁移成 因:当发出update导致记录行长增加,block的剩余空间不足以存放这条记录,就会产生行迁移,发生行迁移时rowid不会改变,原来的block 中会用一个指针存放这条记录在新的block中的地址,发生行迁移会对性能产生影响,因为读这条记录会读两个BLOCK。后果:导致应用需要访问更多的数据块,性能下降。预防:1. 将数据块的PCTFREE调大;2. 针对表空间扩大数据块大小检查:a...2015-02-13 09:00:17 · 759 阅读 · 0 评论 -
ALTER INDEX COALESCE: 10g Improvements
I thought it might be worth mentioning some interesting changes in the manner in which the ALTER INDEX … COALESCE command works since Oracle 10g.Basically the purpose of the COALESCE option is to r...原创 2014-08-02 21:34:56 · 212 阅读 · 0 评论 -
Differences and Similarities Between Index Coalesce and Shrink Space
As already discussed, ALTER INDEX COALESCE in 10g onwards works in a very similar manner to ALTER INDEX SHRINK SPACE.However, there are a number of key differences.The first thing to point out is tha...2014-08-02 21:21:55 · 153 阅读 · 0 评论 -
Alter index coalesce VS shrink space
10g中引入了对索引的shrink功能,索引shrink操作会扫描索引的页块,并且通过归并当前存在的数据将先前已删除记录的空间重新利用;很多书籍亦或者MOS的Note中都会提及SHRINK命令与早期版本中就存在的COALESCE(合并)命令具有完全相同的功能,或者说2者是完全等价的-" alter index shrink space is equivalent to coalesce",事实...原创 2014-08-02 17:56:05 · 598 阅读 · 0 评论 -
SQL Plan Management Creating SQL plan baselines(原创)
SQL Plan ManagementSQL Plan Management (SPM) allows database users to maintain stable yet optimal performance for a set of SQL statements. SPM incorporates the positive attributes of plan adaptabil...2014-08-01 23:56:59 · 241 阅读 · 0 评论 -
Cut out from Ask Tom-- Thanks for the question regarding "10053", version 9.2.6
You AskedDear tom,A. your new book is illuminating.B. could you please, post an 10053 trace file and explain in your. Word what is going on there?C. try to hack it my self - didn't worked for me, to...2014-03-09 23:38:10 · 191 阅读 · 0 评论 -
Parse CPU to Parse Elapsd%的理解
Parse CPU to Parse Elapsd%是指sql语句的CPU时间与总体解析时间的比率, SQL总体解析时间包括CPU时间和wait时间,这个比率过低说明SQL Parse的wait时间远远大于CPU的 Parse时间不是很正常,可能有大量lib cache latch or shared pool latch。 有时候Parse CPU to Parse Elapsd%会超...原创 2015-01-19 13:59:52 · 1122 阅读 · 0 评论 -
WITH Clause : Subquery Factoring
Subquery Factoring The WITH clause, or subquery factoring clause, is part of the SQL-99 standard and was added into the Oracle SQL syntax in Oracle 9.2. The WITH clause may be processed as an inl...原创 2014-07-23 08:43:30 · 255 阅读 · 0 评论 -
latch: cache buffers chains故障处理总结(原创)
一大早就接到开发商的电话,说数据库的CPU使用率为100%,应用相应迟缓。急匆匆的赶到现场发现进行了基本的检查后发现是latch: cache buffers chains 作祟,处理过程还算顺利,当时忘了记录log,这里总结下处理思路,以便下次查看。故障分析思路 查看等待事件,判断故障起因SQL>select * from (select sid,event,p1,p2...2013-01-08 19:50:28 · 621 阅读 · 0 评论 -
老白对于RAC应用调优的建议--(摘自老白的ORACLE RAC 日记)
虽然ORACLE的售前人员总是说RAC的扩展性是透明的,只要把应用分到不同的节点,就可以平滑的扩展系统能力了。而事实上,RAC的CACHE FUSION机制决定db cache,library cache等在RAC环境下都会由于CACHE FUSION而带来额外的开销。在一个单实例环境中,如果我们要访问某个Cache buffer,我们只需要闩住相关的cache buffer chains,然...原创 2013-06-23 10:54:02 · 138 阅读 · 0 评论 -
如何直接阅读Oracle中的trace文件(原创)
大部分情况下,我们可以利用tkprof工具格式化trace文件,让trace文件便于阅读,但trkprof产生的是trace文件的汇总结果,如果需要知道sql每一步确切执行了什么,我们也只能直接阅读trace==============================================APPNAME mod='%s' mh=%lu act='%s' ah=%lu ...2012-04-22 17:18:05 · 194 阅读 · 0 评论 -
记一次Oracle Sql优化经历--消耗过多CPU(原创)
同事打电话跟我说,数据库CPU过高、swap交换频繁,要我马上看看,这里记录下整个过程以供大家参考,也让大家提点意见$topasTopas Monitor for host: fjlt_wb_db01 EVENTS/QUEUES FILE/TTYMon Feb 13 10:10:09 2012 Interval: ...2012-02-15 22:31:04 · 1643 阅读 · 0 评论 -
Fix high "latch: cache buffers chains" waits
This is the first part in a series of articles entitled "The right tool for the right job". In each article, I will use tools and ideas made available to us by oracle gurus like Tanel Poder, Jonatha...原创 2012-05-30 11:07:22 · 255 阅读 · 0 评论 -
修改隐含参数_library_cache_advice解决性能问题一例
客户的一套重要生产系统,出现了性能问题。这个问题涉及的信息如下:数据库主机的CPU利用率长期在100%左右。应用系统在晚上进行调整后,开始出现了问题。数据库中出现大量的latch: shared pool、latch: library cache、cursor: pin S、latch: cache buffers chains和latch: cache buffers lru cha...原创 2012-05-29 21:12:51 · 892 阅读 · 0 评论 -
Oracle数据库性能模型
如何为一个数据库建立性能模型作为一名DBA来说,我们面临的一个巨大挑战是:如何保证数据库的性能可以满足快速变化的应用的需求,如何在数据量和访问量持续增长的情况下,保证应用的响应时间和数据库的负载处在合理的水平下。我们可能会经常面对以下的问题:某个SQL每秒要执行100次,响应时间是多少?某个应用发布后,对数据库的影响如何?所以,评估应用对数据库所产生的影响,优化应用并预测风险,保证数据库的可用性和...原创 2012-05-29 20:02:51 · 113 阅读 · 0 评论 -
db_file_multiblock_read_count详解(原创)
db_file_multiblock_read_count 初始化参数db_file_multiblock_read_count 影响Oracle在执行连续的数据库扫描时,一次I/O允许读取的最大数据块数,这个参数的设置可能影响到CBO的执行计划选择。但db_file_multiblock_read_count的设置要受系统最大IO能力影响,也就是说,如果你系统的硬件IO能力有限,即使设置再...2012-05-15 20:39:36 · 2712 阅读 · 0 评论 -
记一次Oracle SQL高版本(high version count)引起性能故障处理
用户报告前台业务响应缓慢,登陆至数据库获取awr报告。kill掉相关会话后系统恢复,杀会话可参考metalink id 786507.1Load Profile 除了Rollback per transaction %比较高之外,达到了95%。其他指标似乎正常。于是进一步查看事务回滚相关信息,可以看到每秒事务回滚数(transaction rollbac...原创 2012-05-14 14:53:30 · 1060 阅读 · 0 评论 -
v$sql_shared_cursor学习(原创)
v$sql_shared_cursorORACLE使用子游标去区分一个不能被共享的SQL,因为虽然SQL相同,但是SQL所指向的对象使不同的。也就是说,这些SQL的父游标都是一样的,HASH_VALUE值都相同。例如,数据库有三个表T,有这样一个语句,select *from T,由于每个T都被不同的对象使用或是用户使用,而在数据库级别,这些语句都是一样的,HASH_VALUE...2012-05-14 14:44:55 · 478 阅读 · 0 评论 -
学习v$sql,v$sqlarea,v$sqltext,v$sqlstats和v$sql_plan(原创)
V$SQL V$SQL在子游标级别上列出了在共享sql区域的统计信息,他将原始sql文本展现为一行。V$SQL中的视图信息一般在sql执行的最后进行更新。然而,对于长时间执行的sql,每5秒会更新一次v$sql视图。这使得很容易查看长时间执行的sql在运行过程中带来的影响。v$sql列说明,如没有特别说明,均指子游标SQL_TEXT 当前正在执行的游标的sql文本的前...2012-04-26 11:02:13 · 589 阅读 · 0 评论 -
Oracle 10053详解(原创)
10053事件概述查询优化器Query Optimizer是Oracle数据库的一个核心技术,作用是将输入SQL转化为最优的执行计划。由于SQL语句本身是一种描述特性的语言,Query Optimizer生成最优的执行计划,就是各品种、各版本DBMS的追求目标。10g以后Oracle就完全废除了RB0,使用CBO(Cost-Based Optimizer)称为基于成本的优化器作为默认优化器。CB...2012-04-25 12:23:13 · 1085 阅读 · 0 评论 -
Oracle 10046 event详解(原创)
10046事件概述Oracle的10046事件,可以跟踪应用程序所执行的SQL语句,并且得到其解析次数.执行次数,CPU使用时间等信息。这对我们分析、定位数据库性能问题是非常有用的。 10046 event是oracle用于系统性能分析时的一个最重要的事件。当激活这个事件后,将通知oracle kernel追踪会话的相关即时信息,并写入到相应trace文件中。这些有用的信息主要包括sq...2012-04-25 09:48:01 · 475 阅读 · 0 评论 -
引起数据库性能问题的因素
软件架构设计对数据库性能的影响软件系统的架构对数据库的影响是非常直接的。例如一套系统,如果并发数非常大,比如是超过3000个并发,通常这种情况下,我们会考虑采用一套软件来搭建一个中间层,这就是通常讲到的3层或是多层结构。使用这一套软件的目的是用来构建一个缓冲池,在数据库之前对大量的并发进行处理,以便于每次只有少数的用户连接到数据库中,其他的用户在缓冲池的队列中等待。当然,这只是一个动态...原创 2012-03-26 11:56:27 · 859 阅读 · 1 评论 -
Oracle中的执行计划(原创)
执行计划概述 所谓执行计划,顾名思义,就是对一个查询任务,做出一份怎样去完成任务的详细方案。举个生活中的例子,我从珠海要去英国,我可以选择先去香港然后转机,也 可以先去北京转机,或者去广州也可以。但是到底怎样去英国划算,也就是我的费用最少,这是一件值得考究的事情。同样对于查询而言,我们提交的SQL仅仅是 描述出了我们的目的地是英国,但至于怎么去,通常我们的SQL中是没有给出提示信息的,是由...2012-03-31 16:49:02 · 164 阅读 · 0 评论 -
Oracle中的优化器(原创)
Oracle中的RBOOracle的优化器有两种优化方式: 基于规则的优化方式:Rule-Based Optimization(RBO)基于成本或者统计信息的优化方式(Cost-Based Optimization:CBO)RBO方式:RBO自ORACLE 6版以来被采用,有着一套严格的使用规则,只要你按照它去写SQL语句,无论数据表中的内容怎样...2012-04-03 22:22:49 · 93 阅读 · 0 评论