摘要:
一.索引介绍1.1 索引的创建语法:CREATE UNIUQE | BITMAP INDEX <schema>.<index_name> ON <schema>.<table_name> (<column_name> | <expression> ASC | DESC, <column_name> | <expression> ASC | DESC,...) TABLESPACE <tablespace_name> STORAGE <storage_settings> LOG 阅读全文
摘要:
Oracle常用dump命令,记录一下备查。一.Memory Dumps1).Global AreaALTER SESSION SET EVENTS ‘immediate trace name global_area level n’;1 包含PGA2 包含SGA4 包含UGA8 包含indrect memory2).Library CacheALTER SESSION SET EVENTS ‘immediate trace name library_cache level n’;1 library cache统计信息2 包含hash table histogram3 包含object han 阅读全文
摘要:
SQL优化器简介 基于规则的优化器 。总是使用索引 。总是从驱动表开始(from子句最右边的表) 。只有在不可避免的情况下,才使用全表扫描 。任何索引都可以 基于成本的优化器 。需要表、索引的统计资料 Analyze table customer compute statistics; Analyze table customer estimate statistics sample 5000 rows; 。表中设置并行度、表分区 优化器模式 rule模式 。总忽略CBO和统计信息而基于规则 choose模式 。Oracle根据情况选择rule or first_rows or all_row 阅读全文
摘要:
数据库版本:10.2.0.3数据库架构:双节点RAC主机平台:IBM小型机,AIX5.3这次问题解决过程确认辽宁目前存在2个问题,记录如下: 第一,数据库实例异常重启。第二,数据库异常重启后造成的整个数据库进行DML操作异常缓慢,直接导致“抽数”时间大幅延长。 经过深入分析,这2个问题的原因和解决方案如下:一、数据库实例异常重启 1、根本原因 观察jcfx1实例的alert日志发现在18号数据库jcfx1实例自动重启前,发生如下事件, Mon Oct 18 11:02:06 2010 Errors in file /app/oracle/admin/jcfx/bdump/j... 阅读全文
摘要:
数据库优化的讨论可以说是一个永恒的主题。资深的Oracle优化人员通常会要求提出性能问题的人对数据库做一个statspack,贴出数据库配置等等。还有的人认为要抓出执行最慢的语句来进行优化。但实际情况是,提出疑问的人很可能根本不懂执行计划,更不要说statspack了。而我认为,数据库优化,应该首先从大的方面考虑:网络、服务器硬件配置、操作系统配置、Oracle服务器配置、数据结构组织、然后才是具体的调整。实际上网络、硬件等往往无法决定更换,应用程序一般也无法修改,因此应该着重从数据库配置、数据结构上来下手,首先让数据库有一个良好的配置,然后再考虑具体优化某些过慢的语句。我在给我的用户系统进行 阅读全文
摘要:
oracle性能不好,首要检查数据库服务器的硬件配置。包括内存参数调整,oracle9i以后可以在 企业管理器 enterprise manager 中 例程--配置--内存 中查看内存以及pool的大小,通过建议值来设置,该工作应该隔段时间就检查一次,因为pool的设置和实际的数据量是相关的。一般windows32位服务器上,分配给oracle的内存不必超过1.7G,因为寻址能力就这么大,多余了也是浪费。整个物理内存的70%应该分配给oracle。在 例程--配置--内存 中,可以看到共享池share pool,它里面存放的是package,procedure,function,常用sql, 阅读全文
摘要:
查找运行系统里bad sql是一个古老的话题, 我们要根据自己的实际情况来分析。绝不能教条的运用下面介绍的这些方法。使用这些SQL语句时,会对系统表产生分组操作,当然也增大了系统的负载。建议大家在系统启动了一段时间后,在半夜负载较轻的时间定时(例如:一个月)来查一查。一定要具体问题具体分析。 下面是我收藏的一些查找bad sql的方法: select * from (select buffer_gets, sql_text from v$sqlarea where buffer_gets > 500000 order by buffer_gets desc) where rownum&l 阅读全文
摘要:
Partition Pruning 在数据仓库中分区修剪是一种非常有效的性能特性。分析修剪分析SQL中的WHERE 和FROM字句,从而在查询中消除不不必要分区。分区修剪技术能大大的减少从磁盘上读取的数据量,从而缩短运行时间,改善查询性能,减少资源浪费。即使你的索引分区和表分区不同,分区修剪也可以在索引上生效(global partition index),从而消除不必要的索引分区。 分区修剪的特性依赖SQL语句,Oracle 有两种分区修剪:动态修剪和静态修剪。静态修剪发生在编译时期,在执行计划指定的时候,已经知道那些分区会被使用。而动态修剪发生在运行时,也就是说在运行的时候,才会知道那些分 阅读全文
摘要:
oracle的逻辑读和物理读 1.物理读即是把数据从磁盘读入到buffer catch的过程。 通常情况下是,如果需要数据的时候发现不存在于buffer catch当中,即oracle就会执行物理读。 例子如下: C:/Documents and Settings/Administrator>sqlplus jenny/jenny SQL> set autotrace traceonly; SQL> select * from t_test1; ---------------------------------------------------------- Plan ha 阅读全文
摘要:
Oracle在执行一个SQL之前,首先要分析一下语句的执行计划,然后再按执行计划去执行。分析语句的执行计划的工作是由优化器(Optimizer)来完成的。不同的情况,一条SQL可能有多种执行计划,但在某一时点,一定只有一种执行计划是最优的,花费时间是最少的。相信你一定会用Pl/sql Developer、Toad等工具去看一个语句的执行计划,不过你可能对Rule、Choose、First rows、All rows这几项有疑问,因为我当初也是这样的,那时我也疑惑为什么选了以上的不同的项,执行计划就变了?1、优化器的优化方式Oracle的优化器共有两种的优化方式,即基于规则的优化方式(Rule- 阅读全文