我的编程空间,编程开发者的网络收藏夹
学习永远不晚

实战:ORACLE SQL Performance Analyzer的使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

实战:ORACLE SQL Performance Analyzer的使用


通过 SPA,您可以根据各种更改类型(如初始化参数更改、优化器统计刷新和数据库升级)播放特定的

SQL 或整个 SQL 负载,然后生成比较报告,帮助您评估它们的影响.



在 Oracle Database 11g 之前的版本中,我必须捕获所有 SQL 语句,通过跟踪运行这些语句,

然后得到执行计划 — 这是一项极其耗时又极易出错的任务。有了新版本之后,我不需要再那样做了,

我改用非常简单而有效的 SQL Performance Analyzer。


---使用场景


1.数据库升级

2.实施优化建议

3.更改方案

4.收集统计信息

5.更改数据库参数

6.更改操作系统和硬件




create tablespace test

datafile 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\test01.DBF'

size 5000m

autoextend on

next 100m maxsize unlimited

extent management local autoallocate

segment   space management auto;




create table t1

(

sid int not null ,

sname varchar2(10)

)

tablespace test;






-2.-循环导入数据

declare

        maxrecords constant int:=1000000;

        i int :=1;

    begin

        for i in 1..maxrecords loop

          insert into t1 values(i,'ocpyang');

        end loop;

    dbms_output.put_line(' 成功录入数据! ');

    commit;

    end; 

/



update t1 set sname='苏州' where sid=500001;


update t1 set sname='南京' where sid=600001;



---3.收集统计信息


exec dbms_stats.gather_table_stats(USER,'T1',CASCADE=>TRUE)



alter system flush shared_pool;


---4.执行查询


select count(*) from t1 where sid<=100;



select count(*) from t1 where sid<=500;



select count(*) from t1 where sid>50000;



---5.新建STS


BEGIN

  DBMS_SQLTUNE.DROP_SQLSET(

    sqlset_name => 'OCPYANG_STS'

    );

END;

/


BEGIN

  DBMS_SQLTUNE.CREATE_SQLSET(

    sqlset_name => 'OCPYANG_STS', 

    sqlset_owner => 'SYS',

    description  => 'ocpyangtest');

END;

/



---6.加载sql优化集


set serveroutput on

DECLARE 

cur01 dbms_sqltune.sqlset_cursor;

BEGIN 

open cur01 for select value(a) from table(dbms_sqltune.select_cursor_cache

(

basic_filter => 'sql_text like ''%t1%'' and parsing_schema_name =''SYS''',

attribute_list => 'ALL'

)

) a; 

dbms_sqltune.load_sqlset(

sqlset_name => 'OCPYANG_STS',

populate_cursor => cur01);

close cur01;

END; 

/




---7.查询sql优化集


select sql_id,sql_text from dba_sqlset_statements

where sqlset_name='OCPYANG_STS' and sql_text like '% from t1%';








---8.新建SPA


var v_task varchar2(64);

begin

:v_task:=dbms_sqlpa.create_analysis_task(

sqlset_name => 'OCPYANG_STS', 

task_name => 'SPA01'

);

end;

/












---9.执行SPA


begin

dbms_sqlpa.execute_analysis_task

(

task_name => 'SPA01',

execution_type => 'test execute',

execution_name => 'before_change'

);

end;

/








---10.改变



create index index_01 on t1(sid,sname)

tablespace test;



exec dbms_stats.gather_table_stats(USER,'T1',CASCADE=>TRUE)


---11.改变后执行


begin

dbms_sqlpa.execute_analysis_task

(

task_name => 'SPA01',

execution_type => 'test execute',

execution_name => 'after_change'

);

end;

/





col TASK_NAME format a30

col EXECUTION_NAME for a30

select execution_name,

status,

execution_end

from DBA_ADVISOR_EXECUTIONS

where task_name='SPA01'

order by execution_end

/


EXECUTION_NAME                 STATUS      EXECUTION_END

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

before_change                  COMPLETED   2014-05-28 15:43:58

after_change                   COMPLETED   2014-05-28 15:44:58




---12.执行任务比较


begin 

