快速业务通道

ORACLE学习笔记--性能优化

作者 凌众技术 来源 互联网 浏览 发布时间 2012-01-15
reate oe replace outline OutLn_Name on
  Select Col1,Col2 from Table
  where .......

  如果要删除Outline,可以采用
  Drop Outline OutLn_Name;

  对于已经创建了的OutLine,存放在OUTLN用户的OL$HINTS表下面,对于有些语句,你可以使用update outln.ol$hints来更新outline,如

  update outln.ol$hints(ol_name,'TEST1','TEST2','TEST2','TEST1)
  where ol_name in ('TEST1','TEST2');

  这样,你就把Test1 OUTLINE与Test2 OUTLINE互换了,如果想利用已经存在的OUTLINE,需要设置以下参数
  Alter system/session set Query_rewrite_enabled = true
  Alter system/session set use_stored_outlines = true

14.v$sysstat中的class分别代表什么
  统计类别
  1 代表事例活动
  2 代表Redo buffer活动
  4 代表锁
  8 代表数据缓冲活动
  16 代表OS活动
  32 代表并行活动
  64 代表表访问
  128 代表调试信息

15.怎么杀掉特定的数据库会话
  Alter system kill session 'sid,serial#';
  或者
  alter system disconnect session 'sid,serial#' immediate;

  在win上,还可以采用oracle提供的orakill杀掉一个线程(其实就是一个Oracle进程)
  在Linux/Unix上,可以直接利用kill杀掉数据库进程对应的OS进程

16.怎么快速查找锁与锁等待
  数据库的锁是比较耗费资源的,特别是发生锁等待的时候,我们必须找到发生等待的锁,有可能的话,杀掉该进程。
  这个语句将查找到数据库中所有的DML语句产生的锁,还可以发现,任何DML语句其实产生了两个锁,一个是表锁,一个是行锁。
  可以通过alter system kill session ‘sid,serial#’来杀掉会话

  SELECT /*+ rule */ s.username,
  decode(l.type,'TM','TABLE LOCK','TX','ROW LOCK',NULL) LOCK_LEVEL,
  o.owner,o.object_name,o.object_type,
  s.sid,s.serial#,s.terminal,s.machine,s.program,s.osuser
  FROM v$session s,v$lock l,dba_objects o
  WHERE l.sid = s.sid
  AND l.id1 = o.object_id(+)
  AND s.username is NOT NULL

  如果发生了锁等待,我们可能更想知道是谁锁了表而引起谁的等待,以下的语句可以查询到谁锁了表,而谁在等待。
  SELECT /*+ rule */ lpad(' ',decode(l.xidusn ,0,3,0))||l.oracle_username User_name,
  o.owner,o.object

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号