快速业务通道

ORACLE学习笔记--性能优化

作者 凌众技术 来源 互联网 浏览 发布时间 2012-01-15
_name,o.object_type,s.sid,s.serial#
  FROM v$locked_object l,dba_objects o,v$session s
  WHERE l.object_id=o.object_id
  AND l.session_id=s.sid
  ORDER BY o.object_id,xidusn DESC

  以上查询结果是一个树状结构,如果有子节点,则表示有等待发生。如果想知道锁用了哪个回滚段,还可以关联到V$rollname,其中xidusn就是回滚段的USN

  [Q] 如何有效的删除一个大表(extent数很多的表)
  [A] 一个有很多(100k)extent的表,如果只是简单地用drop table的话,会很大量消耗CPU(Oracle要对fet$、uet$数据字典进行操作),可能会用上几天的时间,较好的方法是分多次删除extent,以减轻这种消耗:
  1. truncate table big-table reuse storage;
  2. alter table big-table deallocate unused keep 2000m ( 原来大小的n-1/n);
  3. alter table big-table deallocate unused keep 1500m ;
  ....
  4. drop table big-table;

17.如何收缩临时数据文件的大小
  9i以下版本采用
  ALTER DATABASE DATAFILE 'file name' RESIZE 100M类似的语句
  9i以上版本采用
  ALTER DATABASE TEMPFILE 'file name' RESIZE 100M
  注意,临时数据文件在使用时,一般不能收缩,除非关闭数据库或断开所有会话,停止对临时数据文件的使用。

18.怎么清理临时段
  可以使用如下办法
  <1>、 使用如下语句查看一下认谁在用临时段
  SELECT username,sid,serial#,sql_address,machine,program,
  tablespace,segtype, contents 
  FROM v$session se,v$sort_usage su
  WHERE se.saddr=su.session_addr

   <2>、 那些正在使用临时段的进程
  SQL>Alter system kill session 'sid,serial#';

  <3>、把TEMP表空间回缩一下
  SQL>Alter tablespace TEMP coalesce;


  还可以使用诊断事件
  <1>、 确定TEMP表空间的ts#
  SQL> select ts#, name FROM v$tablespace;
  TS# NAME 
  ----------------------- 
  0 SYSYEM 
  1 RBS 
  2 USERS 
  3* TEMP 
  ...

  <2>、 执行清理操作
  alter session set events 'immediate trace name DROP_SEGMENTS level TS#+1'
  说明: 
  temp表空间的TS# 为 3*, So TS#+ 1= 4,如果想清除所有表空间的临时段,

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号