`
yr512656630
  • 浏览: 323082 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Oracle 系统性能变慢常规处理诊断及定位处理方法

阅读更多
系统性能变慢常规处理诊断及定位处理方法 

一、可能的系统现象:
1、业务变慢,尤其是工单相关的业务较慢;
2、主机系统资源率较高,数据库中的ACTIVE较多,有全表扫描;
3、数据库锁、BUFFER等待等

二、处理步骤和方法:
1、对于业务方面,有业务人员进行查询,包括程序升级,批量操作等。
2、对于系统方面可以从下面几个方面考虑;
  a、主机方面: 确定占用率较高的进程,分析对应的客户端进程的行为(什么机器、什么业务),在

服务器对端分析对应的ORACLE进程的行为(
    包括SQL语句、HASH值、调用次数、执行计划、统计值等)
  b、数据库方面:查询对应主机进程占用的系统资源,在SQL语句的行为同上;
  c、全表扫描,查看执行的语句和对应的业务,并验证相关执行计划是否合适,统计值是否合适;
   【如果执行计划有问题,此结果可以作为更新统计值的条件】
3、查询系统的等待事情和锁对象等;

三、具体可能的语句或工具
1、操作系统 使用NMON 、LSOF、glance、top、sar等;
   在HP主机上使用 glance 、lsof
   在AIX主机上使用nmon [ nmon-> u -> o  ] \lsof

2、
a、查询操作系统进程、DB SID和SQL语句,锁等待的语句
select * from v$sql  where address  in
(select sql_address
    from v$session  a
    where  paddr In
       (  select  addr  from v$process where spid
         in ( 8642776)
       )     
)

select * from v$process where addr in (select paddr from v$session where  sid in (select

session_id from v$locked_object where object_id in (
select object_id from v$locked_object where oracle_username = 'SDQD')))

select * from dba_objects  where object_id in(select object_id from v$locked_object)

select * from v$process where addr in (select paddr from v$session where  sid in (select

session_id from v$locked_object) )

select * from v$session where paddr in (select addr  from v$process where spid in ('14714'

,'14693','9807','29105' ) )
select spid  from v$process  where addr in (select paddr from v$session t where

t.SID='21')

b、统计值的查询、分析和组状图
select *  from  dba_tables;
select a.owner,a.table_name ,num_rows,blocks,last_analyzed  from dba_tables a where

a.sample_size > 1
  对比上面的抽样值和实际值 进行比较
   --非分区表
   select  a.owner   ,segment_name, a.bytes  size11, a.blocks ,b.blocks , a.blocks /

b.blocks     from dba_segments a  , dba_tables b
   where a.owner = b.owner and a.segment_name =b.table_name and b.sample_size > 1 and

b.blocks > 0 and a.partition_name  is null
  
 
--分区表
select  a.owner   ,segment_name,a.partition_name , a.bytes  , a.blocks ,b.blocks ,

a.blocks / b.blocks     from dba_segments a  , dba_tab_partitions  b
   where a.owner = b.table_owner  and a.segment_name =b.table_name and

b.partition_name=a.partition_name  and b.sample_size > 1 and b.blocks > 0 and

a.partition_name  is not   null

   对于结果 偏离1较多的>> 1或者 <<1 ,结合实际空间,可以进行快速的统计值更新。
   【此结果可以作为更新统计值的条件】


对于oracle 10G还需要考虑组状图 可以使用下列语句直接收集
  详细参考柱状图的统计方式。
大致的语句可以如下:
   在看Cost-Based Oracle Fundamentals一书时, 使用了如下的sql来模拟直方图的收集:

SQL> desc sales;
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
PROD_ID                                   NOT NULL NUMBER
CUST_ID                                   NOT NULL NUMBER
TIME_ID                                   NOT NULL DATE
CHANNEL_ID                                NOT NULL NUMBER
PROMO_ID                                  NOT NULL NUMBER
QUANTITY_SOLD                             NOT NULL NUMBER(10,2)
AMOUNT_SOLD                               NOT NULL NUMBER(10,2)

SQL>   select                                                          
  2      tenth                                           tenth,       
  3      min(PROD_ID)                                     low_val,    
  4      max(PROD_ID)                                     high_val,   
  5      max(PROD_ID) - min(PROD_ID)                       width,     
  6      round(100000 / (max(PROD_ID) - min(PROD_ID)),2)   height     
  7   from (                                                          
  8      select                                                       
  9              PROD_ID,                                             
10              ntile(10) over (order by PROD_ID) tenth              
11      from SALES                                                   
12   )                                                               
13   group by tenth                                                  
14   order by tenth                                                  
15   ;                                                               

     TENTH    LOW_VAL   HIGH_VAL      WIDTH     HEIGHT
---------- ---------- ---------- ---------- ----------
         1         13         24         11    9090.91
         2         24         30          6   16666.67
         3         30         34          4      25000
         4         34         40          6   16666.67
         5         40         48          8      12500
         6         48        117         69    1449.28
         7        117        124          7   14285.71
         8        124        130          6   16666.67
         9        130        138          8      12500
        10        138        148         10      10000

10 rows selected.

为了验证结果是否与直方图统计信息一致,对该表进行统计信息收集,并收集直方图信息。





---快速更新统计值
SQL>alter session set  db_file_multiblock_read_count=128;
--对表
SQL> exec dbms_stats.gather_table_stats('UCR_CRM1','TF_B_TRADE_BATDEAL', degree =>

6,estimate_percent => 20) ;
--对一个分区
SQL>exec dbms_stats.gather_table_stats(ownname => 'ownname',tabname => 'tabname',partname

=> 'partname',estimate_percent => 20,degree => 6)


c、执行计划的验证

   最简单的方式:在session 中使用SQL>set autotrace on ;
   更详细的方法见后面的方法。




    ORACLE EXPLAIN PLAN的总结
在ORACLE数据库中,需要对SQL语句进行优化的话需要知道其执行计划,从而针对性的进行调整.ORACLE

的执行计划的获得有几种方法,下面就来总结下

1、EXPLAIN的使用

    Oracle RDBMS执行每一条SQL语句,都必须经过Oracle优化器的评估。所以,了解优化器是如何选

择(搜索)路径以及索引是如何被使用的,对优化SQL语句有很大的帮助。Explain可以用来迅速方便地查

出对于给定SQL语句中的查询数据是如何得到的即搜索路径(我们通常称为Access Path)。从而使我们选

择最优的查询方式达到最大的优化效果。
1.1 、安 装                                                                              

                                     

要使用EXPLAIN首先要执行相应的脚本,创建出Explain_plan表。

具体脚本执行如下:

   $ORACLE_HOME/rdbms/admin/utlxplan.sql (UNIX)  该脚本后会生成一个表这个程序会创建一个名

为plan_table的表。

1.2 、使用
常规使用语法:
explain PLAN [ SET STATEMENT_ID [=] < string literal > ] [ INTO < table_name > ]
FOR < sql_statement >

其中:
STATEMENT_ID:是一个唯一的字符串,把当前执行计划与存储在同一PLAN中的其它执行计划区别开来。
TABLE_NAME:是plan表名,它结构如前所示,你可以任意设定这个名称。
SQL_STATEMENT:是真正的SQL语句。                                                         

       

比如:                                                                                   

                         

SQL>explain plan set statement_id='T_TEST' for select * from t_test;           

SQL>

Explained

执行下面语句可以查询到执行计划

SQL>SELECT A.OPERATION,OPTIONS,OBJECT_NAME,OBJECT_TYPE,ID,PARENT_ID
  2  FROM PLAN_TABLE  a
  3  WHERE STATEMENT_ID='T_TEST'
  4  ORDER BY Id;
也可以用这句话 select * from table(dbms_xplan.display); 可以把所有PLAN_TABLE里的数据罗列出

来。

2 、AUTOTRACE的使用方法

2.1、安装

用sys用户运行脚本ultxplan.sql

建立这个表的脚本是:(UNIX:$ORACLE_HOME/rdbms/admin, Windows:%ORACLE_HOME%\rdbms\admin)

ultxplan.sql。

SQL> connectsys/sys@colm2as sysdba;

SQL> @C:\oracle\ora92\rdbms\admin\utlxplan.sql;

SQL> create public synonym plan_table for plan_table;--建立同义词

SQL> grant all on plan_table to public;--授权所有用户



要在数据库中建立一个角色plustrace,用sys用户运行脚本plustrce.sql来创建这个角色,这个脚本在

目录(UNIX:$ORACLE_HOME/sqlplus/admin, Windows:%ORACLE_HOME%\sqlplus\admin)中;

SQL> @C:\oracle\ora92\sqlplus\admin\plustrce.sql;

然后将角色plustrace授予需要autotrace的用户;

SQL>grant plustrace to public;

经过以上步骤的设置,就可以在sql*plus中使用autotrace了

2、2 使用

使用起来非常方便,只要使用一条命令就可以了

SQL>SET AUTOTRACE ON;



*autotrace功能只能在SQL*PLUS里使用



  其他一些使用方法:

2.2.1、在SQLPLUS中得到语句总的执行时间

SQL> set timing on;

2.2.2、只显示执行计划--(会同时执行语句得到结果)

SQL>set autotrace on explain

比如:

sql> select count(*) from test;

count(*)

-------------

4



Execution plan

----------------------------

0            select statement ptimitzer=choose (cost=3 card=1)

1     0        sort(aggregate)

2     1           partition range(all)

3     2             table access (full) of 't_test'  (cost=3 card=900)


2.2.3、只显示统计信息---(会同时执行语句得到结果)

SQL>set  autotrace on statistics;

(备注:对于SYS用户,统计信息将会是0)

2.2.4、显示执行计划,屏蔽执行结果--(但语句实质还执行的

SQL> set autotrace on traceonly;  
(备注:同SET AUTOTRACE ON; 只不过不显示结果,显示计划和统计)

2.2.5、仅仅显示执行计划,屏蔽其他一切结果--(语句还是执行了)
SQL>set autotrace on traceonly explain;
对于仅仅查看大表的Explain Plan非常管用。
2.2.6、关闭
SQL>set autotrace off;
总结:SQLPLUS 下的自动显示功能,在看执行计划中其语句还是会被执行的。尤其在执行

UPDATE/DELETE语句时请千万注意,ORACLE是先执行脚本同时显示执行计划的,即使使用set autotrace

on traceonly explain;
这个时候推荐使用EXPLAIN PLAN FOR来看或者PL/SQL等第三方工具
3、第三方工具来看执行计划
   如果在PL/SQL中使用选择要查询语句显示执行计划,则只需要SQL WINDOWS 窗口里面输入要查询的

SQL语句,然后选择按键F5或者在菜单TOOLS?D?D>Explain Plan 菜单按键就可以在执行计划窗口查看该

语句的执行计划。
在TOAD语句中在执行当前的SQL窗口中选择下方的Explain PlanTAB页即可以查看要执行语句的执行计划

信息。
4、限制

explain真正的唯一的限制是用户不能去解释其它用户的表,视图,索引或其它类型,用户必须是所有

被解释事物的所有者,如果不是所有者而只有select权限,explain会返回一个错误。


转自:http://space.itpub.net/229689/viewspace-692853
分享到:
评论

相关推荐

    一个基于Qt Creator(qt,C++)实现中国象棋人机对战

    qt 一个基于Qt Creator(qt,C++)实现中国象棋人机对战.

    热带雨林自驾游自然奇观探索.doc

    热带雨林自驾游自然奇观探索

    冰川湖自驾游冰雪交融景象.doc

    冰川湖自驾游冰雪交融景象

    C51 单片机数码管使用 Keil项目C语言源码

    C51 单片机数码管使用 Keil项目C语言源码

    基于智能算法的无人机路径规划研究 附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    前端分析-2023071100789s12

    前端分析-2023071100789s12

    Delphi 12.3控件之Laz-制作了一些窗体和对话框样式.7z

    Laz_制作了一些窗体和对话框样式.7z

    ocaml-docs-4.05.0-6.el7.x64-86.rpm.tar.gz

    1、文件内容:ocaml-docs-4.05.0-6.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/ocaml-docs-4.05.0-6.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊

    学习笔记-沁恒第六讲-米醋

    学习笔记-沁恒第六讲-米醋

    工业机器人技术讲解【36页】.pptx

    工业机器人技术讲解【36页】

    基于CentOS 7和Docker环境下安装和配置Elasticsearch数据库

    内容概要:本文档详细介绍了在 CentOS 7 上利用 Docker 容器化环境来部署和配置 Elasticsearch 数据库的过程。首先概述了 Elasticsearch 的特点及其主要应用场景如全文检索、日志和数据分析等,并强调了其分布式架构带来的高性能与可扩展性。之后针对具体的安装流程进行了讲解,涉及创建所需的工作目录,准备docker-compose.yml文件以及通过docker-compose工具自动化完成镜像下载和服务启动的一系列命令;同时对可能出现的问题提供了应对策略并附带解决了分词功能出现的问题。 适合人群:从事IT运维工作的技术人员或对NoSQL数据库感兴趣的开发者。 使用场景及目标:该教程旨在帮助读者掌握如何在一个Linux系统中使用现代化的应用交付方式搭建企业级搜索引擎解决方案,特别适用于希望深入了解Elastic Stack生态体系的个人研究与团队项目实践中。 阅读建议:建议按照文中给出的具体步骤进行实验验证,尤其是要注意调整相关参数配置适配自身环境。对于初次接触此话题的朋友来说,应该提前熟悉一下Linux操作系统的基础命令行知识和Docker的相关基础知识

    基于CNN和FNN的进化神经元模型的快速响应尖峰神经网络 附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    网络小说的类型创新、情节设计与角色塑造.doc

    网络小说的类型创新、情节设计与角色塑造

    毕业设计-基于springboot+vue开发的学生考勤管理系统【源码+sql+可运行】50311.zip

    毕业设计_基于springboot+vue开发的学生考勤管理系统【源码+sql+可运行】【50311】.zip 全部代码均可运行,亲测可用,尽我所能,为你服务; 1.代码压缩包内容 代码:springboo后端代码+vue前端页面代码 脚本:数据库SQL脚本 效果图:运行结果请看资源详情效果图 2.环境准备: - JDK1.8+ - maven3.6+ - nodejs14+ - mysql5.6+ - redis 3.技术栈 - 后台:springboot+mybatisPlus+Shiro - 前台:vue+iview+Vuex+Axios - 开发工具: idea、navicate 4.功能列表 - 系统设置:用户管理、角色管理、资源管理、系统日志 - 业务管理:班级信息、学生信息、课程信息、考勤记录、假期信息、公告信息 3.运行步骤: 步骤一:修改数据库连接信息(ip、port修改) 步骤二:找到启动类xxxApplication启动 4.若不会,可私信博主!!!

    57页-智慧办公园区智能化设计方案.pdf

    在智慧城市建设的大潮中,智慧园区作为其中的璀璨明珠,正以其独特的魅力引领着产业园区的新一轮变革。想象一下,一个集绿色、高端、智能、创新于一体的未来园区,它不仅融合了科技研发、商业居住、办公文创等多种功能,更通过深度应用信息技术,实现了从传统到智慧的华丽转身。 智慧园区通过“四化”建设——即园区运营精细化、园区体验智能化、园区服务专业化和园区设施信息化,彻底颠覆了传统园区的管理模式。在这里,基础设施的数据收集与分析让管理变得更加主动和高效,从温湿度监控到烟雾报警,从消防水箱液位监测到消防栓防盗水装置,每一处细节都彰显着智能的力量。而远程抄表、空调和变配电的智能化管控,更是在节能降耗的同时,极大地提升了园区的运维效率。更令人兴奋的是,通过智慧监控、人流统计和自动访客系统等高科技手段,园区的安全防范能力得到了质的飞跃,让每一位入驻企业和个人都能享受到“拎包入住”般的便捷与安心。 更令人瞩目的是,智慧园区还构建了集信息服务、企业服务、物业服务于一体的综合服务体系。无论是通过园区门户进行信息查询、投诉反馈,还是享受便捷的电商服务、法律咨询和融资支持,亦或是利用云ERP和云OA系统提升企业的管理水平和运营效率,智慧园区都以其全面、专业、高效的服务,为企业的发展插上了腾飞的翅膀。而这一切的背后,是大数据、云计算、人工智能等前沿技术的深度融合与应用,它们如同智慧的大脑,让园区的管理和服务变得更加聪明、更加贴心。走进智慧园区,就像踏入了一个充满无限可能的未来世界,这里不仅有科技的魅力,更有生活的温度,让人不禁对未来充满了无限的憧憬与期待。

    一种欠定盲源分离方法及其在模态识别中的应用 附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    Matlab实现基于BO贝叶斯优化Transformer结合GRU门控循环单元时间序列预测的详细项目实例(含完整的程序,GUI设计和代码详解)

    内容概要:本文介绍了使用 Matlab 实现基于 BO(贝叶斯优化)的 Transformer 结合 GRU 门控循环单元时间序列预测的具体项目案例。文章首先介绍了时间序列预测的重要性及其现有方法存在的限制,随后深入阐述了该项目的目标、挑战与特色。重点描述了项目中采用的技术手段——结合 Transformer 和 GRU 模型的优点,通过贝叶斯优化进行超参数调整。文中给出了模型的具体实现步骤、代码示例以及完整的项目流程。同时强调了数据预处理、特征提取、窗口化分割、超参数搜索等关键技术点,并讨论了系统的设计部署细节、可视化界面制作等内容。 适合人群:具有一定机器学习基础,尤其是熟悉时间序列预测与深度学习的科研工作者或从业者。 使用场景及目标:适用于金融、医疗、能源等多个行业的高精度时间序列预测。该模型可通过捕捉长时间跨度下的复杂模式,提供更为精准的趋势预判,辅助相关机构作出合理的前瞻规划。 其他说明:此项目还涵盖了从数据采集到模型发布的全流程讲解,以及GUI图形用户界面的设计实现,有助于用户友好性提升和技术应用落地。此外,文档包含了详尽的操作指南和丰富的附录资料,包括完整的程序清单、性能评价指标等,便于读者动手实践。

    漫画与青少年教育关系.doc

    漫画与青少年教育关系

    励志图书的成功案例分享、人生智慧提炼与自我提升策略.doc

    励志图书的成功案例分享、人生智慧提炼与自我提升策略

    人工智能在食品安全与检测中的应用.doc

    人工智能在食品安全与检测中的应用

Global site tag (gtag.js) - Google Analytics