ORACLE 性能调优
文章平均质量分 59
ORACLE 性能调优
雅冰石
DBA
展开
-
OEM上怎样查看某个历史时间段的数据库性能情况,慢sql等
有时某个时间段cpu使用率高或者有其他问题,想看下那个时间段的top sql,可以使用OEM看ASH。根据筛选谓词去原sql里查找,可以看到具体慢在哪里。原创 2024-05-17 11:59:04 · 341 阅读 · 1 评论 -
oracle sql monitor简单使用说明
activity活动这里显示时间大多花在了哪里。原创 2024-04-26 15:30:51 · 553 阅读 · 0 评论 -
查看oracle当前性能sql
查看oracle当前性能sql原创 2023-02-13 13:43:17 · 500 阅读 · 0 评论 -
oracle direct path read等待事件处理案例
生成ASH报告, 查看该等待事件对应的慢sql。原创 2023-01-31 09:19:31 · 566 阅读 · 0 评论 -
使用AWR报告诊断oracle性能案例
一 问题描述同事反馈某台oracle数据库压力比较大,服务器cpu使用率达到了70%多,想让看看怎样优化。二 问题排查思路2.1 生成AWR性能诊断报告#登录数据库su - oraclesqlplus / as sysdba#生成awr报告:@?/rdbms/admin/awrrpt.sql示例:这里想分析11月24日9点至22点的oracle性能状况,因此需要指定该时间对应的snap Id:文件默认放在/home/oracle下。将.原创 2021-11-25 18:35:45 · 1295 阅读 · 0 评论 -
Oracle优化——单表分页优化
错误的写法:select * from (select t.*,rownum rn from (需要分页的sql)t ) where rn >=1 and rn <=10;正确的写法:select * from (select * from (select a.*,rownum rn from (需要分页的sql) a ) where rownum <=10) where rn >=1;--参考了Oracle优化——单表分页优化_一个笨小孩_51CTO博客...转载 2021-11-03 15:25:07 · 185 阅读 · 0 评论 -
使用SQL Tuning Advisor(STA)为sql提供优化建议
在Oracle10g之前,优化SQL是个比较费力的技术活,不停的分析执行计划,加hint,分析统计信息等等。在10g中,Oracle推出了自己的SQL优化辅助工具:SQL优化器(SQLTuningAdvisor:STA),它可以给出优化建议。使用STA一定要保证优化器是CBO模式下。一 创建优化任务可以通过传入文本来获取相应的优化建议,也可以通过sql_id方式获取。1.1 传入文本方式DECLAREmy_task_nameVARCHAR2(30);...转载 2020-05-22 16:03:50 · 1218 阅读 · 0 评论 -
查看系统 是否存在绑定变量问题
绑定变量,通常情况是指OLTP,OLAP一般不赞成使用 创建一张表: create table t1 as select sql_text from v$sqlarea; 为表T1 增加一个字段: alter table t1 add sql_text_wo_constants varchar2(2000);转载 2014-12-01 12:00:58 · 728 阅读 · 0 评论 -
v$LOCK中ID1,ID2含义
原文转自:http://space.itpub.net/519536/viewspace-693689 在诊断有关锁等待这种数据库等常见故障的时候经常会用到V$LOCK视图,这个视图中的ID1和ID2的含义经常被提及。了解这两个字段的含义对理解V$LOCK视图很有意义。 本文简单对V$LOCK视图中的ID1和ID2含义进行描述和探索。1.Oracle官方文档中的描述参考链转载 2014-12-01 11:13:32 · 3393 阅读 · 0 评论 -
如何生成Oracle AWR报告
Oracle性能分析入门学习中,遇到Oracle数据库的性能问题,一般首要的步骤就是导出AWR的分析报告,AWR是10g中新引入的一个工具,在这之前一般是利用statspack。要导出AWR报告,只要利用Oracle的一个脚本即可以完成,下面是我利用script录制的一段导出AWR report的过程。首先进入$ORACLE_HOME/rdbms/admin目录,在sqlplus下运行@awr转载 2014-11-26 15:11:47 · 887 阅读 · 0 评论 -
不可见索引
默认情况下,当我们创建索引后,数据库就会自动的识别到该索引,并开始在成本估算中纳入创建的索引,不可见索引可是控制优化器是否对索引进行可见。那么不可见索引的用处就是,有时候当我们在创建一个索引往往对一个或是几个sql的执行存在性能提升,也许会对其他sql执行存在弊端 ,如果使用不可见索引,可以在优化器使用该索引和不使用该索引之间进行选择,从而便于我们决定索引的创建与否。其他在我们删除一个索引的时转载 2015-03-17 11:11:09 · 796 阅读 · 0 评论 -
Oracle AWR报告指标全解析
啥是AWR? AWR (Automatic Workload Repository)一堆历史性能数据,放在SYSAUX表空间上, AWR和SYSAUX都是10g出现的,是Oracle调优的关键特性; 大约1999年左右开始开发,已经有15年历史默认快照间隔1小时,10g保存7天、11g保存8天; 可以通过DBMS_WORKLOAD_REPOSITOR转载 2014-11-27 15:02:25 · 4420 阅读 · 0 评论 -
深入理解Oracle直方图
直方图是一种按数据出现的频率来进行分类存储的方法.在oracle中直方图是用来描述表中列数据的分布情况.每一个sql在被执行前都要经过优化这一步骤那么在优化器给出一个最优执行计划之优化器应该要知道sql语句中所引用的底层对象的详细信息.直方图描述的对象包括列中不同值的数量和它们出现的频率.现在存储每一个不同值和它出现的频率是不可行的,特别是对于大表来说列中有上万个不同值,oracle使用直转载 2015-01-30 15:20:41 · 882 阅读 · 0 评论 -
Oracle 5种索引访问方式浅析
本文主要讨论以下几种索引访问方法:1.索引唯一扫描(INDEX UNIQUE SCAN)2.索引范围扫描(INDEX RANGE SCAN)3.索引全扫描(INDEX FULL SCAN)4.索引跳跃扫描(INDEX SKIP SCAN)5.索引快速全扫描(INDEX FAST FULL SCAN)索引唯一扫描(INDEX UNIQUE SCAN)通过这种索引访问数据的转载 2014-12-10 14:42:33 · 831 阅读 · 0 评论 -
ORACLE复合索引
--复合索引又名联合索引,组合索引。在Oracle中可以创建组合索引,即同时包含两个或两个以上列的索引。在组合索引的使用方面,Oracle有以下特点: 1、 当使用基于规则的优化器(RBO)时,只有当组合索引的前导列(即第一个列)出现在SQL语句的where子句中时,才会使用到该索引; 2、 在使用Oracle9i之前的基于成本的优化器(CBO)时, 只有当组合索引的前导列转载 2014-12-10 11:55:31 · 1773 阅读 · 0 评论 -
SP2-0618: 无法找到会话标识符。启用检查 PLUSTRACE 角色
SQL> SET AUTOTRACE ON STATISTICS;SP2-0618: 无法找到会话标识符。启用检查 PLUSTRACE 角色SP2-0611: 启用 STATISTICS 报告时出错解决办法:以SYSDBA用户登录,运行两个脚本:SQL> @e:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\utlxplan.sql原创 2013-10-23 18:48:34 · 860 阅读 · 0 评论 -
ORA-00988:missing or invalid password (口令缺失或无效)
今天,想生成SP报告,在安装STATS(@?/rdbms/admin/spcreate.sql)时,让输入密码,我输入了123,于是,出现了该错误。出错原因:在设置密码时,注意不要以数字开头,否则您将会遇到 ORA-00988 missing or invalid password (口令缺失或无效) 错误。而我,就犯了这个错误!解决办法:改为字符形式的密码即可。原创 2013-07-05 10:22:27 · 4409 阅读 · 0 评论 -
DBMS_MONITOR简单使用介绍
在具有连接池或共享服务器的多层环境中,一个会话可以跨越多个进程,甚至跨越多个实例。DBMS_MONITOR是在Oracle 10g中引入的内置的程序包,通过该程序包可以跟踪从客户机到中间层、再到后端数据库的任何用户的会话,从而可以较为容易地标识创建大量工作量的特定用户。DBMS_MONITOR取代了传统的跟踪工具,例如DBMS_ SUPPORT。需要具有DBA角色才可以使用DBMS_MONITOR转载 2013-06-17 12:49:04 · 2048 阅读 · 0 评论 -
Oracle中查找阻塞与被阻塞SID的方法
在Oracle中,会经常遇到阻塞与被阻塞的情况.查找阻塞与被阻塞的方法主要有下面几种:一.通过查找v$lock和v$locked_object这是最常用的也是最直接的方法SQL> select sid,block from v$lock where block=1;SID BLOCK---------- ----------252 1 --可以看出,SID=25转载 2014-11-26 15:26:56 · 3278 阅读 · 0 评论 -
查询oracle最耗资源的sql语句
1、查询当前系统中正在执行的sql:SELECT osuser, username, sql_text from v$session a, v$sqltext b where a.sql_address =b.address order by address, piece;2、查找死锁的语句:SELECT l.session_id sid, s.serial#, l.locked_转载 2014-11-26 15:14:56 · 4210 阅读 · 0 评论 -
怎样查看最消耗资源的sql语句 与 ora-00031:session marked for kill
方法一:1、statspack-- 在你库上业务最忙得时候抓15分钟的report,看里面的top sql方法二:我们可以首先使用top等工具,找到最好资源的进程(记住进程号),例如,操作系统进程号为2796,然后根据这个进程号(v$process.spid)在v$process中找到进程地址(v$process.addr),然后根据这个地址在v$session中找到相应的sid(v$原创 2013-07-03 16:27:43 · 1239 阅读 · 0 评论 -
LINUX下性能分析工具简单介绍
linux下常见的性能分析工具介绍发布时间:2008-03-28 08:00:00 来源: ChinaUnix博客 作者: ChinaUnix博客 点击:457工具介绍-vmstatvmstat是一个很全面的性能分析工具,可以观察到系统的进程状态、内存使用、虚拟内存使用、磁盘的IO、中断、上下问切换、CPU使用等。系统性能分析工具中,我使用最多的是这个,除了转载 2013-07-03 02:20:32 · 1097 阅读 · 0 评论 -
linux下top命令使用
TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定.top - 12:38:33 up 5转载 2013-07-03 02:47:23 · 1026 阅读 · 0 评论 -
Oracle SQL Trace 和 10046 事件
一. SQL_TRACE 当SQL语句出现性能问题时,我们可以用SQL_TRACE来跟踪SQL的执行情况,通过跟踪,我们可以了解一条SQL或者PL/SQL包的运行情况,SQL_TRACE命令会将SQL执行的整个过程输出到一个trace文件中,我们可以读这个trace 文件来了解在这个SQL执行过程中Oracle 都做了哪些操作。 可以通过sql命令启动SQL_TRACE,或者在初始转载 2013-06-17 13:21:41 · 1316 阅读 · 0 评论 -
使用dbms_monitor包收集执行信息和trace
一。可以用来收集的条件 1.client identifier --客户端表示,可以通过dbms_session.set_identifier来设置 2.Service 3.module ---指定一个模块 4.action ---指定一个行为,如insert,update等等 5.session转载 2013-06-17 12:34:13 · 1093 阅读 · 0 评论 -
扩展的sql追踪
许多数据库"调优人员"从来不问,"是什么让这个程序运行了这么长时间?"相反,他们会参考检查内容清单,并试图阻止错误发生: 检查所有Oracle块请求是否都由数据库缓存提供服务 检查是否有全表扫描 检查所有排序是否都在内存中进行 检查重做日志是否与其他所有数据库文件进行了适当的隔离 等等。 对于某些工作来说,使用检查内容清单也许很好。但是对于判断性能问转载 2013-05-29 14:02:30 · 956 阅读 · 0 评论 -
Tkprof: 分析ORACLE跟踪文件并且产生一个更加人性化清晰的输出结果的可执行工具
Tkprof: 分析ORACLE跟踪文件并且产生一个更加人性化清晰的输出结果的可执行工具TKPROF使用步骤1.设置参数文件设置三个参数timed_staticstices user_dump_dest max_dump_file_sizetimed_staticstices 用于启动或禁止对定时统计信息(如CUP时间、占用时间),以及动态性能表中多种统计信息的收集功能alte转载 2013-05-29 14:22:08 · 898 阅读 · 0 评论 -
alter system/session set events相关知识
格式:alter system|session set events ‘[eventnumber|immediate] trace name eventname [forever] [, level levelnumber] : …….’通过:符号,可以连续设置多个事件,也可以通过连续使用alter session set events来设置多个事件。 格式说明:eventnumber转载 2013-06-13 15:15:10 · 776 阅读 · 0 评论 -
oracle等待事件
之前整理过一篇文章: Oracle 等待事件 http://blog.csdn.net/tianlesoftware/archive/2010/05/31/5635934.aspx 一.等待事件的相关知识: 1.1 等待事件主要可以分为两类,即空闲(IDLE)等待事件和非空闲(NON-IDLE)等待事件。1). 空闲等转载 2013-07-05 13:22:08 · 946 阅读 · 0 评论 -
ORACLE收集统计信息
优化器统计范围:表统计; --行数,块数,行平均长度;all_tables:NUM_ROWS,BLOCKS,AVG_ROW_LEN;列统计; --列中唯一值的数量(NDV),NULL值的数量,数据分布; --DBA_TAB_COLUMNS:NUM_DISTINCT,NUM_NULLS,HISTOGRAM;索引统计;--叶块数量,等级,聚簇因子;转载 2013-10-24 15:20:07 · 1271 阅读 · 0 评论 -
Oracle怎样查看死锁
oracle死锁问题一直困扰着我们,下面就教您一个oracle死锁的检查方法,如果您之前遇到过oracle死锁方面的问题,不妨一看…… oracle死锁问题一直困扰着我们,下面就教您一个oracle死锁的检查方法,如果您之前遇到过oracle死锁方面的问题,不妨一看。 一、数据库死锁的现象 程序在执行的过程中,点击确定或保存按钮,程序没有响应,也没有出现报错。 二、orac转载 2014-11-26 15:07:24 · 1774 阅读 · 0 评论 -
ORALE实时查询最消耗CPU资源的SQL语句
1. 先通过top命令查看产用资源较多的spid号 2.查询当前耗时的会话ID,用户名,sqlID等:select sid,serial#,machine,username,program,sql_hash_value,sql_id, to_char(logon_time,'yyyy/mm/dd hh24:mi:ss') as login_time from v$ses转载 2014-11-26 15:30:04 · 1201 阅读 · 0 评论 -
ORACLE常见等待事件及处理方法
我们可以通过视图v$session_wait来查看系统当前的等待事件,以及与等待事件相对应的资源的相关信息,从而可确定出产生瓶颈的类型及其对象。v$session_wait的p1、p2、p3告诉我们等待事件的具体含义,根据事件不同其内容也不相同,下面就一些常见的等待事件如何处理以及如何定位热点对象和阻塞会话作一些介绍。 db file scattered read DB 文件分散读取 (太多转载 2014-03-10 05:38:07 · 921 阅读 · 0 评论 -
表连接方式
在多表联合查询的时候,如果我们查看它的执行计划,就会发现里面有多表之间的连接方式。 之前打算在sqlplus中用执行计划的,但是格式看起来有点乱,就用Toad 做了3个截图。 从3张图里我们看到了几点信息:1. CBO 使用的ALL_ROWS模式Oracle Optimizer CBO RBOhttp://转载 2013-11-10 13:18:20 · 858 阅读 · 0 评论 -
嵌套循环连接
这里介绍一下嵌套循环 (Nested Loops 简称NL) 的连接方式。 嵌套循环,顾名思义就是将一个表为出发点,将该表全部记录逐条去遍历另外一张表的记录,符合条件的就是写入结果集。 www.2cto.com 例如:select a.*, b * from EMP a, DEPT b where a.DEPTNO = b.DEPTNO转载 2013-11-09 10:52:57 · 4433 阅读 · 0 评论 -
oracle怎样清空缓冲区缓存
在Oracle9i里,Oracle提供了一个内部事件,用以强制刷新Buffer Cache,其语法为:alter session set events 'immediate trace name flush_cache level 1';或者:alter session set events = 'immediate trace name flush_cache';转载 2013-10-23 18:41:37 · 7423 阅读 · 0 评论 -
组合索引怎样选择引导列示例
有这样一个SQL select count(*) from t1,t2 where t1.id=t2.id and t1.owner='SCOTT'; id列选择性很高,owner选择性很低 要优化它很简单,只需要在t1表上建立一个组合索引(owner,id),在t2表上建立一个索引(id) 现在要讨论的是我们应该怎么建立组合索引,哪一列(owner,id)应该放在最前面?转载 2013-10-27 20:02:17 · 1441 阅读 · 0 评论 -
ORACLE聚簇因子
我们在查询索引状态的时候,通常会用到user_indexes这张表,这张表中有一列(CLUSTERING_FACTOR 聚簇因子),这里简单的介绍下聚簇因子的意思,大家知道数据表中的数据都是无序的存在库中,当我们在对数据进行检索的时候,查找起来很是耗费资源,于是我们就需要为表创建索引,索引的作用就是把表中的数据按照一定的顺序排列保存起来,于是就出现了一个问题,有的表中的数据和索引想要排列的顺序很是转载 2013-10-26 17:30:35 · 813 阅读 · 0 评论 -
alter session set events相关知识(二)
一、Oracle跟踪文件 Oracle跟踪文件分为三种类型,一种是后台报警日志文件,记录数据库在启动、关闭和运行期间后台进程的活动情况,如表空间创建、回滚段创建、某些alter命令、日志切换、错误消息等。在数据库出现故障时,应首先查看该文件,但文件中的信息与任何错误状态没有必然的联系。后台报警日志文件保存BACKGROUND_DUMP_DEST参数指定的目录中,文件格式为SIDALRT.转载 2013-06-13 15:27:33 · 755 阅读 · 0 评论