Oracle Tuning
ezbit
技术或有时,梦想却无时!
个人技术网站:<a href='http://www.ezbit.ren'>http://www.ezbit.ren</a>
展开
-
ORACLE连接实现之HASH JOIN
最近,查阅了部分关于HASH JOIN的资料,现整理总结如下,以备忘。HASH JOIN是oracle在7.3版本中引入的一种表连接方式,以补充NESTED LOOP 和sort merge。HASH JOIN具有以下特征:1.只可以运行在CBO模式下2.由于采用了hash函数的计算方式,因此只适用于等值操作3.对hash_area_size的大小非常敏感,过大或者过小都会原创 2013-09-29 15:04:03 · 1402 阅读 · 0 评论 -
ORACLE 10G RAC 节点自动重启故障处理
将数据库集群升级到10.2.0.5之后,双节点服务器不断重启,查询oracle oprocd进程日志,信息如下:原创 2014-07-03 15:13:54 · 3014 阅读 · 0 评论 -
详解ORACLE中游标的生命周期
在网络或者书籍中,我们可以非常容易的了解到ORACLE中游标的生命周期包括如下部分:1,打开游标-- open cursor,此步骤在 UGA 里申请一块内存给游标使用,这个时候游标还没有与sql语句关联。2,解析游标-- sql与游标关联起来,解析sql的内容(包括执行计划),解析后的内容会被加载到共享池中(share pool-- library cache)。在UGA申请的内存用原创 2014-01-24 13:01:20 · 2772 阅读 · 0 评论 -
oracle系统统计信息
系统统计信息主要描述了与系统硬件相关的某些特性,例如cpu和io系统的性能和利用率等。这些信息对于查询优化器来说是非常重要的,在选择执行计划的过程中,oracle优化器会利用系统统计信息来评估执行计划的成本,因此,准确无误的系统统计信息可以帮助优化器做出正确的选择。我们可以通过DBMS_STATS.GATHER_SYSTEM_STATS过程来收集系统统计信息,收集的方式有两种:负载统计(W原创 2013-12-27 11:20:51 · 1636 阅读 · 0 评论 -
对于自适应游标共享的一点补充
You can see we have one child cursor that has been executed once and has a small number of buffer gets. We also see that the cursor has been marked bind sensitive. A cursor is marked bind sensitive if原创 2014-01-08 12:02:31 · 1390 阅读 · 0 评论 -
ORACLE概要文件-- sql profile(一)
SQL PROFILE在ORACLE10g中引入,从官方文档和网络资料可以看出,SQL PROFILE的主要目的侧重于SQL优化,其底层的实现细节可能主要依赖于hint。与outline相比,个人人文SQLPROFILE侧重于为优化器提供辅助信息从而促使优化器选择最优的执行计划,而outline侧重于固化执行计划,两者的目的是有区别的。但是由于SQL PROFILE和OUTLINE的底层技术支持均原创 2014-01-07 22:05:42 · 3017 阅读 · 0 评论 -
ORACLE绑定变量BIND PEEKING
ORACLE 在9i之后引入了bind peeking,通过bind peeking,oracle可以在硬解析的时候窥探绑定变量的值,并根据当前绑定变量的值生成执行计划。在oracle 9i之前的版本中,oracle仅仅通过统计信息来生成执行计划。下面看一下不同版本oracle下绑定变量对执行计划的影响SQL> alter system flush shared_pool;系统已更改。原创 2014-01-07 11:31:58 · 2353 阅读 · 2 评论 -
ORACLE 自适应游标共享--adaptive cursor sharing
在11g中,oracle引入了一项新特征:adaptive cursor sharing 自适应游标共享。这项特征主要用来改进具有绑定变量的sql语句的执行计划,也导致了具有绑定变量的sql语句可能会生成多个游标。在9i中,oracle引入了变量窥测(bind peeking)技术,通过使用变量窥测在SQL语句第一次硬解析时,优化器可以判定where子句的选择性,从而改进生成执行计划的质量。但是使原创 2014-01-07 16:37:15 · 2366 阅读 · 0 评论 -
如何获取执行计划
执行计划时DBA诊断问题常用的辅助工具,利用执行计划我们可以发现资源是如何消耗的或者优化器是否选择了正确的执行路径。获取执行计划的方式总体上来书可以分为两类:EXPLAIN PLAN - 通过该命令生成sql语句的执行计划,但是该语句并没有真正执行字典视图- 通过oracle字典视图我们可以查询缓存在内存中的已经执行的sql语句的执行计划.在某些情况下,通过explain p原创 2014-01-06 10:04:10 · 1188 阅读 · 2 评论 -
ORACLE使用STORED OUTLINE固化执行计划--CURSOR_SHARING
oracle执行计划存储纲要和SQL语句之间是一一对应的关系,因此如果我们改变了sql语句中的谓词条件,存储纲要就会失去作用或者说我们需要创建新的存储纲要来巩固执行计划,为了避免这种情况,我们可以使用变量来替代文本信息。在没有使用绑定变量的情况下:SQL> show userUSER 为 "EASY1"SQL> select * from tab;TNAME TA原创 2014-01-03 14:21:32 · 1339 阅读 · 0 评论 -
ORACLE使用STORED OUTLINE固化执行计划--私有和公有
利用存储纲要可以固定sql执行计划,存储纲要有一系列与sql语句相关的optimizer hints构成。当存储纲要可用是,oracle会自动根据这些hint生成对应sql语句的执行计划。存储纲要可以分为私有和公有,同时我们可以对存储纲要划分不同的类别(categories),并指定那一类存储纲要发挥作用,这无疑会方便dba的管理工作。存储纲要一旦存储,就不会随后续系统配置或者统计信息的变化而变化原创 2014-01-03 10:49:58 · 2349 阅读 · 0 评论 -
使用DBMS_STATS来收集统计信息
原文参见:http://www.idevelopment.info/data/Oracle/DBA_tips/Tuning/TUNING_17.shtmloverviewOracle's cost-based optimizer (COB) uses statistics to calculate the selectivity (the fraction of rows in a tab翻译 2013-12-17 16:55:22 · 3348 阅读 · 0 评论 -
Why are some of the tables in my query missing from the plan?
原文:http://optimizermagic.blogspot.com/2008/06/why-are-some-of-tables-in-my-query.htmlIn 10gR2, we introduced a new transformation, table elimination (alternately called "join elimination"), which翻译 2013-12-30 17:28:49 · 1039 阅读 · 0 评论 -
Extended Optimizer Statistics in Oracle 11g Improve Performance
oracle优化器会利用统计信息来选择最优或者次优的执行计划,在确定执行计划的过程中,oracle可以非常很好的分析每个表列的数据分布特征,但是对于列与列之间的某些关联关系,oracle是无能为力的,例如城市名称和邮编之间的对应关系。值得庆幸的是,在oracle11g中,引入了基于列组合和关系表达式的统计分析功能,这无疑为优化器做出更正确的抉择提供了有力的支持。我们称扩展统计信息功能。对于扩展原创 2013-12-30 09:16:37 · 1268 阅读 · 0 评论 -
oracle event ----- Log file sync
当user session 提交(commit)时,user session会通知LGWR进程将redo buffer中的信息写入到redo log file,当LGWR进程完成写操作后,LGWR再post(通知)user session 写操作已经完成,user session 接收到LGWR的通知后提交操作才完成。因此user session 在没有收到LGWR post(通知)之前一致处原创 2013-11-06 17:20:47 · 2080 阅读 · 0 评论 -
深入分析各种raid模式
本文从低层原理上,深入透析了目前存在的7种模式的组成原理,结构,并深刻分析了各种级别相对于单盘IO速率的变化。Raid0Raid0是这样一种模式:我们拿5块盘的raid0为例子。 上图中5个竖条,分别代表5个磁盘上的一个extent,也就是竖条的意思,每个磁盘被逻辑的划分为N个这种extent。然后再在磁盘相同偏移的extent上,横向逻辑分割,形成s转载 2013-11-01 15:28:55 · 2870 阅读 · 0 评论 -
DBMS_SYSTEM包的使用
10g以前,对别的session做10046跟踪,sql_trace跟踪需要用到dbms_system这个包,可以我在10gR2官方文档上面没有找到这个包的解释,然而这个包很重要,下面收集一些有用的过程,有备无患。dbms_system.get_env(var IN VARCHAR2, val OUT VARCHAR2) 这个过程返回ORACLE的环境变量例如:转载 2013-10-10 17:11:49 · 3285 阅读 · 0 评论 -
oracle时间模型
首先让我们来看一下oracle对于时间模型的解释:Time Model StatisticsWhen tuning an Oracle database, each component has its own set of statistics. To look at the system as a whole, it is necessary to have a common sca原创 2013-12-25 08:58:05 · 1695 阅读 · 0 评论