知识大全 DBA常用脚本2-性能监控

Posted 语句

篇首语:高斋晓开卷,独共圣人语。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 DBA常用脚本2-性能监控相关的知识,希望对你有一定的参考价值。

DBA常用脚本2-性能监控  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   数据缓冲区的命中率已经不是性能调整中的主要问题了 但是 过低的命中率肯定是不可以的 在任何情况下 我们必须保证有一个大的data buffer和一个高的命中率     这个语句可以获得整体的数据缓冲命中率 越高越好    Code: [Copy to clipboard]    SELECT a VALUE + b VALUE logical_reads   c VALUE phys_reads   round( *( c value/(a value+b value)) ) hit_ratio  FROM v$sysstat a v$sysstat b v$sysstat c  WHERE a NAME= db block gets   AND b NAME= consistent gets   AND c NAME= physical reads      库缓冲说明了SQL语句的重载率 当然 一个SQL语句应当被执行的越多越好 如果重载率比较高 就考虑增加共享池大小或者是提高Bind变量的使用以下语句查询了Sql语句的重载率 越低越好    Code: [Copy to clipboard]  SELECT SUM(pins) total_pins SUM(reloads) total_reloads   SUM(reloads)/SUM(pins)* libcache_reload_ratio  FROM v$librarycache     用户锁 数据库的锁有的时候是比较耗费资源的 特别是发生锁等待的时候 我们必须找到发生等待的锁 有可能的话 杀掉该进程     这个语句将查找到数据库中所有的DML语句产生的锁 还可以发现 任何DML语句其实产生了两个锁 一个是表锁 一个是行锁     可以通过alter system kill session sid serial# 来杀掉会话    Code: [Copy to clipboard]    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 id = o object_id(+)  AND s username is NOT NULL     锁与等待 如果发生了锁等待 我们可能更想知道是谁锁了表而引起谁的等待以下的语句可以查询到谁锁了表 而谁在等待     Code: [Copy to clipboard]    SELECT /*+ rule */ lpad( decode(l xidusn ))||l oracle_username User_name   o owner o object_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     如果发生了事务或锁 想知道哪些回滚段正在被使用吗?其实通过事务表 我们可以详细的查询到事务与回滚段之间的关系 同时 如果关联会话表 我们则可以知道是哪个会话发动了这个事务     Code: [Copy to clipboard]    SELECT s USERNAME s SID s SERIAL# t UBAFIL UBA filenum   t UBABLK UBA Block number t USED_UBLK Number os undo Blocks Used   t START_TIME t STATUS t START_SCNB t XIDUSN RollID r NAME RollName  FROM v$session s v$transaction t v$rollname r  WHERE s SADDR=t SES_ADDR  AND t XIDUSN=r usn     如果利用会话跟踪或者是想查看某个会话的跟踪文件 那么查询到OS上的进程或线程号是非常重要的 因为文件的令名中 就包含这个信息 以下的语句可以查询到进程或线程号 由此就可以找到对应的文件     Code: [Copy to clipboard]    SELECT p value|| \\ ||p value|| _ora_ ||p spid filename  FROM  v$process p   v$session s   v$parameter p   v$parameter p   WHERE p name = user_dump_dest   AND p name = db_name   AND p addr = s paddr  AND s audsid = USERENV ( SESSIONID );     在ORACLE i中 可以监控索引的使用 如果没有使用到的索引 完全可以删除掉 减少DML操作时的操作     以下就是开始索引监控与停止索引监控的脚本    Code: [Copy to clipboard]    set heading off  set echo off  set feedback off  set pages   spool start_index_monitor sql    SELECT alter index ||owner|| ||index_name|| monitoring usage;   FROM dba_indexes  WHERE owner = USER;    spool off  set heading on  set echo on  set feedback on     set heading off  set echo off  set feedback off  set pages   spool stop_index_monitor sql    SELECT alter index ||owner|| ||index_name|| nomonitoring usage;   FROM dba_indexes  WHERE owner = USER;    spool off  set heading on  set echo on  set feedback on    如果需要监控更多的用户 可以将owner=User改写成别的监控结果在视图v$object_usage中查询    Code: [Copy to clipboard]  CREATE OR REPLACE PROCEDURE show_space  ( p_segname IN VARCHAR   p_owner  IN VARCHAR DEFAULT USER   p_type  IN VARCHAR DEFAULT TABLE   p_partition IN VARCHAR DEFAULT NULL )   This procedure uses AUTHID CURRENT USER so it can query DBA_*   views using privileges from a ROLE and so it can be installed   once per database instead of once per user who wanted to use it   AUTHID CURRENT_USER  as  l_free_blks         number;  l_total_blocks       number;  l_total_bytes        number;  l_unused_blocks       number;  l_unused_bytes       number;  l_LastUsedExtFileId     number;  l_LastUsedExtBlockId    number;  l_LAST_USED_BLOCK      number;  l_segment_space_mgmt    varchar ( );  l_unformatted_blocks number;  l_unformatted_bytes number;  l_fs _blocks number; l_fs _bytes number;  l_fs _blocks number; l_fs _bytes number;  l_fs _blocks number; l_fs _bytes number;  l_fs _blocks number; l_fs _bytes number;  l_full_blocks number; l_full_bytes number;     Inline procedure to print out numbers nicely formatted   with a simple label   PROCEDURE p( p_label in varchar p_num in number )  IS  BEGIN  dbms_output put_line( rpad(p_label ) ||  to_char(p_num ) );  END;  BEGIN   This query is executed dynamically in order to allow this procedure   to be created by a user who has access to DBA_SEGMENTS/TABLESPACES   via a role as is customary    NOTE: at runtime the invoker MUST have access to these o   views!   This query determines if the object is an ASSM object or not   BEGIN  EXECUTE IMMEDIATE   select ts segment_space_management  FROM dba_segments seg dba_tablespaces ts  WHERE seg segment_name   = :p_segname  AND (:p_partition is null or  seg partition_name = :p_partition)  AND seg owner = :p_owner  AND seg tablespace_name = ts tablespace_name   INTO l_segment_space_mgmt  USING p_segname p_partition p_partition p_owner;  EXCEPTION  WHEN too_many_rows THEN  dbms_output put_line  ( This must be a partitioned table use p_partition => );  RETURN;  END;     If the object is in an ASSM tablespace we must use this API   call to get space information; else we use the FREE_BLOCKS   API for the user managed segments   IF l_segment_space_mgmt = AUTO   THEN  dbms_space space_usage  ( p_owner p_segname p_type l_unformatted_blocks   l_unformatted_bytes l_fs _blocks l_fs _bytes   l_fs _blocks l_fs _bytes l_fs _blocks l_fs _bytes   l_fs _blocks l_fs _bytes l_full_blocks l_full_bytes p_partition);    p( Unformatted Blocks l_unformatted_blocks );  p( FS Blocks ( )  l_fs _blocks );  p( FS Blocks ( ) l_fs _blocks );  p( FS Blocks ( ) l_fs _blocks );  p( FS Blocks ( ) l_fs _blocks );  p( Full Blocks     l_full_blocks );  ELSE  dbms_space free_blocks(  segment_owner   => p_owner   segment_name   => p_segname   segment_type   => p_type   freelist_group_id =>   free_blks     => l_free_blks);    p( Free Blocks l_free_blks );  END IF;     And then the unused space API call to get the rest of the   information   dbms_space unused_space  ( segment_owner   => p_owner   segment_name   => p_segname   segment_type   => p_type   partition_name  => p_partition   total_blocks   => l_total_blocks   total_bytes    => l_total_bytes   unused_blocks   => l_unused_blocks   unused_bytes   => l_unused_bytes   LAST_USED_EXTENT_FILE_ID => l_LastUsedExtFileId   LAST_USED_EXTENT_BLOCK_ID => l_LastUsedExtBlockId   LAST_USED_BLOCK => l_LAST_USED_BLOCK );    p( Total Blocks l_total_blocks );  p( Total Bytes l_total_bytes );  p( Total MBytes trunc(l_total_bytes/ / ) );  p( Unused Blocks l_unused_blocks );  p( Unused Bytes l_unused_bytes );  p( Last Used Ext FileId l_LastUsedExtFileId );  p( Last Used Ext BlockId l_LastUsedExtBlockId );  p( Last Used Block l_LAST_USED_BLOCK );  END; cha138/Article/program/Oracle/201311/18788

