Welcome 微信登录

首页 / 数据库 / MySQL / Oracle dba常用脚本

以下为Oracle dba常用的脚本1、检查数据缓冲区和共享区命中率 
  1. declare   
  2. reads_value number(15);  
  3. direct_value number(15);  
  4. lob_value number(15);  
  5. consical_value number(15);  
  6. db_value number(15);  
  7. x number;  
  8. y number;  
  9. z number;  
  10. begin   
  11.   select value into reads_value from v$sysstat where name ="physical reads";   
  12.    select value into direct_value from v$sysstat where name ="physical reads direct";   
  13.   select value into lob_value from v$sysstat where name ="physical reads direct (lob)";   
  14.    select value into consical_value from v$sysstat where name ="consistent gets";   
  15.   select value into db_value from v$sysstat where name = "db block gets";   
  16.   x:=direct_value+lob_value;  
  17.     
  18.   y:=1-(reads_value-x)/(consical_value+db_value-x);  
  19.   dbms_output.put_line("数据缓冲区命中率是:"||y);  
  20.   if(y>=0.9) then  
  21.    dbms_output.put_line("命中率大于0.9数据缓存大小比较合适");  
  22.   else   
  23.     dbms_output.put_line("数据缓存命中率小于0.9,请调试db_cache_size大小");  
  24.   end if;  
  25.   select sum(pinhits-reloads)/sum(pins) into z from v$librarycache;  
  26.   dbms_output.put_line("共享区命中率是:"||z);  
  27.   if(z>=0.9) then  
  28.    dbms_output.put_line("共享区命中率大于0.9大小比较合适");  
  29.   else   
  30.     dbms_output.put_line("共享区命中率小于0.9,请调试db_cache_size大小");  
  31.   end if;  
  32. end;  
2、检查表空间的是使用情况 
  1.  select a.tablespace_name,total,free,(total-free)/total used from  
  2. (select tablespace_name,sum(bytes)/1024/1024 total from dba_data_files group by tablespace_name) a,   
  3. (select tablespace_name,sum(bytes)/1024/1024 free from dba_free_space group by tablespace_name) b  
  4. where a.tablespace_name=b.tablespace_name;  
3、检查和表空间生成语句
  1. --表空间生成语句,请在sql窗体中执行  
  2. select dbms_metadata.get_ddl("TABLESPACE",tablespace_name) from dba_tablespaces;  
  3. --表生成语句  
  4. select dbms_metadata.get_ddl("TABLE",upper("&TABLE_NAME"),upper("&USER_NAME")) from dual;  
4、找出系统中cpu消耗和io比较大的语句
  1. select SQL_TEXT,SQL_FULLTEXT from v$sql a where a.HASH_VALUE   
  2. in (select hash_value from v$sqlarea where buffer_gets>1000000  
  3. or disk_reads>1000000/*order by buffer_gets+disk_reads desc*/);  
5、找出当前系统中比较慢的sql     ①aix中通过topas命令找出cpu系统比较大的pid     ②通过sql语句方法找出具体语句 
  1. --spid为进程号  
  2. select SQL_TEXT,SQL_FULLTEXT,FIRST_LOAD_TIME from v$sql where ADDRESS=(select SQL_ADDRESS from v$session where   
  3. PADDR=(select ADDR from v$process where spid=&&spid));  
6、找出比较多的表空间碎片 
  1. select tablespace_name,  
  2. count(*) chunks ,  
  3. max(bytes/1024/1024) max_chunk  
  4.   from dba_free_space  
  5. group by tablespace_name;  
说明:得分越高,表空间的碎片越大Debian上安装Oracle客户端Oracle 锁问题相关资讯      Oracle基础教程 
  • Oracle块编程返回结果集详解  (11/10/2013 10:45:58)
  • Oracle基础教程之设置系统全局区  (08/22/2013 14:24:00)
  • Oracle基础教程知识点总结  (06/18/2013 07:43:32)
  • Oracle基础教程之tkprof程序详解  (10/22/2013 11:49:50)
  • Oracle基础教程之sqlplus汉字乱码  (07/18/2013 16:30:00)
  • Oracle 管理之 Linux 网络基础  (02/16/2013 18:37:35)
本文评论 查看全部评论 (0)
表情: 姓名: 字数