自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

落落的专栏 专注SQL调优 性能调优

Focus on SQL Tuning, Oracle MySQL Performance tuning 想精通SQL以及SQL优化?联系微信692162374

  • 博客(28)
  • 收藏
  • 关注

原创 使用ASH监控历史会话,找出坏SQL

使用如下脚本可以监控历史会话经历过哪些等待事件,并且按照等待次数降序排列select session_id,event,count(*),sum(time_waited) from v$active_session_history where  session_state=WAITING and time_waited>0 and sample_time>=(sysdate-&howlon

2009-11-30 17:08:00 3418

原创 log file sync, log file parallell write

SQL> select name,parameter1,parameter2,parameter3,wait_class from v$event_name where name in( log file sync,log file parallel write);NAME                                          PARAMETER1 PARA

2009-11-30 13:42:00 5151 1

原创 log file switch completion,log file switch(checkpoint incomplete),log file switch(archiving needed)

log file switch completion,log file switch (archiving needed) log file switch (checkpoint incomplete)这三个等待事件是没有参数的,在10g中,它位于configuration类下 SQL> select name,parameter1,parameter2,parameter3,wait_c

2009-11-30 11:24:00 8908

原创 关于latch的一点点理解

        latch是ORACLE中锁的一种,它是一种低级锁,是保护SGA中的共享内存,它几乎不排队(latches wait list除外),不会产生死锁。 latch分为no-wait与willing-to-wait模式,以willing-to-wait请求的latch只有少数几个,而且他们一般都有多个子latch. 比如redo copy latch,我们知道redo 最开始产

2009-11-28 23:01:00 3914

原创 使用并行查询模拟direct path read等待事件

 上次做了一个磁盘排序引起的direct path read等待事件,这次做个并行查询引起的等待事件SQL> select * from v$version;BANNER----------------------------------------------------------------Oracle Database 10g Enterprise Edition Release

2009-11-27 14:51:00 3782

原创 db file parallel write,write complete waits

 SQL> select * from v$version;BANNER----------------------------------------------------------------Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - ProdPL/SQL Release 10.2.0.3.0 - Produc

2009-11-27 11:01:00 3762

原创 模拟direct path read 等待事件

 引起direct path read这个等待事件 主要有两个原因,一个是磁盘排序,另外一个是并行查询。这里先做一个磁盘排序引起的direct path read.另外磁盘排序也会记录direct path write 等待事件。下面是实验步骤:SQL> select * from v$version;BANNER----------------------------------

2009-11-26 22:54:00 4323 3

原创 找到引起磁盘排序的SQL

下面的这些脚本都可以找到引起磁盘排序的SQL。 SELECT /*+ rule */ DISTINCT a.SID, a.process, a.serial#,TO_CHAR (a.logon_time, YYYYMMDD HH24:MI:SS) LOGON, a.osuser,TABLESPACE, b.sql_textFROM v$session a, v$sql b, v$sort_

2009-11-26 22:45:00 2481 1

原创 关于I/O的一些脚本

可以使用如下脚本查询某个数据文件单块读的平均时间(摘自OWI)select a.file# "File#",b.file_name "File_Name",a.singleblkrds "Single Block Reads",a.singleblkrdtim "Single Block Read Time",a.singleblkrds/a.singleblkrdtim averag

2009-11-26 16:34:00 2466 3

原创 free buffer waits

 free buffer waits:当一个session试图将一个block读入buffer cache,或者由于读一致需要构造cr的block找不到free buffer而产生的等待。 SQL> select name,parameter1,parameter2,parameter3,wait_class from v$event_name where name =free buffer

2009-11-24 17:25:00 11116 1

原创 direct path read,direct path write

  direct path read这个等待事件表示Oracle读取数据块直接进入PGA,而非SGA中的Buffer Cache中。SQL> select name,parameter1,parameter2,parameter3,wait_class from v$event_name where name=direct path read;NAME               

2009-11-24 16:52:00 4128

原创 模拟buffer busy waits等待事件

 SQL> create table buffer_busy(id number,name varchar2(20));表已创建。SQL> insert into buffer_busy values(1,robinson);已创建 1 行。SQL> insert into buffer_busy values(2,robinson);已创建 1 行。SQL> comm

2009-11-24 14:54:00 5209

原创 cache buffers chains ,buffer busy waits

 当一个session想要访问/修改buffer cache的block,首先需要检查该block是否存在于buffer cache,检查该block是否存在于buffer cache中是通过HASH算法来实现的,另外检查相同的SQL语句是否存在于library cache中也是通过HASH算法实现的。要判断block是否存在于buffer cache中,就需要扫描一条chain,该chain中具

2009-11-24 12:24:00 4892 1

原创 检查日志文件是否传输到备用数据库

例如:我配置归档位置如下: SQL> show parameter log_archive_dest_2NAME                                 TYPE                              VALUE------------------------------------ -------------------------------

2009-11-23 11:19:00 1978

原创 找出热点块所属的用户,对象名,类型

select owner,object_name,object_type from dba_objects where data_object_id in (select obj from x$bh where hladdr in (select addr from (select addr from v$latch_children where name=cache buffers c

2009-11-21 23:20:00 1912

原创 根据SID找出当前用户正在执行的SQL

select sql_text from v$sqlarea where (hash_value,address)=(select sql_hash_value,sql_address from v$session where sid=&sid);注意,上面的语句SQL脚本只能查出当前用户正在执行SQL,也就是说v$session.status=ACTIVE如果想找出执行过了的sql,

2009-11-18 16:19:00 2865

原创 根据当前等待事件名查找造成该等待事件的SQL

例如查找关于对library ....等待事件有贡献的SQLselect sql_text from V$sqlarea  where (address,hash_value) in (select sql_address,sql_hash_value from v$session  where event like library%);此语句只能运行于10g版本以上,因为10g中

2009-11-18 16:14:00 2576 1

原创 V$LATCH

 SQL> desc v$latch 名称                                                                                          是否为空? 类型 ------------------------------------------------------------------------------

2009-11-18 13:49:00 2358

原创 Redhat as 4 中创建 LVM 逻辑卷

一. 用fdisk -l 命令查看有物理磁盘信息 一般显示如下Disk /dev/hda: 8589 MB, 8589934592 bytes    255 heads, 63 sectors/track, 1044 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytes   Device Boot      Start     

2009-11-16 22:11:00 2170

原创 CURSOR_SHARING,VERSION_COUNT

 CURSOR_SHARING:determines what kind of SQL statements can share the same cursors.cursor_sharing有三个值,默认的是exact,表示每条SQL精确匹配。force表示强制绑定类似的SQL。similar,当收集了柱状图的统计信息之后,对于不同的变量会从新解析,如果没有收集柱状图,similar就和

2009-11-12 15:57:00 5840 3

原创 ORACLE SQL执行步骤

 以前理解的 ORACLE sql 的处理过程大致如下: 1.运用HASH算法,得到一个HASH值,这个值可以通过V$SQLAREA.HASH_VALUE 查看 2.到shared pool 中的 library cache 中查找是否有相同的HASH值,如果存在,则无需硬解析,进行软解析 3.如果shared pool不存在此HASH值,则进行语法检查,查看是否有语法错误 4

2009-11-11 13:52:00 6264

原创 如何查看,更改隐含参数

 可以使用如下脚本查看隐含参数SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describFROM SYS.x$ksppi x, SYS.x$ksppcv yWHERE x.inst_id = USERENV (Instance)AND y.inst_id = USERENV (Instance)AND x.indx = y.ind

2009-11-10 16:11:00 4667 2

原创 如何找出应用程序未使用绑定变量

   SQL开发的过程中,如果不使用绑定变量,会对数据库性能造成非常严重的影响请看如下示例代码:  begin  for i in 1..1000 loop  execute immediate insert into test values(||i||);  end loop;  commit;   end;  /该过程执行1000次,会解析1000次,我们知道每次SQL解析大概

2009-11-10 14:37:00 4110

原创 X$KSMSP

  X$KSMSP:kernal Storage Memory Sga HeaP SQL> desc x$ksmsp; Name                                      Null?    Type ----------------------------------------- -------- ---------------------------- 

2009-11-10 13:50:00 3648

原创 Using Logminer analyze redo log

         有时候,某个用户无意间drop了一张表,或者是truncate一张表,delete 忘加where,update 忘加 where, 这个时候们就可能执行不完全恢复,或者进行数据库的flashback.但是我们怎么能知道他干坏事的具体时间呢?只要redo log 存在,我们就能通过logminer这个工具找到干坏事的具体时间,然后执行不完全恢复,恢复数据库到干坏事之前的那一时

2009-11-05 17:56:00 2803 2

原创 RESTORE DATAFILE TO A NEW LOCATION

    如果存储datafile的磁盘坏了,这个时候就可能将数据文件还原到别的磁盘,然后进行恢复。恢复之前,首先检查是否设置了db_create_file_dest,如果设置了这个参数,那么rman默认的会将datafile恢复到db_create_file_dest指定的目录中,而这个时候由于db_create_file_dest指定的目录所在的磁盘损坏,可能导致恢复不成功。    这个

2009-11-04 14:10:00 6128

原创 丢失spfile,pfile,不知道DBID的情况下还原spfile

 当出现了这种情况,我们使用restore spfile from autobackup,是不行的,因为没有设置DBID,这个时候不要慌,只要知道备份存放的地点就可以还原SPFILE。一.首先设置ORACLE_SIDC:/Users/luobi>set oracle_sid=robinson二.强行启动RMAN> startup已连接到目标数据库 (未启动)启动失败:

2009-11-03 10:55:00 4678

原创 INCREMENTAL BACKUP

    增量备份:ORACLE允许我们使用RMAN只备份上次增量备份以来被更改的数据库。增量备份只能是在RMAN中执行,既可以联机,也可以脱机,既可以ARCHIVELOG,也可以NOARCHIVELOG。对于增量备份,他只能作用于数据文件,不能作用于归档日志。    增量备份的类型:差异备份,累积备份。    差异备份:差异备份是增量备份的默认类型,对于差异备份,RMAN会备份自上次同级或

2009-11-02 15:58:00 2911 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除