如何对比迁移前后的Oracle数据库性能

有越来越多的数据库都需要要迁移。如何衡量前后的数据库性能成了一个难点。本文使用AWR Compare Report来解决这个问题。

以下皆为测试库内容

环境描述

SID DBID OS 描述
finally 4033498616 windows 7 x64 假设为迁移后的数据库
zhadanren 97461353 Solaris Sparc 6 x64 假设为迁移前的数据库

过程

详细过程如下

导出snapshot数据

注意:

这里导出的snapshot最好包含业务最忙时的时间段,以便于更准确的衡量迁移前后的数据库性能。

相关sql:

create directory dpdir as ‘&dir_path‘ ;
@?/rdbms/admin/awrextr.sql

步骤:

1、创建directory
SQL> create directory dpdir as ‘/u01/dpdir‘ ;

Directory created.
2、执行相应的sql
SQL> @?/rdbms/admin/awrextr.sql

以下需要输入几个参数具体包括:

输入要导出snapshot的dbid,这里使用默认回车即可

Enter value for dbid:

snapshot的列表日期范围,默认只保留8天,可以全部列出,再具体找要导出的snapshot number。

Enter value for num_days:100

要导出的开始snapshot number

Enter value for begin_snap:271

要导出的截止snapshot number

Enter value for end_snap: 280

到导出文件的directory(其实awrextr.sql也是基于datapump的)

Enter value for directory_name: DPDIR

导出文件的名称

Enter value for file_name: zhadanren1026

然后就开始了导出过程。最后会在定义的directory下生成dump文件以及log日志。可以查看log日志,看是否正常导出。

Using the dump file prefix: zhadanren1026
|
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|  The AWR extract dump file will be located
|  in the following directory/file:
|   /u01/dpdir
|   zhadanren1026.dmp
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|  *** AWR Extract Started ...
|
|  This operation will take a few moments. The
|  progress of the AWR extract operation can be
|  monitored in the following directory/file:
|   /u01/dpdir
|   zhadanren1026.log
|

End of AWR Extract

导入snapshot数据

相关SQL:

create directory dpdir as ‘&dir_path‘ ;
@?/rdbms/admin/awrload.sql

步骤:

1、创建directory(源库也是使用datapump的方式导入的)
[email protected]FINALLY>create directory dpdir as ‘d:\apps\dpdir‘ ;

目录已创建。
2、然后将导出的dump文件上传到迁移后的数据库服务器相应的新创建的directory下。
3、执行相应的sql
[email protected]FINALLY>@?/rdbms/admin/awrload.sql

以下需要输入几个参数具体包括:

输入 directory_name 的值: DPDIR

这里注意不要包含文件后缀名。

输入 file_name 的值: zhadanren1026

这是临时使用schema,导入过程完成以后会自动删除。

输入 schema_name 的值: AWR_STAGE

临时schema 的 默认表空间

输入 default_tablespace 的值: SYSAUX

临时schema的默认临时表空间

输入 temporary_tablespace 的值: TEMP

然后就开始了导入过程。最后会在定义的directory下生成导入log日志。可以查看log日志,看是否正常导入。

... Creating AWR_STAGE user

|
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|  Loading the AWR data from the following
|  directory/file:
|   d:\apps\dpdir
|   zhadanren1026.dmp
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|  *** AWR Load Started ...
|
|  This operation will take a few moments. The
|  progress of the AWR load operation can be
|  monitored in the following directory/file:
|   d:\apps\dpdir
|   zhadanren1026.log
|
... Dropping AWR_STAGE user

End of AWR Load

生成AWR Compare report

经过上面的步骤,源库的snapshot信息已经导入到迁移后的数据库finally中了,下面我们可以使用AWR Compare report来衡量迁移前后的数据库性能。

相关sql:

