
oracle_optimize
文章平均质量分 70
rudy_gao
这个作者很懒,什么都没留下…
展开
-
Oracle中的延迟块的清除方法
对于Oracle数据库的使用者,一定会遇到数据锁,用到了只是没注意理解它。这里我想在阐述一下这一概念。数据锁(这里主要指TX类型行锁)在Oracle中实际上是数据的属性,存储在块首部,称之为事务槽(ITL)。COMMIT操作的职责包括释放块上的锁,实际的释放方式即清除块上相应的事务槽,但这里存在一个性能的考量。设想一个UPDATE大量数据的操作,因为执行时间较长,一部分已修改的块已被缓冲池flus转载 2015-07-27 15:52:42 · 1154 阅读 · 0 评论 -
oracle实用工具:oradebug
1 oradebug介绍 oradebug主要是给oracle支持人员使用的,尽管很早便有,但oracle官网很少有记载。他是个sql*plus命令行工具,有sysdba的权限就可以登入,无需特别设置。他可以被用于: 1)追踪进程,或者是你的,或者是外部的转载 2014-09-17 20:39:24 · 694 阅读 · 0 评论 -
oracle in,exists,not in,not exists
--在in和exists中,oracle可以把父查询推进到子查询SQL> SELECT COUNT(*) 2 FROM T0 LT 3 WHERE EXISTS (SELECT NULL FROM T1 LA WHERE LA.T1_ID = LT.T0_ID) 4 AND LT.T0_ID IN (10000,10001,10002,10003,原创 2014-09-17 20:10:08 · 638 阅读 · 0 评论 -
SQL有外连接的时候注意过滤条件位置
发现了一个SQL确实跑得慢。该SQL 如下[html] view plaincopyprint?select * from (select u.NAME UniversityName, u.id UniversityId, count(a.SIGNUPNUMBER) p转载 2014-08-16 09:29:18 · 852 阅读 · 0 评论 -
如何加快建 index 索引 的时间
一. 先来看一下创建索引要做哪些操作:1. 把index key的data 读到内存==>如果data 没在db_cache 中,这时候很容易有大量的db file scatter read wait2. 对index key的data 作排序==>sort_area_size 或者pga_aggregate_target 不够大的情况下,需要做 disk sort, 会有大量转载 2014-08-16 11:46:01 · 703 阅读 · 0 评论 -
如何让in/exists 子查询(半连接)作为驱动表?
怎么才能让子查询作为驱动表? SQL如下:[html] view plaincopyprint?select rowid rid from its_car_pass7 v where 1 = 1 and pass_datetime >= to_date('2013-07-06 :17:46:转载 2014-08-15 17:57:36 · 705 阅读 · 0 评论 -
Oracle bulk 示例
Oracle有2个引擎来执行PL/SQL blocks 和 subprograms。那么在执行的时候,PL/SQL 引擎把DML 语句发送给SQL 引擎,然后由SQL 引擎执行,执行完毕后,SQL 引擎把结果集在发送给PL/SQL 引擎。 与bulk 相关的有2个语法:forall 和 bulk collect。 (1)FORA转载 2014-08-16 14:31:42 · 851 阅读 · 0 评论 -
oracle分页
SQL> SELECT * 2 FROM SCOTT.EMP 3 WHERE ROWID IN (SELECT RID 4 FROM (SELECT ROWNUM RN, RID 5 FROM (SELECT ROWID RID, SAL FROM原创 2014-08-07 17:46:57 · 582 阅读 · 0 评论 -
Oracle sql 调优:使用虚拟索引在生产环境测试创建索引对数据库性能的影响
虚拟索引是一种“假”索引,其定义存在于数据字典中,但不具有相应的索引段,也就是不会分配任何存储空间。利用虚拟索引,开发人员可以无需等待索引创建完成,也不需要额外的索引存储空间,就可以当做索引已经存在,累测试 SQL 语句的执行计划。如果优化器为某个SQL 语句创建的执行计划代价很高,SQL tuning advisor 可能会建议在某个列上创建索引,但是在生产环境下,我们是没法随意来创转载 2014-07-14 14:59:55 · 875 阅读 · 0 评论 -
Oracle_spatial的空间索引
空间索引1、空间索引的创建1)创建索引之前总是要为空间层插入元数据2)如果之前创建的索引失败了,必须先删除才能创建Drop index customers_sidx;创建索引:Create index customers_sidx on customers(location)Indextype is mdsys.spatial_index转载 2014-07-15 02:42:06 · 2326 阅读 · 0 评论 -
Oracle_spatial的常见错误与注意事项
1、ORA-13226:没有空间索引接口将不被支持当使用一个空间操作符时,如果没有使用空间索引导致该操作符不能被完成将会返回该错误。这可能会发生在当你使用的列上没有空间索引、或者优化器没有选择以所用为基础进行计算时。解决办法:如果在空间操作符的列上没有索引,就创建一个索引。如果优化器没有选择空间索引,那么久显式地指定index或ordered以确保空间索引被使用。例如:转载 2014-07-15 02:45:40 · 2267 阅读 · 0 评论 -
ORACLE重建索引需要考虑问题
一:考虑重建索引的场合1:表上频繁发生update,delete操作2:表上发生了alter table ..move操作(move操作导致了rowid变化)二:判断重建索引的标准 索引重建是否有必要,一般看索引是否倾斜的严重,是否浪费了空间; 那应该如何才可以判断索引是否倾斜的严重,是否浪费了空间,如下:1, 对索引进行结构分析Analyze ind转载 2014-06-21 08:15:16 · 1098 阅读 · 0 评论 -
表压缩与索引失效
1. ALTER TABLE … COMPRESS FOR OLTP此方法对现有数据不压缩,对以后的DML语句相关数据进行OLTP压缩2. Online Redefinition (DBMS_REDEFINITION)对现有和以后的数据均压缩。使用DBMS_REDEFINITION可以在线对表进行操作,可以使用并行操作。分区表的global index是个例外,需要在线重定义之后重原创 2014-06-21 07:23:01 · 1824 阅读 · 0 评论 -
ORACLE重建索引需要考虑问题
一:考虑重建索引的场合1:表上频繁发生update,delete操作2:表上发生了alter table ..move操作(move操作导致了rowid变化)二:判断重建索引的标准 索引重建是否有必要,一般看索引是否倾斜的严重,是否浪费了空间; 那应该如何才可以判断索引是否倾斜的严重,是否浪费了空间,如下:1, 对索引进行结构分析Analyze ind转载 2014-06-21 07:38:20 · 820 阅读 · 0 评论 -
收缩表段(shrink space)
--====================-- 收缩表段(shrink space)--====================一、表的增长方式 当表被创建后,随着记录的不断插入,组成表的区间会被填满,如果启用了自动扩展,则当区间填满后,会分配新的区间。假定高水 位线随着记录的增加从最左端往右端来移动,当到底部区间的尾端时,则新的区间将会被分配。转载 2014-06-19 14:57:59 · 1149 阅读 · 0 评论 -
ORACLE直接路径操作
总结:直接路径插入直接在高水位线以外分配空间,绕过了数据缓冲区,直接将数据插入进表所在数据文件中。直接路径插入不产生Redo(数据库处于NOARCHIVELOG模式下插入或者NOLOGGING属性的表格上插入)和Undo Log,依赖高水点实现回滚。 *数据库日志模式http://blog.youkuaiyun.com/fw0124/article/details/690172转载 2014-10-20 10:08:37 · 1950 阅读 · 0 评论 -
Library cache lock/pin详解
一、概述---本文是网络资料加metalink 等整理得来一个实例中的library cache包括了不同类型对象的描述,如:游标,索引,表,视图,过程,等等. 这些对象不能在他们被使用的时候改变,他们在被使用的时候会被一种library locks and pins的机制锁住. 一个会话中,需要使用一个对象,会在该对象上先得到一个library lock(null, shared o转载 2015-01-27 12:04:23 · 1165 阅读 · 0 评论 -
TKPROF解析
TKPROF命令之前我们收集的trace日志仍为Raw Trace,如果要做性能分析的话,往往要转换为TKPROF,TKPROF可以把Raw Trace转换为更易读的形式。TKPROF Command $tkprof tracefile outputfile [explain= ] [table= ] [print= ] [insert= ] [sys=转载 2015-01-30 15:13:22 · 1930 阅读 · 0 评论 -
linux的hugepage的配置-优化oracle内存 .
linux的hugepage的配置 linux虽然没有aix,hp unix那么强悍,但linux也是非常优秀的,为了提升linux的性能,它采用了很多io,memory的调度机制,linux使用内存的方式是采用vm的方式,即linux把物理内存和swap共同虚拟成内存来对外提供,有时用户看似使用内存,可实际上是使用磁盘,那如何避免使用swap磁盘空间呢?linux转载 2015-04-12 19:41:47 · 675 阅读 · 0 评论 -
log file sync 等待超高一例子
这是3月份某客户的情况,原因是服务器硬件故障后进行更换之后,业务翻译偶尔出现提交缓慢的情况。我们先来看下awr的情况。 我们可以看到,该系统的l转载 2015-05-04 10:30:48 · 686 阅读 · 0 评论 -
LOG FILE SYNC概述
log file sycn是ORACLE里最普遍的等待事件之一,一般log file sycn的等待时间都非常短 1-5ms,不会有什么问题,但是一旦出问题,往往都比较难解决。什么时候会产生log file sync等待?常见有以下几种:1)commit操作2)rollback操作3)DDL操作(DDL操作实施前都会首先进行一次commit)4)DDL操作导致的数据字典修改转载 2015-05-04 10:23:00 · 4370 阅读 · 0 评论 -
揭秘自适应游标共享技术(Adaptive Cursor Sharing)
dapter cursor sharing,自适应游标共享的引入是为了解决bind peeking在数据有明显倾斜的时候会生成次优执行计划的问题,Adapter cursor sharing使具有不同绑定变量值的SQL语句使用不同的执行计划成为可能。使用ACS前不得不提的两个概念:bind sensitive和bind aware,他们的状态体现在v$sql.is_bind_sensitive转载 2015-05-04 13:23:20 · 1030 阅读 · 0 评论 -
log file sync总结
log file sync等待时间发生在redo log从log buffer写入到log file期间。下面对log file sync做个详细的解释。何时发生日志写入:1.commit或者rollback2.每3秒3.log buffer 1/3满或者已经有1M的redo数据。 更精确的解释:_LOG_IO_SIZE 大转载 2015-05-04 10:52:19 · 1127 阅读 · 0 评论 -
mytun使用说明
一、产品安装二、Oracle数据库备份与恢复三、性能诊断、性能调优四、紧急故障排除和紧急响应服务五、数据迁移六、电话支持服务、远程拨号诊断七、系统健康检查(巡检服务)八、Oracle数据库安全性、稳定性评估建议报告九、定制数据库维护手册十、数据库补丁包服务十一、培训服务写mytun这个工具的原因:转载 2015-05-04 14:01:20 · 888 阅读 · 0 评论 -
direct path read/write (直接路径读/写)
direct path read/write (直接路径读/写):直接路径读(direct path read)通常发生在Oracle直接读数据到进程PGA时,这个读取不需要经过SGA。直接路径读等待事件的3个参数分别是file number(指绝对文件号)、first dba、block cnt数量。在Oracle 10g/11g中,这个等待事件被归于User I/O一类。db转载 2015-04-29 18:28:36 · 1399 阅读 · 0 评论 -
Linux下HugePage内存功能配置
在Linux环境性能优化实践中,HugePage是一个经常提到的方法。简单的说,HugePage就是Linux内核上一种是用内存块的方法。作为传统4K Page的替代,HugePage在大部分场景下可以提升Oracle实例的运行性能效率。 本篇介绍如何进行HugePage配置和Oracle环境使用。 1、HugePage介绍 HugePage广泛启用开始于Kernal 2.转载 2015-04-12 19:38:34 · 639 阅读 · 0 评论 -
如何诊断和解决CPU高度消耗(100%)的数据库问题
很多时候我们的服务器可能会经历CPU消耗100%的性能问题.排除系统的异常,这类问题通常都是因为系统中存在性能低下甚至存在错误的SQL语句, 消耗了大量的CPU所致.本文通过一个案例就如何捕获这样的SQL给出一个通用的方法.问题描述:系统CPU高度消耗,系统运行缓慢OS:Sun Solaris8Oracle:Oracle92031.首先通过Top命令查看转载 2015-04-12 19:47:35 · 616 阅读 · 0 评论 -
大并发连接的oracle在Linux下内存不足的问题的分析
最近一台装有Rhel5.3的40G内存的机器上有一个oracle数据库,数据库的SGA设置为20G,当运行业务时,一个业务高峰期时,发现swap频繁交换,CPU 100%,Load很高,基本体现为内存不足。此时的连接数在600个左右。按内存的计算:每个连接占用内存基本在5M,这样600个连接只占用3G内存,SGA内存20G,操作系统占用内存1G,这样总占用的内存为24G,而总共内存有40G,怎么会转载 2015-04-12 19:43:59 · 1141 阅读 · 0 评论 -
Oracle 11g新参数USE_LARGE_PAGES与AMM使用
在之前的文章(http://space.itpub.net/17203031/viewspace-774843)中,笔者介绍了如何在Linux 2.6内核中配置HugePage以及AMM与其的不兼容性。由于原理机制的差异,Oracle 11g引入的特性AMM(Automatic Memory Management)与HugePage是不可并存的。 在早期的11g版本中(11.2.0.2转载 2015-04-12 19:40:23 · 2137 阅读 · 0 评论 -
使用lock_sga和pre_page_sga参数保证SGA常驻物理内存 .
Lock_sgaLOCK_SGA locks the entire SGA into physical memory. It is usually advisable to lockthe SGA into real (physical) memory, especially if the use of virtual memory wouldinclude storing转载 2015-04-12 19:41:06 · 699 阅读 · 0 评论 -
Oracle Sequence中Cache与NoCache的区别
Oracle在创建序列(sequence)时有个参数你可以选择cache或者nocache,下面来讲一下两者的区别:先来看下创建sequence的语句:create sequence SEQ_ID minvalue 1 maxvalue 99999999 start with 1 increment by 1 cache n / nocache -转载 2015-01-26 11:38:25 · 919 阅读 · 0 评论 -
db file sequential read等待事件
”db file sequential read”单块读等待是一种最为常见的物理IO等待事件,这里的sequential指的是将数据块读入到相连的内存空间中(contiguous memory space),而不是指所读取的数据块是连续的。该wait event可能在以下情景中发生:最为常见的是执行计划中包含了INDEX FULL SCAN/UNIQUE SCAN,此时出现”db file转载 2014-06-20 13:41:42 · 665 阅读 · 0 评论 -
read by other session等待事件
今天处理客户数据库问题的时候,发现该数据库有大量的read by other session等待事件,借此记录下。首先根据文档,这个事件的解释如下:When informationis requested from the database, Oracle will first read the data from disk intothe database buffer转载 2014-06-20 13:34:35 · 705 阅读 · 0 评论 -
HASH JOIN ,MERGE JOIN ,NESTED LOOP 比较
都是网上抄的,做一下总结NESTED LOOP:对于被连接的数据子集较小的情况,嵌套循环连接是个较好的选择。在嵌套循环中,内表被外表驱动,外表返回的每一行都要在内表中检索找到与它匹配的行,因此整个查询返回的结果集不能太大(大于1 万不适合),要把返回子集较小表的作为外表(CBO 默认外表是驱动表),而且在内表的连接字段上一定要有索引。当然也可以用ORDERED 提示来改变CBO默认的驱动表转载 2014-02-28 15:53:38 · 650 阅读 · 0 评论 -
oracle函数索引
1. 函数索引能够计算出函数或表达式的值,并将其保存在索引中.用于创建索引的函数不能包含任何聚合函数(ggregate function),如果为用户自定义函数,则在声明中必须使用 DETERMINISTIC 关键字。2.要求使用基于成本的优化器.(如果是Choose,则Oracle会自动对分析了的表选择cbo)3.在自己的模式中的表上创建,须有系统特权query rewrit原创 2014-02-15 09:53:57 · 827 阅读 · 0 评论 -
OLAP&OLTP
原创 2014-02-13 14:49:51 · 591 阅读 · 0 评论 -
解决数据库慢的方法论
数据库的performance是一个长期的监控过程,不能头疼医头,脚疼医脚。数据库慢一般有三种情况1。逐渐变慢2。突然变慢3。不定时变慢第一种情况 “逐渐变慢”,要建立一个长期的监控机制。比如,写个shell脚本每天的忙时(通常9~10 etc.)定时收集os,network,db的信息, 每个星期出report对收集到的信息进行分析。 这些数据的积累,可以决定后期转载 2014-02-13 14:19:57 · 845 阅读 · 0 评论 -
ORACLE 中IN和EXISTS比较
EXISTS的执行流程 select * from t1 where exists ( select null from t2 where y = x ) 可以理解为: for x in ( select * from t1 ) loop if ( exists ( select null from t2 where y = x.x )转载 2014-02-25 10:42:15 · 625 阅读 · 0 评论 -
sql的with as高效语法
1 . with a aswith a as (select * from test) select * from a;其实就是把一大堆重复用到的SQL语句放在with as 里面,取一个别名,后面的查询就可以用它这样对于大批量的SQL语句起到一个优化的作用,而且清楚明了转载 2014-02-23 10:23:26 · 7624 阅读 · 0 评论 -
执行计划说明
1. recursive calls当执行一条SQL语句时,产生的对其他SQL语句的调用,这些额外的语句称之为''recursive calls''或''recursive SQL statements''.如:(1)我们做一条insert 时,没有足够的空间来保存row记录,Oracle 通过Recursive Call 来动态的分配空间。(2)执行DDL语句时,ORACL原创 2014-02-23 08:38:55 · 641 阅读 · 0 评论