
ORACLE数据库性能优化
文章平均质量分 56
执笔画情ora
数据库管理系统
展开
-
Oracle数据库管理-delete数据导致空间未释放优化
select * From table 非常缓慢,而查询的数据量为0。原创 2024-11-18 15:58:38 · 371 阅读 · 0 评论 -
Oracle数据库故障处理-swap占用较高,AIX内存溢出
主机hang死,而且使用vmstat命令发现b列产生大量的值。原创 2023-09-21 16:36:24 · 703 阅读 · 0 评论 -
Oracle数据库性能优化-ora-20005统计信息被锁定
版权声明:本文为优快云博主「cqszpx」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.youkuaiyun.com/cqszpx/article/details/123052072。注:stattype_locked为空代表统计信息未锁定,为all表示表的统计信息被锁。异常原因:查询test表统计信息stattype_locked值,发现统计信息被锁定。在手工更新统计信息时,报ORA-20005异常。处理方案:将统计信息解锁,然后在执行更新。转载 2023-07-05 09:18:07 · 816 阅读 · 0 评论 -
Oracle数据库性能优化-Oracle12c新特性TABLE ACCESS BY INDEX ROWID BATCHED
数据库使用从索引获取的 rowid 来查找 employees 表中的相应行,然后检索它们。步骤 1 中显示使用从索引中检索的 rowid进行BATCHED访问,数据库将对从索引中检索的rowid进行排序,然后按块顺序访问行,从而减少数据库必须访问的块的次数以降低资源的消耗。Oracle 12c中新增通过ROWID BATCHED访问数据块的方式,优化原来使用单个rowid进行数据块访问方式带来的资源消耗及对数据块的扫描次数,即TABLE ACCESS BY INDEX ROWID BATCHED特性。转载 2023-04-12 10:52:08 · 597 阅读 · 0 评论 -
Oracle数据库优化-列值大部分为null而谓词取非null值
今日对一例sql进行分析优化列值大部分为null。而检索的sql语句只是需要部分不为null值得数据行。我们知道1 null值 是不能被索引的。所以如果针对此列创建索引,索引值会根据非null值进行存储,而且数据非常少,然后进行rowid检索,检索效率肯定比全秒扫描快的。于是在此列上创建索引,则针对非null值得检索使用索引效率会很高。create index idx111 on t(eid);null值行占有将近400W行。非null值占用也就100-300行,索引创建索引是原创 2022-02-11 16:01:47 · 556 阅读 · 0 评论 -
Oracle数据库新特性11G-密码延迟验证。。。。
http://www.itpub.net/thread-1606530-1-1.html系统:LINUX数据库版本:--------------------------------------------------------------------------------Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit ProductionPL/SQL Release 11.2.0.3.0 - Productio转载 2022-01-04 10:02:28 · 315 阅读 · 0 评论 -
Oracle数据库性能优化-表连接与优化器(基于ORACLE数据库sql优化)
1 嵌套循环连接条件1: 如果驱动表所对应的驱动结果集的记录数较少 ,同时在被驱动的表的连接列又存在唯一性索引 (或者在被驱动表的连接列有选择性非常好的非唯一索引)那么使用嵌套循环连接。如果驱动表对应的驱动结果集对应的记录数较大,则即使连接列存在索引,效率也不会高。条件2:驱动结果集为大表,通过谓词条件筛选后,能够将驱动结果集降低。优点:嵌套循环连接相比其他连接,可以实现快速响应,即它第一时间返回已经满足条件的记录行数。总结:较小的驱动结果集,被驱动表连接列存在选择性比较好的索引2.原创 2021-02-02 15:55:03 · 415 阅读 · 0 评论 -
oracle数据库性能优化- 执行计划异常案例总结
1. hash 连接仅仅能用在等值连接条件2. 驱动表的选择对运行效率及性能有影响3. 驱动表和被驱动表最多被訪问一次30000,,30000 ,190000;--HASH 连接,没有好的索引,原创 2021-01-25 16:10:37 · 366 阅读 · 0 评论 -
oracle数据库性能管理-执行计划(全表扫描),实际event db file seq read 单块读导致性能低下分析
问题现象今天y应用反馈 查询减慢。查询结构如下:A表通过全表扫描+谓词条件筛选 剩余600行数。B表有索引,索引顺序扫描,存在4000条记录。A和B表进行连接,采用HASH JOIN方式进行连接,驱动表为A。但是以A为驱动表发现,单独查询过程采用全表扫描的方式,但是在v$session中查询对应的event 为db file seq read单块读,效率较低。(但是查询成功后,数据进入内存SGA,在查询就恢复正常)1 怀疑为行链接导致。...原创 2021-01-21 16:30:04 · 222 阅读 · 0 评论 -
Oracle性能优化-执行计划(不走合适的索引)
1 优化执行sql类似脚本如下:select * from t where time>sysdate-1 and sex='男';创建索引如下:create index idx1 on t(TIME);CREATE INDEX IDX2 ON (SEX);在实际业务中执行sql语句时,发现执行计划采用索引 IDX2而不是IDX1. 在采集统计信息后仍然使用IDX2.优化方案:由于时间固定,可以直接采用hint的方式制定执行路径select /*+index(t原创 2021-01-05 16:17:44 · 760 阅读 · 0 评论 -
ORACLE数据库内存管理-CBC latch总结
1 全表扫描的CBC行为。segment header中包含了自由空间和HWM信息,在全表扫描和update、delete、insert操作都需要访问segment header,测试验证中不同版本的oracle表现是不同的。oracle 11.2.0.1 for windows 访问段头获得独占模式的CBC latch,其他block共享模式CBC block。oracle 10.2.0.1 for linux 访问段头获得独占模式的CBC latch,其他block独占模式CBC b原创 2020-11-11 10:59:53 · 591 阅读 · 0 评论 -
Oracle数据库故障分析-性能分析(网络流量。。。带宽耗尽)
1 活动会话历史趋向select to_char(sample_time,'yyyy-mm-dd hh24:mi:ss'),count(1)from dba_hist_active_sess_historywhere sample_time>sysdate-2/24and sample_time<sysdate-1/24group by to_char(samp...原创 2020-01-16 15:37:49 · 967 阅读 · 0 评论 -
ORACLE执行计划管理-使用outline方式创建profile绑定执行计划。
explain plan for变量赋值的sql语句commit;Plan hash value: 1880946022------------------------------------------------------------------------------------------------------------------| Id | Operatio...原创 2019-08-02 17:48:58 · 844 阅读 · 0 评论 -
Oracle数据库性能优化-max(),MIN()分析优化
原始sqlSELECT MAX(OBJECT_ID),MIN(OBJECT_ID) FROM T1;进程如下改写。select (select MAX(OBJECT_ID) from t1),(select min(OBJECT_ID) from t1) from dual;原创 2020-09-15 13:55:08 · 1545 阅读 · 0 评论 -
Oralce性能优化-绑定变量窥视
查看Oracle SQL绑定变量方bai法如下:alter session set nls_date_format = ‘yyyy-mm-dd,hh24:mi:ss’;set linesize 400col sql_Id format a20col name format a20col datatype_string format a14col value_string format a20–这个dusql从内存中读zhi取绑定变量值信息,dao若是不在内存中,则使用下一个sqlselect原创 2020-09-11 15:57:39 · 370 阅读 · 0 评论 -
Oracle数据库性能优化-优化案例分析总结V1
1 驱动表选择是否正确。2 使用索引不合理导致产生大量的逻辑读取**(cpu消耗殆尽)**3 是否可以创建索引,避免全表扫描。4 是否可以改写语句或者业务。(not in 到not exists的改写,列为非空)...原创 2020-09-04 15:06:38 · 292 阅读 · 1 评论 -
ORACLE性能优化-not in与 not exists分析
1、对于not exists查询,内表存在空值对查询结果没有影响;对于not in查询,内表存在空值将导致最终的查询结果为空。2、对于not exists查询,外表存在空值,存在空值的那条记录最终会输出;对于not in查询,外表存在空值,存在空值的那条记录最终将被过滤,其他数据不受影响。3 not exists语句很显然就是一个简单的两表关联,内表与外表中存在空值本身就不参与关联,在CBO(基于成本的优化器)中常用的执行计划是hash join,所以它的效率完全没有问题。4 关联谓词是filter,转载 2020-09-03 16:00:04 · 1986 阅读 · 0 评论 -
ORALCE数据库性能优化-执行计划总结(影响因素)
1 统计信息。2 绑定变量窥视3 自适应绑定变量。411g新特性之基数反馈(Cardinality Feedback)A5 STA6 SPA7 sql profile原创 2020-07-31 13:56:42 · 689 阅读 · 0 评论 -
Oracle数据库11G新特性-Cardinality Feedback
ORALCE11G新特性之Cardinality Feedback概述在Oracle11gR2的版本上推出了基数反馈(Cardinality Feedback 以后简称CFB)功能,通过这个特性,对于某些查询在第一次执行时,如果CBO发现根据统计信息估算出的基数(Computed cardinality)和SQL执行时的实际值差距很大的情况发生时,在SQL下次执行时,会根据实际值调整基数,重新生成执行计划。Cardinality Feedback基数反馈是版本11.2(11.2.0.1及以后)中.原创 2020-06-29 17:09:43 · 708 阅读 · 0 评论 -
Oracle数据库优化-标量子查询改写优化
改写后4.不等连接的标量子查询改写(一)转载 2020-06-12 14:02:30 · 1230 阅读 · 0 评论 -
Oralce数据库分区技术-11G普通分区表转化为间隔分区表
--创建普通范围分区表CREATE TABLE clg_range_table2(req_num NUMBER NOT NULL,req_date DATE NOT NULL,status VARCHAR2(2) not NULL)PARTITION BY RANGE(req_date)(PARTITION p1 VALUES LESS THAN(to_date('20140101',...原创 2018-06-21 16:22:42 · 813 阅读 · 0 评论 -
数据库管理-emcp_MON cpu异常占用分析
在客户的一套AIX5.3的操作系统上有一个格外显眼的进程,说它显眼是因其占用的CPU资源达到10.4%,是emcp_mon进程。如topas的输出:Name PID CPU% PgSp Owneremcp_mon 336084 10.4 1.0 root Oracle 852134 0.8 6.4 oracleoracle 45...转载 2020-02-15 09:53:47 · 547 阅读 · 0 评论 -
oracle数据库优化-性能优化流程及目标
数据库优化目标目标根据角色的不同,数据库优化分为以下几个目标: 业务角度(关键用户): 减少用户页面响应时间 数据库角度(开发): 减少数据库SQL响应时间 数据库服务器角度(运维): 充分使用数据库服务器物理资源 减少数据库服务器CPU使用率 减少数据库服务器IO使用率 减少数据库服务器内存使用率 指标 SQL平均响应时间变短 优化前:数据库...转载 2020-01-17 11:34:00 · 605 阅读 · 0 评论 -
oracle数据库优化-直方图
1 直方图定义 在oracle数据库中,CBO会默认认为数据在最小值和最大值之间是均匀分布的,并且会按照均匀分布原则计算目标列查询条件的可选择率,计算成本选择执行计划,但是目标列的数据是均匀分布这个原则并不是正确的。在实际的系统中,我们很容易看到一些目标列的数据分布是不均匀的,甚至极度偏斜、分布极度不均衡,对这样的列如果按照均匀分布原则去计算可选择率与cardinality,并根据此计...转载 2020-01-02 00:17:05 · 514 阅读 · 0 评论 -
oracles数据库优化-统计信息
1 统计信息分类oracle数据库里面得统计信息可以分为一下6类表统计信息。 索引统计信息。 列统计信息。 系统统计信息。 数据字典统计信息。 内部对象统计信息。表统计信息用于描述表得详细信息,例如表得记录数、表块数量、平均行长度等。索引统计信息描述索引得详细信息,索引层数、叶子块得数量、聚簇因子等信息。列统计信息描述表列得详细信息,列得distinct值,列得n...原创 2020-01-01 20:30:21 · 380 阅读 · 0 评论 -
oracle数据库优化-热点块处理优化
热块概述当一个会话需要访问一个数据块,而这个数据块正在被另一个用户从磁盘读取到内存中或者这个数据块正在被另一个会话修改时,当前的会话就需要等待,就会产生一个buffer busy waits等待,也伴随着Latch争用。如果太多的会话去访问相同的数据块导致长时间的buffer busy waits等待,通常表现形式为CPU使用率很高,但吞吐量很低。造成热快的原因可能是数据库设置导致或者重复执行的...转载 2019-12-24 23:35:17 · 2040 阅读 · 2 评论 -
oracle数据库优化-热点块
本文转自网络:1、热点块的定义数据库的热点块,从简单了讲,就是极短的时间内对 少量数据块进行了过于频繁的访问。定义看起来总是很简单的,但实际在数据库中,我们要去观察或者确定热点块的问题,却不是那么简单了。要深刻地理解数据库 是怎么通过一些数据特征来表示热点块的,我们需要了解一些数据库在这方面处理机制的特性。2、数据缓冲区的结构我 们都知道,当查询开始的时候,进程首先去数据缓冲区中查找...转载 2019-12-24 23:30:52 · 534 阅读 · 0 评论 -
oracle数据库优化-视图合并测试
视图合并是指优化器不在将view部分当做一个独立的处理单元来单独执行,而是会将其拆开,把其定义sql语句中的基表拿出来与外部查询中的表进行合并。(相反存在/*+materized*/)。 oracle数据库中视图合并分为3种类型,简单视图合并,外连接视图合并,复杂视图合并。简单视图:不包含外连接,视图定义不包含distinct、groupby 、聚合函数等的视图...原创 2019-12-22 14:58:46 · 542 阅读 · 0 评论 -
oracle数据库优化-子查询展开
子查询展开是优化器处理子查询的目标sql的一种优化手段,它是指优化器不把子查询作为独立单元来处理。而是将子查询转换为它自身与外部表查询等价的表连接。 子查询展开通常会提高原sql的执行效率,因为如果不进行展开,那么子查询就会在其执行计划的最后一步执行,并且会走filter类型的执行计划。意味着对于外部查询存在多少条记录,子查询会当做一个独立单元来执行一次。子查询条件:SINGL...原创 2019-12-22 12:57:45 · 747 阅读 · 0 评论 -
oracle数据库优化-IO性能分析优化
在部署了ORACLE数据库的服务器上,我们大家或多或少的遇到过下列情况:1. 业务系统运行缓慢,作为系统管理员需要检查包括IO在内的系统资源,这时系统管理员、存储管理员可能得到DBA(数据库管理员)的反馈说,IO的响应时间很慢,达到了30毫秒以上,要求解决。但存储管理员检查又不存在热点盘的情况,系统的IO量就是很大,除了使用更多的RAID组来重新分布数据、更换为更高端的存储外,似乎没有太好的办法...转载 2019-12-14 21:01:44 · 4893 阅读 · 1 评论 -
ORACLE数据库优化-存储IO性能校准
通过数据库评估存储设备IO性能-Oracle 11g IO校准功能介绍---------Oracle11g IO校准功能介绍实战案例,19.5版本RACasm存储性能检测###查询数据文件是否支持异步IO#####COL NAME FORMAT A50SELECT NAME,ASYNCH_IO FROM V$DATAFILE F,V$IOSTAT_FILE IWHERE F...转载 2019-12-13 21:31:47 · 1284 阅读 · 0 评论 -
oracle数据库优化 -DBA常用Oracle数据库检查报告
DBA常用 Oracle数据库巡检脚本本文链接:https://blog.youkuaiyun.com/zfr629/article/details/87938013目录1. 检查数据库基本状况1.1. 检查Oracle实例状态1.2. 检查Oracle在线日志状态1.3. 检查Oracle表空间的状态1.4. 检查Oracle所有数据文件状态1.5. 检查无效对象1.6....转载 2019-11-28 12:31:28 · 1700 阅读 · 0 评论 -
How to Monitor and tune Open and Cached Cursors (Doc ID 1430255.1)
APPLIES TO:Oracle Server - Enterprise Edition - Version 9.2.0.8 to 11.2.0.3 [Release 9.2 to 11.2]Information in this document applies to any platform.GOALThis article deals with monitoring and ...转载 2019-10-31 13:48:12 · 154 阅读 · 0 评论 -
ORACLE性能优化-子查询优化(IN EXISTS)
1 标量子查询1 标量子查询可以修改为outer join进行优化。2 对于IN EXSTS,从原理上来讲IN操作先进行子查询操作,再进行主查询操作。 EXISTS操作是先进行主查询操作,再到子查询中进行过滤.当子查询表数据量巨大,且索引条件不好,则不宜对子查询使用distinct条件检...原创 2019-11-11 14:59:46 · 2164 阅读 · 1 评论 -
ORACLE数据库优化-分区表执行计划
分区表有很多好处,以大化小,一小化了,加上并行的使用,在loap中能往往能提高几十倍甚至几百倍的效果。当然表设计得不好也会适得其反,效果比普通表跟糟糕。为了更好的使用分区表,这里看一下分区表的执行计划。PARTITION RANGE ALL:扫描所有分区PARTITION RANGE ITERATOR:扫描多个分区,小于所有个分区数量PARTITION RANGE SINGLE:扫描单一的...转载 2019-11-11 10:59:24 · 1160 阅读 · 0 评论 -
oracle数据库优化-ORACLE分区技术
分区技术分而治之,对于hash分区能够有效缓解热点块问题(提高indexrange成本)ORACLE 分区技术分区技术可以将大表、大索引分解为更小更易管理的块,这些块被称为分区,通过分区技术可以有效的解决大表、大索引带来的问题,在VLDB环境中,分区表有助于提高数据库的可用性和可维护性。将一个分区表划分成几个易于管理的称为’分区’的部分,分区可以进一步化成分子分区。分区表上的索引可能是...原创 2019-10-16 15:23:24 · 569 阅读 · 0 评论 -
oracle数据库优化-SELECT执行查询语句的过程
1.用户进程执行一个查询语句如select * from emp where empno=78392.用户进程和服务器进程建立连接,把改用户进程的信息存储到PGA的UGA中3.语句经过PGA处理后传递给实例instance4.实例instance中的共享池处理这条语句a.库缓冲区去判断语句如何分析--软分析(快)或硬分析(慢)2.根据cbo得到执行计划,准备去执行语句.(CBO和RBO是...原创 2019-08-21 16:11:36 · 626 阅读 · 0 评论 -
共享池锁解析Metux
1 无论是硬解析还是软解析,进程都要以独占的模式获得library cache类型metux,然后才能访问HASH链,如果遭遇竞争,就会差产生等待事件,library cache :Metux X。...原创 2019-10-14 11:37:52 · 301 阅读 · 0 评论 -
oracle数据库优化-SELECT语句解析过程分析
1 打开游标(V$open_cursor),这一步主要工作是pga中为sql准备内存。2 解析。(根据sql文本的hash值,找到对应bucket,搜索bucket后的链表,查找对应的父游标句柄,然后在父游标堆0中查找子游标句柄,如果找的到进行软解析,如果找不到则进行硬解析。)3 绑定,如果使用了绑定变量,这一步必不可少,为绑定变量赋值。4 执行。5 抓取,逻辑读或者物理读取从SG...原创 2019-10-14 11:25:58 · 296 阅读 · 0 评论 -
oracle数据库优化-执行计划详细
转载地址:http://blog.itpub.net/30126024/viewspace-2141974/执行计划__获取方法、查看执行顺序、统计信息详解个人常用的获取执行计划的方法1.select * from table(dbms_xplan.display_cursor('v$sql.sql_id',v$sql.CHILD_NUMBER,'advanced')); --只有执行...转载 2019-06-25 00:45:27 · 1544 阅读 · 0 评论