查看snapshotSQL
select t.dbid,
       t.snap_id,
       to_char(begin_interval_time, ‘yyyymmddhh24miss‘) begin_time,
       to_char(end_interval_time, ‘yyyymmddhh24miss‘) end_time
  from DBA_HIST_SNAPSHOT t
 order by 1, 4 desc;
生成报告SQL
spool awr_compare_report.html
set echo off;
set veri off;
set feedback off;
set head off
set verify off
set lines 8000
select * from TABLE(DBMS_WORKLOAD_REPOSITORY.awr_diff_report_html(4033498616,1,315,316,
97461353,1,80,81));
spool off

步骤

1、 先找到迁移前数据库snapshot业务忙的时段相应的 snapshot id。

比如我们选择2016.10.26 7点到8点这个时间段。那么相应的snap_id起始为279截止为280。

select t.dbid,
       t.snap_id,
       to_char(begin_interval_time, ‘yyyymmddhh24miss‘) begin_time,
       to_char(end_interval_time, ‘yyyymmddhh24miss‘) end_time
  from DBA_HIST_SNAPSHOT t
 where dbid=97461353
 order by 1, 4 desc;

2、 找到迁移后数据库snapshot业务忙的时段相应的 snapshot id。

需要有对比性,所以一般选择相同时段来作为比较。不一定要同一日期,但是至少要选择有代表性的时间段。迁移后的数据库7点到8点时间段的snap_id 起始为412,截止为413。

select t.dbid,
       t.snap_id,
       to_char(begin_interval_time, ‘yyyymmddhh24miss‘) begin_time,
       to_char(end_interval_time, ‘yyyymmddhh24miss‘) end_time
  from DBA_HIST_SNAPSHOT t
 where dbid=4033498616
 order by 1, 4 desc;

根据上面的信息我们就可以使用DBMS_WORKLOAD_REPOSITORY.awr_diff_report_html来生成compare report了。

spool awr_compare_report.html
set echo off;
set veri off;
set feedback off;
set head off
set verify off
set lines 8000
select * from TABLE(DBMS_WORKLOAD_REPOSITORY.awr_diff_report_html(
97461353,1,279,280, 4033498616,1,412,413));
spool off

示例内容如下:

物理配置对比

负载对比这个比较重要,也是衡量迁移前后性能的重要指标(但是要谨慎选择好时间点,保证时间段内迁移前后数据库承载的业务量一致)

report里面内容很多,还包括了初始化参数的对比等,大家自行生成以后可以多看看。具体指标内容这里不再详述。

时间: 2024-10-27 12:41:31

如何对比迁移前后的Oracle数据库性能的相关文章

怎么样做好oracle数据库性能优化,包含哪些内容?

名称: 数据库可靠性服务(性能调优.性能诊断) 定义: 此服务指对用户的数据库进行性能方面的分析.评估.调整,以提高数据库系统的整体性能. 客户收益: 1.尽早发现性能瓶颈,及时调整,保障数据库稳定高效工作 2.根据客户业务特点,调整数据库配置,使数据库性能最优 3.保障系统业务数据的安全. 4.提升客户业务能力. 工作内容: 1.对数据库信息进行收集. 2.查找引起数据库性能下降的各种原因,制订解决方案 3.根据客户业务特点及数据库状态,制定数据库调优方案 4.在业务允许的情况下,对系统做好备

oracle数据库性能影响之Sql parse

1,Sql parse的种类 Sql parse又通常分为硬解析和软解析,当sql第一次执行的时候,会发生硬解析,之后的执行如果在shared pool中能找到就是软解析.因此,为提高数据性能,尽可能的让每次执行的SQL在shared pool找到. 2,SQL在哪些情况下会发送硬解析? 1)统计信息改变  2)Sql中的表上有做ddl操作,包括grant和revoke. 3)执行计划被踢出shared pool 4)开启了trace 5)绑定变量长度变化 6)启用outlin

Oracle数据库性能优化视频课程套餐(案例、实战、详细、全面)