dbms_sqlpa.EXECUTE_ANALYSIS_TASK(

task_name        => 'SPA01', 

execution_type   => 'compare performance', 

execution_params => dbms_advisor.arglist(

'execution_name1', 

'before_change', 

'execution_name2', 

'after_change'));

end;

/





---13.生产报告


set serveroutput on size 999999

set long 100000000

set pagesize 0

set linesize 200

set longchunksize 200

set trimspool on

spool e:\report.txt


select DBMS_SQLPA.REPORT_ANALYSIS_TASK('SPA01') from dual;


spool off;


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

实战:ORACLE SQL Performance Analyzer的使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

spring boot实战之使用JSP的示例

前后端分离的架构有其优势,但具体情况具体分析,并不是任何时候使用前后端分离架构都是合适的。我最近就体会到其中的坑,因为部门属性的问题,前端项目占比较低,所以公司前端基本上都是新手,结果就是后端接口完成了一个多月,前端还在加班加点的赶。前后端
2023-05-31

使用go连接clickhouse的实战操作

这篇文章主要给大家介绍了关于使用go连接clickhouse的实战操作,文中通过实例代码介绍的非常详细,对大家学习或者使用go具有一定的参考学习价值,需要的朋友可以参考下
2023-03-19

Go使用proto3的踩坑实战记录

这篇文章主要给大家介绍了关于Go使用proto3的踩坑记录,文中通过实例代码介绍的非常详细,对大家学习或者会用Go语言具有一定的参考学习价值,需要的朋友可以参考下
2023-02-13

vue3使用socket.io的踩坑实战记录

Socket.io将Websocket和轮询机制以及其它的实时通信方式封装成了通用的接口,并且在服务端实现了这些实时机制的相应代码,下面这篇文章主要给大家介绍了关于vue3使用socket.io踩坑的相关资料,需要的朋友可以参考下
2023-03-19

Node.js模块Modules的使用实战教程

这篇文章主要介绍了Node.js模块Modules的使用,模块就是一个声明了装饰器@Module()的类。装饰器@Module()提供了元数据,以便让Nest组织应用程序结构
2023-05-15

Oracle SQL中除法运算的实际应用

标题:Oracle SQL中除法运算的实际应用Oracle SQL中的除法运算在数据处理和分析中具有重要的作用,通过除法运算可以计算数据之间的比率、百分比、平均值等各种指标。本文将通过具体的代码示例介绍Oracle SQL中除法运算的实际
Oracle SQL中除法运算的实际应用
2024-03-10

MySQL实战之Insert语句的使用心得

一、Insert的几种语法1-1.普通插入语句INSERT INTO table (`a`, `b`, `c`, ……) VALUES ('a', 'b', 'c', ……);这里不再赘述,注意顺序即可,不建议小伙伴们去掉前面括号的内容,别
2022-05-11

使用Pyinstaller的最新踩坑实战记录

前言 将py编译成可执行文件需要使用PyInstaller,之前给大家介绍了关于利用PyInstaller将python程序.py转为.exe的方法,在开始本文之前推荐大家可以先看下这篇文章,本文主要给大家介绍了Pyinstaller最新踩
2022-06-04

Redis实战之Lettuce的使用技巧详解

目录一、摘要二、Lettuce2.1、基本使用2.2、同步操作2.3、异步操作2.4、响应式编程2.5、发布和订阅2.6、客户端资源与参数配置2.7、线程池配置2.8、主从模式配置2.9、哨兵模式配置2.10、Cluster 集群模式配置三
2022-12-23

Vue3中使用vant的踩坑实战日记

Vant是有赞前端团队开源的移动端组件库,于2017年开源,已持续维护4年时间,下面这篇文章主要给大家介绍了关于Vue3中使用vant的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
2022-11-13

SQL Server2019安装的详细步骤实战记录(亲测可用)

目录共存问题安装总结共存问题我之前一直使用的是SQL2012版本的数据库管理工具,为了与时俱进,我也尝试更新一下版本,当然SQLServer管理工具是可以多版本并存的,也就是你可以不用卸载你之前的版本,继续安装新版本使用。安装第一步:
2022-06-13

编程热搜

目录