oracle 优化
五柳-先生
宅边有五柳树,因以为号焉。
展开
-
Oracle 数据库 11g:面向 DBA 和开发人员的重要新特性 - SQL Access Advisor
SQL Access Advisor获得有关基于实际频率和使用类型(而非数据类型)进行分区、索引和创建物化视图以改进模式设计的建议。 Oracle 数据库 10g 提供了大量帮助程序(或“顾问程序”),可帮助您决定最佳操作流程。其中一个示例是 SQL Tuning Advisor,它可以提供有关查询调整以及在流程中延长整个优化过程的建议。但请考虑以下调整案转载 2014-03-22 00:49:08 · 1205 阅读 · 0 评论 -
使用SQL tuning advisor(STA)自动优化SQL
Oracle 10g之后的优化器支持两种模式,一个是normal模式,一个是tuning模式。在大多数情况下,优化器处于normal模式。基于CBO的normal模式只考虑很小部分的执行计划集合用于选择哪个执行计划,因为它需要在尽可能短的时间,通常是几秒或毫秒级来对当前的SQL语句进行解析并生成执行计划。因此并不能保证SQL语句每次都是使用最佳的执行计划。而tuning模式则将高负载的SQL语句直转载 2014-03-19 22:06:44 · 775 阅读 · 0 评论 -
高效SQL语句必杀技
No SQL,No cost. SQL语句是造成数据库开销最大的部分。而不良SQL写法直接导致数据库系统性能下降的情形比比皆是。那么如何才能称得上高效的SQL语句呢?一是查询优化器为当前的SQL语句生成最佳的执行计划,保证数据读写使用最佳路径;二是设置合理的物理存储结构,如表的类型,字段的顺序,字段的数据类型等。本文主要描述如何编写高效的SQL语句并给出示例。下面的描述主要分为三个部分,一转载 2014-03-19 22:03:17 · 505 阅读 · 0 评论 -
对比 PL/SQL profiler 剖析结果
使用PL/SQL PROFILER 剖析PL/SQL代码是快速定位PL/SQL代码段最有效的方法。在上一篇文章使用PL/SQL PROFILER 定位 PL/SQL 瓶颈代码中描述了安装PROFILER,并给出了剖析的示例。本文参照了Tom大师的代码来对比剖析前后的性能并附上其代码。 1、用于实施剖析的存储过程[sql] view plaincopyprint?转载 2014-03-20 00:09:55 · 743 阅读 · 0 评论 -
使用PL/SQL Developer剖析PL/SQL代码
PL/SQL代码性能瓶颈可以通过DBMS_PROFILER包在命令行的方式下进行剖析来直接获得。对于比较复杂的代码而言,使用图形化的界面来进行剖析无疑是首选。PL/SQL Developer依旧依赖于DBMS_PROFILER包,使用图形化界面来剖析PL/SQL代码,如匿名块,包,过程,函数等,其Profiler结果将列出该剖析代码涉及到的所有包,过程函数等并且可以按照不同的列类型进行排序等。本文转载 2014-03-20 00:09:39 · 686 阅读 · 0 评论 -
Oracle 性能相关常用脚本(SQL)
在缺乏的可视化工具来监控数据库性能的情形下,常用的脚本就派上用场了,下面提供几个关于Oracle性能相关的脚本供大家参考。以下脚本均在Oracle 10g测试通过,Oracle 11g可能要做相应调整。 1、寻找最多BUFFER_GETS开销的SQL 语句[sql] view plaincopyprint?--filename: top_sql_by_buffe转载 2014-03-20 00:08:54 · 602 阅读 · 0 评论 -
Linux/Unix shell 脚本监控磁盘可用空间
Linux下监控磁盘的空闲空间的shell脚本,对于系统管理员或DBA来说,必不可少。下面是给出的一个监控磁盘空间空间shell脚本的样本,供大家参考。 1、监控磁盘的空闲空间shell脚本[python] view plaincopyprint?robin@SZDB:~/dba_scripts/custom/bin> more ck_fs_space.sh转载 2014-03-20 00:08:41 · 989 阅读 · 0 评论 -
Linux/Unix shell 自动发送AWR report
观察Oracle数据库性能,Oracle自带的awr 功能为我们提供了一个近乎完美的解决方案,通过awr特性我们可以随时从数据库提取awr报告。不过awrrpt.sql脚本执行时需要我们提供一些交互信息,因此可以将其整合到shell脚本中来实现自动产生指定时段的awr报告并发送给相关人员。本文即是描述linux shell脚本来实现此功能。 1、shell脚本[p转载 2014-03-20 00:08:28 · 746 阅读 · 0 评论 -
Linux/Unix shell 监控Oracle告警日志(monitor alter log file)
使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,AWR report的自动邮件等。本文给出Linux 下使用 shell 脚本来监控 Oracle 告警日志(monitor alter log file)。 Linux Shell的相关参考: Linux/Unix转载 2014-03-20 00:08:09 · 1277 阅读 · 0 评论 -
使用 DBMS_PROFILER 定位 PL/SQL 瓶颈代码
对于SQL的优化,可以借助于SQL tuning advisor实现自动SQL优化与调整。而对于PL/SQL代码而言,既有SQL代码,又有PL/SQL代码,仅仅使用10046事件是远远不够的,因为可能SQL时间很短,而整个包或过程执行时间N久,而且包或过程中又嵌套有其他包,过程,函数。看得你头皮发麻。尽管没有工具可以直接作用于PL/SQL代码进行优化,但借助于PL/SQL PROFILER来定位你转载 2014-03-20 00:07:04 · 680 阅读 · 0 评论 -
SQL Tuning Advisor(STA) 到底做了什么?
SQL Tuing Advisor(STA) 是Automatic Tuning Optimizer(自动优化调整器)的一部分。在前面的文章使用SQL tuning advisor(STA)自动优化SQL中描述了SQL Tuing Advisor(STA)的相关背景并给出示例。本文主要是描述STA底层到底为我们作了什么使得SQL语句得以优化,同时演示绑定变量的情形下接受sql profile后转载 2014-03-19 13:19:18 · 578 阅读 · 0 评论 -
使用 EXPLAIN PLAN 获取SQL语句执行计划
SQL查询语句的性能从一定程度上影响整个数据库的性能。很多情况下,数据库性能的低下差不多都是不良SQL语句所引起。而SQL语句的执行计划则决定了SQL语句将会采用何种方式从数据库提取数据并返回给客户端,本文描述的将是如何通过EXPLAIN PLAN 获取SQL语句执行计划来获取SQL语句的执行计划。一、获取SQL语句执行计划的方式 1. 使用explain plan 将执行转载 2014-03-19 22:06:00 · 711 阅读 · 0 评论 -
dbms_xplan之display函数的使用
DBMS_XPLAN包包括一系列函数,主要是用于显示SQL语句的执行计划,且不同的情形下使用不同的函数来显示,如预估的执行计划则使用display函数,而实际的执行计划则是用display_cursor函数,对于awr中的执行计划,则是用display_awr函数,而SQL tuning集合中的执行计划则由display_sqlset来完成。本文主要描述DBMS_XPLAN包中displa转载 2014-03-19 22:05:33 · 690 阅读 · 0 评论 -
PL/SQL Profiler 剖析报告生成html
使用图形化界面工具实施PL/SQL Profiler 易用直观,但是并不是所有的环境都可以使用图形界面软件连接到数据库。对于只能在命令行下进行剖析又需要直观呈现剖析结果的情形,Oracle为我们提供了脚本来直接生成html文档。本文即是基于这种情形进行演示并加以说明。 有关PL/SQL Profiler的文章可以参考: 使用 DBMS_PROFILER 定位 PL/转载 2014-03-20 00:09:21 · 735 阅读 · 0 评论 -
如何用 SQL Tuning Advisor (STA) 优化SQL语句
在Oracle10g之前,优化SQL是个比较费力的技术活,不停的分析执行计划,加hint,分析统计信息等等。在10g中,Oracle推出了自己的SQL优化辅助工具: SQL优化器(SQL Tuning Advisor :STA),它是新的DBMS_SQLTUNE包。使用STA一定要保证优化器是CBO模式下。执行DBMS_SQLTUNE包进行sql优化需要有advisor的权限:SQ转载 2014-03-20 11:50:06 · 553 阅读 · 0 评论 -
Oracle Database 11g: 面向 DBA 和开发人员的重要新特性 - 通过分区进行优化
通过分区进行优化在 Oracle Database 11g中,您的分区选择现在实际上是没有限制的。参阅 TOC 系列“分而治之”— 没有能够比 Oracle 数据库的分区特性更好地阐释这个象征性原则的了。 从版本 8 开始,您就可以将一个表或索引划分成多个段,然后将它们放在不同的表空间内。该表仍作为一个 逻辑实体定址,各个分区则存储为单独的段,这就简化了数据操作。在版本 1转载 2014-03-22 00:48:46 · 690 阅读 · 0 评论 -
Oracle Database 11g: 面向 DBA 和开发人员的重要新特性 - PL/SQL 性能
PL/SQL 性能通过研究代码内联、真正的原生编译以及简单整数的用例来了解如何提高代码性能。Oracle Database 11g 引入了许多极有用的新特性用以提高 PL/SQL 代码的性能,但其中最引人注目的特性是原生编译和内部单元内联。原生编译本身不是新特性,但无需任何前提条件(如安装 C 编译器)即可使用此特性却是一项新技术。(Oracle 将这个改进的性能称为“真正的原生编转载 2014-03-22 00:48:27 · 838 阅读 · 0 评论 -
Oracle Database 10g:为 DBA 提供的最佳前 20 位的特性 - 1.闪回版本查询
第 1 周 得到电影而不是图片:闪回版本查询 不需要设置,立即识别对行的所有更改在 Oracle9i Database 中,我们看到它推出了以闪回查询形式表示的“时间机器”。该特性允许 DBA 看到特定时间的列值,只要在还原段中提供该数据块此前镜像的拷贝即可。但是,闪回查询只提供某时刻数据的固定快照,而不是在两个时间点之间被更改数据的运行状态表示。某些应用程序,如涉及到外币管理的应转载 2014-03-22 00:47:01 · 677 阅读 · 0 评论 -
Oracle Database 10g:为 DBA 提供的最佳前 20 位的特性 - 6.自动工作负载信息库
第 6 周 自动工作负载信息库 学习使用新的特性,这些特性采集数据库性能统计数据和量度,以供分析和调整,并显示在数据库中花费的准确时间,甚至保存会话信息当您有数据库性能问题时,要解决它您首先要作的是什么?一种常见的方法是看是否存在一种模式:回答诸如“相同的问题是否重复出现?”,“它是否在某个特定的时间段出现?”和“两个问题之间是否有联系?”之类的问题,将几乎总会带来更好的诊断结果。转载 2014-03-22 00:46:25 · 1007 阅读 · 0 评论 -
Oracle 数据库 10g:为 DBA 提供的 20 个最重要的特性 - 15.段管理
第 15 周 段管理用 Oracle 数据库 10g 通过回收浪费的空间、联机重组表格和评估增长的趋势,有效地在段中进行存储管理近来,有人要求我评估一个与 Oracle 数据库竞争的 RDBMS。在供应商的演示过程中,观众认为“最棒”的特性是,对联机重组的支持 — 该产品可以联机重新部署数据块,以使段的等价物更简洁,并且不会影响当前的用户。 那时,Oracle 还没有在 O转载 2014-03-22 00:45:09 · 880 阅读 · 0 评论 -
Oracle Database 10g:为数据库管理员提供的 20 个最重要的特性 - 3.改善的表空间管理
表空间管理得到了重大的改进,这可以归因于一个 sparser SYSTEM、为用户定义一个默认表空间的支持、新的 SYSAUX、甚至重命名您曾经多少次因用户在 SYSTEM 表空间中创建了非 SYS 和 SYSTEM 的段而伤透脑筋?在 Oracle9i Database 之前,如果在创建用户时没有指定默认表空间,那么它将默认为 SYSTEM 表空间。如果用户在创建一个段时没有显式地指定一转载 2014-03-22 00:44:55 · 621 阅读 · 0 评论 -
Oracle 数据库 10g:为 DBA 提供的最佳前 20 位的特性 - 17.自动共享内存管理
第 17 周 自动共享内存管理是不是很难准确地分配不同的池所需的内存数?自动共享内存管理特性使得自动将内存分配到最需要的地方去成为可能。无论您是一个刚入门的 DBA 还是一个经验丰富的 DBA,您肯定至少看到过一次类似以下的错误:ORA-04031:unable to allocate 2216 bytes of shared memory ("shared pool"... ..转载 2014-03-22 00:44:33 · 757 阅读 · 0 评论 -
如何用 SQL Tuning Advisor (STA) 优化SQL语句
在Oracle10g之前,优化SQL是个比较费力的技术活,不停的分析执行计划,加hint,分析统计信息等等。在10g中,Oracle推出了自己的SQL优化辅助工具: SQL优化器(SQL Tuning Advisor :STA),它是新的DBMS_SQLTUNE包。使用STA一定要保证优化器是CBO模式下。执行DBMS_SQLTUNE包进行sql优化需要有advisor的权限:SQ转载 2014-03-22 00:49:56 · 605 阅读 · 0 评论 -
Oracle ADDM 自动诊断监视工具 介绍
一. ADDM概述 ADDM(Automatic Database Diagnostic Monitor) 是植入Oracle数据库的一个自诊断引擎.ADDM 通过检查和分析AWR获取的数据来判断Oracle数据库中可能的问题. 在Oracle9i及之前,DBA们已经拥有了很多很好用的性能分析工具,比如,tkprof、sql_trace、statspack、set event 10转载 2014-03-22 00:49:31 · 911 阅读 · 0 评论 -
Oracle 数据库 11g: 面向 DBA 和开发人员的重要新特性 - Pivot 和 Unpivot
Pivot 和 Unpivot使用简单的 SQL 以电子表格类型的交叉表报表显示任何关系表中的信息,并将交叉表中的所有数据存储到关系表中。下载 Oracle 数据库 11gPivot如您所知,关系表是表格化的,即,它们以列-值对的形式出现。假设一个表名为 CUSTOMERS。SQL> desc customers Name转载 2014-03-22 00:48:12 · 1079 阅读 · 0 评论 -
Oracle 11g 行列互换 pivot 和 unpivot 说明
在Oracle 11g中,Oracle 又增加了2个查询:pivot 和 unpivot。 pivot:行转列unpivot:列转行 在官网上有一点介绍这两个函数的使用文档:http://docs.oracle.com/cd/E11882_01/server.112/e26088/statements_10002.htm#SQLRF01702 不过也不详细,g转载 2014-03-22 00:47:41 · 746 阅读 · 0 评论 -
Oracle 数据库 10g:为 DBA 提供的最重要的 20 个特性 - 18.ADDM 和 SQL Tuning Advisor
第 18 周 ADDM 和 SQL Tuning Advisor从最终权威那儿获得关于 SQL 调整的帮助:该权威就是 Oracle 数据库本身!使用 SQL 配置文件进行查询,并了解如何使用 ADDM 来快速、轻松解决常见的性能问题。迄今为止这是平静的一天:在数据库中没有重大问题发生,不需要去灭“火”。您几乎可以放松一下了;接下来正好可以抓紧处理那些重要任务了,如对 RMAN 调整参转载 2014-03-22 00:46:45 · 868 阅读 · 0 评论 -
Oracle Stream Replication技术
Stream 是Oracle 的消息队列(也叫Oracle Advanced Queue)技术的一种扩展应用。 Oracle 的消息队列是通过发布/订阅的方式来解决事件管理。流复制(Stream replication)只是基于它的一个数据共享技术,也可以被用作一个可灵活定制的高可用性方案。 它可以实现两个数据库之间数据库级,schema级,Table级的数据同步,并且这种同步可以是双向的。 Or转载 2014-03-22 00:51:27 · 531 阅读 · 0 评论 -
dbms_xplan之display_cursor函数的使用
DBMS_XPLAN包中display_cursor函数不同于display函数,display_cursor用于显示SQL语句的真实的执行计划,在大多数情况下,显示真实的执行计划有助于更好的分析SQL语句的全过程,尤其是运行此SQL语句实时的I/O开销。通过对比预估的I/O与真实的I/O开销来判断SQL语句所存在问题,如缺少统计信息,SQL语句执行的次数,根据实际中间结果集的大小来选择合转载 2014-03-19 22:05:10 · 681 阅读 · 0 评论 -
How to see index usage (without "alter index ... monitoring usage")
Recent Oracle online course "Understanding Explain Plans & Index Utilization" by Dan Hotka, reminded me to write some thoughts about index and usage in Oracle databases.As we all known, some d转载 2014-03-19 22:04:38 · 983 阅读 · 0 评论 -
Oracle AWR 阙值影响历史执行计划
最近有网友提到为什么在dba_hist_sql_plan中无法查看到sql语句的历史执行计划,对于这个问题是由于缺省情况下,Oracle 设定的阙值并非捕获所有的sql语句,所以无法看到某些sql历史执行计划乃正常现象。在Oracle 9i的时候,我们可以通过设定不同的快照level获得不同程度的详细信息。也可以单独配置收集sql的阙值,如指定sql的执行次数,磁盘读的次数,解析调用的数量等。所有转载 2014-03-19 22:04:02 · 538 阅读 · 0 评论 -
Oracle SQL Trace 和 10046 事件
一. SQL_TRACE当SQL语句出现性能问题时,我们可以用SQL_TRACE来跟踪SQL的执行情况,通过跟踪,我们可以了解一条SQL或者PL/SQL包的运行情况,SQL_TRACE命令会将SQL执行的整个过程输出到一个trace文件中,我们可以读这个trace 文件来了解在这个SQL执行过程中Oracle 都做了哪些操作。 可以通过sql命令启动SQL_TRACE,或者在初始化参数转载 2014-03-13 22:47:18 · 776 阅读 · 0 评论 -
Oracle 碎片整理 问题
数据库碎片是影响数据库性能的一个大因素,应及时发现并整理碎片。 一. 碎片是如何产生的 当创建一个数据库实例时,会分成称为表空间(tablespace)的多个逻辑段(segment),如系统(system)表空间,临时(temporary)表空间等。一个表空间可以包含多个数据范围(extent)和一个或多个自由范围块,即自由空间(free space)。转载 2014-03-13 22:43:33 · 867 阅读 · 0 评论 -
Oracle 跟踪事件 set event
一、Oracle跟踪文件 Oracle跟踪文件分为三种类型,一种是后台报警日志文件,记录数据库在启动、关闭和运行期间后台进程的活动情况,如表空间创建、回滚段创建、某些alter命令、日志切换、错误消息等。在数据库出现故障时,应首先查看该文件,但文件中的信息与任何错误状态没有必然的联系。后台报警日志文件保存BACKGROUND_DUMP_DEST参数指定的目录中,文件格式为SIDALRT.LOG转载 2014-03-13 22:43:00 · 645 阅读 · 0 评论 -
手工生成AWR报告方法记录
AWR(Automatic Workload Repository)报告是我们进行日常数据库性能评定、问题SQL发现的重要手段。熟练掌握AWR报告,是做好开发、运维DBA工作的重要基本功。 AWR报告的原理是基于Oracle数据库的定时镜像功能。默认情况下,Oracle数据库后台进程会以一定间隔(一小时)收集系统当前状态镜像,并且保存在数据库中。生成AWR报告时,只需转载 2014-03-13 22:41:42 · 574 阅读 · 0 评论 -
Oracle中Hint深入理解
Hint概述基于代价的优化器是很聪明的,在绝大多数情况下它会选择正确的优化器,减轻了DBA的负担。但有时它也聪明反被聪明误,选择了很差的执行计划,使某个语句的执行变得奇慢无比。此时就需要DBA进行人为的干预,告诉优化器使用我们指定的存取路径或连接类型生成执行计划,从而使语句高效的运行。例如,如果我们认为对于一个特定的语句,执行全表扫描要比执行索引扫描更有效,则我们就可以指示优化器使用全表扫转载 2014-03-06 19:26:17 · 808 阅读 · 0 评论 -
Oracle ASH and AWR
一、WHY——为什么会出现ASH和AWR?1. 10g之前用户的连接将产生会话,当前会话记录保存在v$session中;处于等待状态的会话会被复制一份放在v$session_wait中。当该连接断开后,其原来的连接信息在v$session和v$session_wait中就会被删除。这是10g之前的状况。2. v$session_wait_history与ASH若是一转载 2014-01-03 15:37:55 · 855 阅读 · 0 评论 -
Oracle自适应共享游标
自适应游标共享Adaptive Cursor Sharing或扩展的游标共享(Extended Cursor Sharing)是Oracle 11g的新特性之一,主要用于解决以前版本中由于绑定变量窥探导致SQL语句无法获得最佳执行计划的缺陷,即能够对效率低下的游标(子游标)进行自动识别而选择最佳的执行计划。本文详细描述了自适应游标共享并给出示例。 有关绑定变量窥探请参考:Orac转载 2012-03-20 19:45:26 · 537 阅读 · 0 评论 -
consistent gets减少,cost增加?
在一条SQL语句中,当使用索引时,cosistent gets 减少,而cost增加。理论上在稳定后的执行计划中,physical reads为零值的前提下,cost应当相应减少。下面来看看其原由。1、原始的SQL语句 [sql] view plaincopyprint?SQL> SELECT acc_num, amount, curr_cd转载 2012-03-20 19:18:13 · 1450 阅读 · 0 评论 -
PGA的设置与调整
PGA,即程序全局区(Program Global Area),是Oracle体系机构的重要组成部分。Oracle 数据库对系统内存的总开销即是PGA+SGA。SGA主要由库缓存(共享SQL区和PL/SQL区)和数据字典缓存组成。而PGA包含客户端连接服务器所派生的服务器进程的集合,每个服务器进程都拥有存放数据和控制信息的私有内存区域。客户端进程和服务器端进程一一对应,由服务器端进程完成用转载 2012-03-20 19:07:01 · 631 阅读 · 0 评论