套餐名称: Oracle数据库性能优化视频课程套餐(案例.实战.详细.全面) 套餐介绍: 风哥Oracle数据库性能优化培训套餐(案例.实战.详细.全面),包括内容: Oracle性能优化之执行计划管理.统计信息管理.性能诊断工具.性能跟踪工具.分区表管理.资源管理.操作系统工具.性能调整.物化视图.JOB自动任务管理等,套餐涉及10套课程,60个小时的课程,大量的案例. 套餐地址: http://edu.51cto.com/pack/view/id-974.html

ORACLE数据库性能优化之-->内存磁盘

1,内存结构优化概述 1.1 缓冲区 影响数据库运行性能的缓冲区包括可以共享的SGA和服务器进程私有的pga两大类,其中sga又包括共享池.大型池.java池.数据缓冲区.流池.redo log缓冲区. 1.2 自动内存管理 oracle一般采用自动内存管理来管理系统内存,由oracle自动管理和调整数据库实例的内存大小.在自动管理模式下,首先对初始化参数MEMORY_TARGET(目标内存大小)和MEMORY_MAX_TARGET(最大内存大小)进行配置,数据库调整目标内存大小,根据需要不断重

使用Oracle SQL Developer迁移MySQL至Oracle数据库

Oracle SQL Developer是Oracle官方出品的数据库管理工具.本文使用Oracle SQL Developer执行从MySQL迁移至Oracle数据库的操作. 2017年3月6日 操作步骤: 1.在Oracle数据库中创建移植资料档案库用户 资料档案库用户不是用来接收MySQL迁移数据的用户,而是进行数据迁移配置的用户. Oracle创建用户命令如下: create user migrater identified by migrater; alter user migrate

DB2数据库迁移数据到Oracle数据库

刚到公司后,领导交给我个任务:把DB2数据库中的数据导入到Oracle数据库,本人尝试以下方法,挺快的.还要导入db2jcc.jar.db2jcc_license_cu.jar.ojdbc14.jar三个相应的jar包. 数据迁移:1.在DB2数据库中通过以下表查询出表的结构SELECTTABNAME TAB, --表英文名称COLNAME COL, --列名称CASE WHEN TYPENAME='VARCHAR' THEN 'VARCHAR2'WHEN TYPENAME LIKE 'SMAL

oracle数据库性能调优

一:注意WHERE子句中的连接顺序: ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾. 尤其是“主键ID=?”这样的条件. 二: SELECT子句中避免使用 ‘ * ‘: ORACLE在解析的过程中, 会将'*' 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间 . 简单地讲,语句执行的时间越短越好(尤其对于系统的终端用户来说).而对于查

新课程上线:Oracle数据库11gR2(之五):性能调优

购买Oracle数据库课程套餐,享八五折优惠!! 套餐地址:http://edu.51cto.com/pack/view/id-807.html Oracle 11g R2 数据库的性能优化 数据库的性能问题是数据库领域里讨论最多的话题,因其而其牵扯到数据库原理.IO存储.服务器性能.前台应用等等,故性能问题十分考验优化者内功.本课程将讲述ORACLE数据库在各种应用环境下的调优方案,让你内(优化原理,优化思路)外(优化工具,技巧)兼修,早日成为优化达人. Oracle 数据库系列课程,共包含以

Oracle 数据库日常巡检

Oracle 数据库日常巡检 阅读目录 1. 检查数据库基本状况 2. 检查Oracle相关资源的使用情况 3. 检查Oracle数据库备份结果 4. 检查Oracle数据库性能 5. 检查数据库cpu.I/O.内存性能 6. 检查数据库安全性 7. 其他检查 回到顶部 1. 检查数据库基本状况 包含:检查Oracle实例状态,检查Oracle服务进程,检查Oracle监听进程,共三个部分. 1.1. 检查Oracle实例状态 select instance_name,host_name,sta