随笔分类 -  Oracle

摘要:Oracle 常见的33个等待事件一. 等待事件的相关知识:1.1 等待事件主要可以分为两类,即空闲(IDLE)等待事件和非空闲(NON-IDLE)等待事件。1). 空闲等待事件指ORACLE正等待某种工作,在诊断和优化数据库的时候,不用过多注意这部分事件。2). 非空闲等待事件专门针对ORACLE的活动,指数据库任务或应用运行过程中发生的等待,这些等待事件是在调整数据库的时候需要关注与研究的。在Oracle 10g中的等待事件有872个,11g中等待事件1116个。 我们可以通过v$event_name 视图来查看等待事件的相关信息。1.2 查看v$event_name视图的字段结构:SQ. 阅读全文
posted @ 2011-02-06 01:05 无双的小宝 阅读(754) 评论(0) 推荐(0) 编辑
摘要:一.性能视图 性能视图是Oracle中一些记录数据库性能方面的视图,通过查看这些视图,获得数据库当前或历史上某个时间的性能数据。 它比SQL_TRACE,AWR报告获取数据更及时,便捷。Oracle 动态性能视图1.1 V$SQL V$SQL 视图是一个DBA 使用频率非常高的动态视图,它通常和V$SESSION 一起使用来获得当前会话的一些SQL执行情况。可以通过该视图查看正在执行的SQL语句及这条SQL运行了多长时间或者它正在等待什么样的事件。1.1.1 用V$SQL 查看SQL 内容 为了获取用户连接到数据库中的信息,需要先从V$SESSION视图确定用户的SID号,然后用v$sessi 阅读全文
posted @ 2011-02-06 01:02 无双的小宝 阅读(1983) 评论(0) 推荐(0) 编辑
摘要:环境说明:操作系统:CentOS 5 x86数据库:Oracle 10.2.0.1 非RAC环境ASM实例名:+ASM参考:metalink node:311350.11、检查ASM实例进程ora_test@oracle[/home/oracle]> ps -ef|grep asm|grep -v greporacle 4263 1 0 Jan20 ? 00:00:02 asm_pmon_+ASMoracle 4265 1 0 Jan20 ? 00:00:00 asm_psp0_+ASMoracle 4267 1 0 Jan20 ? 00:00:00 asm_mman_+ASMoracl 阅读全文
posted @ 2011-01-12 16:30 无双的小宝 阅读(1170) 评论(0) 推荐(0) 编辑
摘要:一.索引介绍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 阅读全文
posted @ 2011-01-09 23:42 无双的小宝 阅读(3355) 评论(0) 推荐(1) 编辑
摘要: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 阅读全文
posted @ 2011-01-07 16:42 无双的小宝 阅读(571) 评论(0) 推荐(0) 编辑
摘要: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 阅读全文
posted @ 2010-12-26 20:59 无双的小宝 阅读(4498) 评论(0) 推荐(1) 编辑
摘要:数据库版本: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... 阅读全文
posted @ 2010-12-24 17:16 无双的小宝 阅读(2083) 评论(0) 推荐(0) 编辑
摘要:数据库优化的讨论可以说是一个永恒的主题。资深的Oracle优化人员通常会要求提出性能问题的人对数据库做一个statspack,贴出数据库配置等等。还有的人认为要抓出执行最慢的语句来进行优化。但实际情况是,提出疑问的人很可能根本不懂执行计划,更不要说statspack了。而我认为,数据库优化,应该首先从大的方面考虑:网络、服务器硬件配置、操作系统配置、Oracle服务器配置、数据结构组织、然后才是具体的调整。实际上网络、硬件等往往无法决定更换,应用程序一般也无法修改,因此应该着重从数据库配置、数据结构上来下手,首先让数据库有一个良好的配置,然后再考虑具体优化某些过慢的语句。我在给我的用户系统进行 阅读全文
posted @ 2010-12-21 16:34 无双的小宝 阅读(5169) 评论(0) 推荐(0) 编辑
摘要:oracle性能不好,首要检查数据库服务器的硬件配置。包括内存参数调整,oracle9i以后可以在 企业管理器 enterprise manager 中 例程--配置--内存 中查看内存以及pool的大小,通过建议值来设置,该工作应该隔段时间就检查一次,因为pool的设置和实际的数据量是相关的。一般windows32位服务器上,分配给oracle的内存不必超过1.7G,因为寻址能力就这么大,多余了也是浪费。整个物理内存的70%应该分配给oracle。在 例程--配置--内存 中,可以看到共享池share pool,它里面存放的是package,procedure,function,常用sql, 阅读全文
posted @ 2010-12-21 16:30 无双的小宝 阅读(672) 评论(0) 推荐(0) 编辑
摘要:查找运行系统里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 阅读全文
posted @ 2010-12-21 16:27 无双的小宝 阅读(501) 评论(0) 推荐(0) 编辑
摘要:Partition Pruning 在数据仓库中分区修剪是一种非常有效的性能特性。分析修剪分析SQL中的WHERE 和FROM字句,从而在查询中消除不不必要分区。分区修剪技术能大大的减少从磁盘上读取的数据量,从而缩短运行时间,改善查询性能,减少资源浪费。即使你的索引分区和表分区不同,分区修剪也可以在索引上生效(global partition index),从而消除不必要的索引分区。 分区修剪的特性依赖SQL语句,Oracle 有两种分区修剪:动态修剪和静态修剪。静态修剪发生在编译时期,在执行计划指定的时候,已经知道那些分区会被使用。而动态修剪发生在运行时,也就是说在运行的时候,才会知道那些分 阅读全文
posted @ 2010-12-21 16:11 无双的小宝 阅读(877) 评论(0) 推荐(0) 编辑
摘要: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 阅读全文
posted @ 2010-12-21 15:47 无双的小宝 阅读(10976) 评论(3) 推荐(0) 编辑
摘要:Oracle在执行一个SQL之前,首先要分析一下语句的执行计划,然后再按执行计划去执行。分析语句的执行计划的工作是由优化器(Optimizer)来完成的。不同的情况,一条SQL可能有多种执行计划,但在某一时点,一定只有一种执行计划是最优的,花费时间是最少的。相信你一定会用Pl/sql Developer、Toad等工具去看一个语句的执行计划,不过你可能对Rule、Choose、First rows、All rows这几项有疑问,因为我当初也是这样的,那时我也疑惑为什么选了以上的不同的项,执行计划就变了?1、优化器的优化方式Oracle的优化器共有两种的优化方式,即基于规则的优化方式(Rule- 阅读全文
posted @ 2010-12-21 15:44 无双的小宝 阅读(5126) 评论(0) 推荐(0) 编辑
摘要:TO_DATE格式 Day: dd number 12 dy abbreviated fri day spelled out friday ddspth spelled out, ordinal twelfth Month: mm number 03 mon abbreviated mar month spelled out march Year: yy two digits 98 yyyy four digits 1998 24小时格式下时间范围为: 0:00:00 - 23:59:59.... 12小时格式下时间范围为: 1:00:00 - 12:59:59 .... 1. 日期和字符转换 阅读全文
posted @ 2010-12-13 22:17 无双的小宝 阅读(314) 评论(0) 推荐(0) 编辑
摘要:热点块的定义 数据库的热点块,从简单了讲,就是极短的时间内对少量数据块进行了过于频繁的访问。定义看起来总是很简单的,但实际在数据库中,我们要去观察或者确定热点块的问题,却不是那么简单了。要深刻地理解数据库是怎么通过一些数据特征来表示热点块的,我们需要了解一些数据库在这方面处理机制的特性。数据缓冲区的结构我们都知道,当查询开始的时候,进程首先去数据缓冲区中查找是否存在查询所需要的数据块,如果没有,就去磁盘上把数据块读到内存中来。在这个过程中,涉及到数据缓冲区中 LRU 链的管理( 8i 开始以接触点计数为标准衡量 buffer 冷热从而决定 buffer 是在 LRU 的冷端还是热端),关于这部 阅读全文
posted @ 2010-12-12 00:12 无双的小宝 阅读(682) 评论(0) 推荐(0) 编辑
摘要:分析案例:1.走rule很快,但是收集了执行计划后却很慢SQL> create table test(id int);表已创建。SQL> insert into test select 1 from dba_objects;已创建49883行。SQL> commit;提交完成。SQL> insert into test select 2 from user_objects where rownum<101;已创建100行。SQL> commit;提交完成。SQL> create index i_test_1 on test(id);索引已创建。SQL& 阅读全文
posted @ 2010-11-08 10:46 无双的小宝 阅读(2901) 评论(0) 推荐(0) 编辑
摘要:DBMS_METADATA.GET_DDL包可以得到数据库的对象的ddl脚本。如下(SQLPLUS中执行):1.得到一个表的ddl语句:SET SERVEROUTPUT ONSET LINESIZE 1000SET FEEDBACK OFFset long 999999 ------显示不完整SET PAGESIZE 1000 ----分页EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'STORAGE',false); ---去除storage等多余参数SELECT DBMS_ 阅读全文
posted @ 2010-11-07 23:33 无双的小宝 阅读(1792) 评论(0) 推荐(1) 编辑
摘要:分区表、分区索引和全局索引: 在一个表的数据超过过2000万条或占用2G空间时,建议建立分区表。 createtableta(c1int,c2varchar2(16),c3varchar2(64),c4intconstraintpk_taprimarykey(c1))partitionbyrange(c1)(partitionp1valueslessthan(10000000),partitionp2valueslessthan(20000000),partitionp3valueslessthan(30000000),partitionp4valueslessthan(maxvalue)). 阅读全文
posted @ 2010-11-07 23:31 无双的小宝 阅读(9181) 评论(0) 推荐(0) 编辑
摘要:Oracle性能调整指导纲要一、Oracle性能优化方法论1.为什么(what)要优化(系统慢了?慢是表象)2.怎样(how)优化?(需要找到慢的原因)a.是系统的问题?b.是数据库的问题?3.谁(who)来优化?a.系统架构师(系统架构设计的有问题,麻烦大了)b.系统管理员(os、storage问题)c.数据库管理员(db问题)d.应用程序设计人员(应用设计问题)e.应用程序开发人员(代码书写问题)是谁的问题由谁来承担,找到理由拒绝让他们说不…4.什么时候(when)优化?(优化时是否需要停应用:7×24)5.制定相应的调整策略6.组建调整的人员7.开始调整8.观察性能的变化9.再 阅读全文
posted @ 2010-10-26 08:32 无双的小宝 阅读(920) 评论(0) 推荐(0) 编辑
摘要:一:错误总述1. ORA-04031 基本上,ORA-04031出现的问题有几个可能性A. 没有绑定编量造成shared_pool碎片过多,同时shared_pool_size太小.--这个应该是比较常见的,也是Oracle提的最多的。 --这个通常会建议使用绑定变量,或者简单的加大shared_pool.或者临时解决方法就是alter system flush shared_pool.B. Large_pool,Java_pool太小造成的--这个通过错误信息的提示很容易判断(Ora-04031 cannot allocate .. memeory in [large_pool])--解决方 阅读全文
posted @ 2010-10-14 21:41 无双的小宝 阅读(16800) 评论(2) 推荐(2) 编辑