相关参考

知识大全 Oracle管理及常用基础脚本

Oracle管理及常用基础脚本  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  性能监控  检测数

知识大全 关于Oracle一些常用脚本的汇总(2)

关于Oracle一些常用脚本的汇总(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  碎片检查

知识大全 一些常用的计划脚本(2)

  print_table纵向显示一行    createorreplace  procedureprint_table(p_queryinvarchar)  AUTHIDCURRENT_USER  

知识大全 DBA 常用Scripts(第一部分)

OracleDBA常用Scripts(第一部分)!  以下文字资料是由(历史新知网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  以下是

知识大全 Oracle DBA 常用 Script 第二部分(Tuning)

OracleDBA常用Script第二部分(Tuning)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 检查数据库数据字段命名规范与合法性的脚本

  做为一名开发DBA最重要的renweu是经常要检查开发人员或建模人员对数据库的命名规范是否严谨下文中将主要介绍一个检查数据库数据字段命名规范与合法性的脚本仅供大家参考  检查不符合数据库命名规范的

知识大全 一些 schema 的常用脚本归类介绍

  getcodesql获得某个存储过程包函数代码脚本  setfeedbackoff  setheadingoff  settermoutoff  setlinesize  settrimspool

知识大全 入门基础-Oracle常用脚本备忘

入门基础-Oracle常用脚本备忘  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!创建一个表T使之具

水电厂计算机监控系统模拟信号输出接口性能要求?

1模拟信号输出接口回路宜采用差分连接。  2模拟输出接口参数:  a.信号范围:电流型4~20mA;  电压型0~10V;  b.负载阻抗:电流型≤500Ω;  电压

水电厂计算机监控系统模拟信号输出接口性能要求?

1模拟信号输出接口回路宜采用差分连接。  2模拟输出接口参数:  a.信号范围:电流型4~20mA;  电压型0~10V;  b.负载阻抗:电流型≤500Ω;  电压