ITPUB??ì3
ITPUB论坛 » Oracle新技术/11g » 11g新特性-重演(replay)

离线 jimmyhe1981
(小荷)



精华贴数 1
个人空间 0
技术积分 635 (2952)
社区积分 6 (14143)
注册日期 2006-2-25
论坛徽章:2
生肖徽章2007版:鼠生肖徽章2007版:鸡    
      

发表于 2007-12-16 23:27 
11g新特性-重演(replay)

11g新特性-重演(replay)
· 作者 小荷||【转载时请务必以超链接形式标明文章原始出处和作者信息】
· 永久链接: http://www.oracleblog.cn/study-note/11g-new-feature-replay/ ·


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

11g可以将生产库的一些负载replay到测试库上,这就便于我们在测试上进行真实的重演现网的状态。otn上介绍是用em,其实很多dba还是喜欢用命令行吧,在这里简单介绍下replay的架构和其主要操作的步骤:
replay的架构:


前期准备:
创建和生产库逻辑结构类似的测试库:可以用rman、standby snapshot、exp/imp

一、捕获数据库负载
1.重启数据库(非必要选项)
2.建立负载过滤器
3.建立负载文件存储目录
4.开始捕获负载
5.停止捕获负载
6.导出捕获的负载AWR数据

二 预处理负载
建立重演的存储文件路径,传输文件到此路径。
将捕获文件转换为重演文件,此步骤耗时耗资源,请在需要重演的测试库上进行,不要在生产库上进行!!

三、重演负载
wrc用于模拟将原生产库上的客户端的负载请求,模拟到测试库上
1.将测试库的系统时间调整为和开始捕获生产库的时间(非必要选项)
2.关闭测试机上来自外界的影响:通过dblink的连接、外部表、目录对象、URL、email
3.建立wrc(Workload Replay Client):wrc用于模拟将原生产库上的客户端的负载请求,模拟到测试库,可以先校准wrc
4.初始化重演
5.重新配置连接
6.设置负载重演的选项
7.开启wrc重演
8.开始负载重演
9.结束负载重演
10.导出负载重演的AWR数据

四、分析重演的负载

下面我们就来进行实际的演练(AWR的相关知识和重演之后的分析不在此处介绍):
在生产库上:
1.建立负载过滤器
建立过滤器filter_test用于过滤掉user为system的规则:

SQL> --create capture filter
SQL> BEGIN
  2  DBMS_WORKLOAD_CAPTURE.ADD_FILTER (
  3  fname => 'filter_test',
  4  fattribute => 'USER',
  5  fvalue => 'SYSTEM');
  6  END;
  7  /

PL/SQL procedure successfully completed.

2.建立负载文件存储目录

SQL> --create workload dir
SQL> create directory test_dir as '/oradata/dir_for_testfile';

Directory created.

3.开始捕获负载
历时120秒,如果没有指定历时,需要使用FINISH_CAPTURE存储过程来停止。
注意2点:
(1).目录不能有其他文件!!!不然会报错15505:

SQL> BEGIN
  2  DBMS_WORKLOAD_CAPTURE.START_CAPTURE (name => 'peak_120s',
  3  dir => 'TEST_DIR',
  4  duration => 120);
  5  END;
  6  /
BEGIN
*
ERROR at line 1:
ORA-15505: cannot start workload capture because instance 1 encountered errors
while accessing directory "/oradata/dir_for_testfile"
ORA-06512: at "SYS.DBMS_WORKLOAD_CAPTURE", line 799
ORA-06512: at line 2

(2).dir => ‘DIR_NAME’此处需要大写,教材中是小写,会报错20222:

SQL> BEGIN
  2  DBMS_WORKLOAD_CAPTURE.START_CAPTURE (name => 'peak_120s',
  3  dir => 'test_dir',
  4  duration => 120);
  5  END;
  6  /
BEGIN
*
ERROR at line 1:
ORA-20222: Invalid DB State or Input. Input "test_dir" is not a valid DIRECTORY
object!
ORA-06512: at "SYS.DBMS_WORKLOAD_CAPTURE", line 783
ORA-06512: at line 2

正确的执行应该为:

SQL> BEGIN
  2  DBMS_WORKLOAD_CAPTURE.START_CAPTURE (name => 'peak_120s',
  3  dir => 'TEST_DIR',
  4  duration => 120);
  5  END;
  6  /

PL/SQL procedure successfully completed

4. 执行负载脚本test.sql

SQL> conn hr/hr
Connected.
SQL> @/oradata/test.sql

其中 test.sql为:

[oracle@localdb oradata]$ cat test.sql

declare
  l_stmt varchar2(2000);
begin
  for ctr in 1..10000 loop
     l_stmt := 'insert into xxx values (''''||
     lpad(round(dbms_random.value(1,9999999999999999999)),20,0)||'''')';
     dbms_output.put_line(l_stmt);
     execute immediate l_stmt;
     commit;
  end loop;
end;
/

5.可等待历时过后,或手工stop捕获:

SQL> exec dbms_workload_capture.FINISH_CAPTURE();

PL/SQL procedure successfully completed.

6.导出捕获的负载AWR数据
(略)

——————————————————————-
在测试库上:
1.建立负载文件存储目录

SQL> create directory test_dir as '/oradata/dir_for_testfile';

Directory created.

将生产库上的负载文件传输到测试库此目录

2.预处理负载。
注意要让SYSAUX有足够的空间剩余,不然会报错1658:

SQL> BEGIN
  2  DBMS_WORKLOAD_REPLAY.PROCESS_CAPTURE (capture_dir => 'TEST_DIR');
  3  END;
  4  /
BEGIN
*
ERROR at line 1:
ORA-01658: unable to create INITIAL extent for segment in tablespace SYSAUX
ORA-06512: at "SYS.DBMS_WORKLOAD_REPLAY", line 1138
ORA-06512: at line 2

我们增大空间后再次处理:

SQL> select file_name from dba_data_files where tablespace_name='SYSAUX';

FILE_NAME
--------------------------------------------------------------------------------
/oradata/dfile/oralocal/sysaux01.dbf

SQL> alter database datafile '/oradata/dfile/oralocal/sysaux01.dbf' resize 800m;

Database altered.

SQL> BEGIN
  2  DBMS_WORKLOAD_REPLAY.PROCESS_CAPTURE (capture_dir => 'TEST_DIR');
  3  END;
  4  /

PL/SQL procedure successfully completed.

3.wrc校准:

[oracle@localdb dir_for_testfile]$ wrc mode=calibrate replaydir=/oradata/dir_for_testfile

Workload Replay Client: Release 11.1.0.6.0 - Production on Fri Dec 14 02:52:09 2007

Copyright (c) 1982, 2007, Oracle.  All rights reserved.


Report for Workload in: /oradata/dir_for_testfile
-----------------------

Recommendation:
Consider using at least 1 clients divided among 1 CPU(s).

Workload Characteristics:
- max concurrency: 1 sessions
- total number of sessions: 2

Assumptions:
- 1 client process per 50 concurrent sessions
- 4 client process per CPU
- think time scale = 100
- connect time scale = 100
- synchronization = TRUE

4.初始化重演

SQL> BEGIN
  2  DBMS_WORKLOAD_REPLAY.INITIALIZE_REPLAY (replay_name => 'peak_120s',
  3  replay_dir => 'TEST_DIR');
  4  END;
  5  /

PL/SQL procedure successfully completed.

5.设置负载重演的选项

SQL> BEGIN
  2  DBMS_WORKLOAD_REPLAY.PREPARE_REPLAY (synchronization => TRUE);
  3  END;
  4  /

PL/SQL procedure successfully completed.

6. wrc重演,在DBMS_WORKLOAD_REPLAY.START_REPLAY之前,会提示Wait for the replay to start

[oracle@localdb dir_for_testfile]$ wrc system/oracle mode=replay replaydir=/oradata/dir_for_testfile

Workload Replay Client: Release 11.1.0.6.0 - Production on Fri Dec 14 02:56:44 2007

Copyright (c) 1982, 2007, Oracle.  All rights reserved.


Wait for the replay to start (02:56:44)

7.开始负载重演(由于wrc会一直等待,我们需要另开一个窗口执行)

SQL> BEGIN
  2  DBMS_WORKLOAD_REPLAY.START_REPLAY ();
  3  END;
  4  /

PL/SQL procedure successfully completed.

SQL>

此时另一端wrc会出现:

[oracle@localdb dir_for_testfile]$
[oracle@localdb dir_for_testfile]$ wrc system/oracle mode=replay replaydir=/oradata/dir_for_testfile

Workload Replay Client: Release 11.1.0.6.0 - Production on Fri Dec 14 02:56:44 2007

Copyright (c) 1982, 2007, Oracle.  All rights reserved.


Wait for the replay to start (02:56:44)

Replay started (02:58:05)

8.结束负载重演

SQL> BEGIN
  2  DBMS_WORKLOAD_REPLAY.CANCEL_REPLAY ();
  3  END;
  4  /

  
PL/SQL procedure successfully completed.

9.导出负载重演的AWR数据
(略)

四、分析重演的负载
(略)

检查测试库上,我们再检查一下是否10000行记录已经重演:

[oracle@localdb dir_for_testfile]$ sqlplus hr/hr

SQL*Plus: Release 11.1.0.6.0 - Production on Fri Dec 14 03:01:04 2007

Copyright (c) 1982, 2007, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select count(*) from xxx;

  COUNT(*)
----------
     10000

确实发现已经重演,重演时的负载如何,就需要通过后续的分析了,在这里不展开。

其他:
重演的注意点:
1.注意生产库和测试库的数据库版本要一致
2.有些客户端的请求不会被捕获,因此不能让重演:
■ Direct path load of data from external files using utilities such as SQL*Loader
■ Shared server requests (Oracle MTS)
■ Oracle Streams
■ Advanced replication streams
■ Non-PL/SQL based Advanced Queuing (AQ)
■ Flashback queries
■ Oracle Call Interface (OCI) based object navigations
■ Non SQL-based object access
■ Distributed transactions (any distributed transactions that are captured will be
replayed as local transactions)
■ Remote DESCRIBE and COMMIT operations

[ 本帖最后由 jimmyhe1981 于 2007-12-16 23:33 编辑 ]


__________________
*************************
Welcome to my blog:http://www.oracleblog.cn
*************************
只看该作者    顶部
在线/呼叫 foxmile
蚊子
难得糊涂啊


精华贴数 0
个人空间 49
技术积分 11899 (100)
社区积分 3080 (431)
注册日期 2004-5-8
论坛徽章:32
奥运纪念徽章     
      

发表于 2007-12-16 23:31 
关注一下。11g还没接触过。楼主加油啊


__________________
我如狂风中的小草,亦似暴雨中的危楼,狂风暴雨这么多年了。我还是我。
朋友的淘宝店铺(女装哟)
http://shop36222150.taobao.com

我的blog   http://space.itpub.net/?79499
只看该作者    顶部
离线 Kamus
版主


精华贴数 51
个人空间 400
技术积分 46463 (13)
社区积分 3555 (373)
注册日期 2002-5-26
论坛徽章:29
现任管理团队成员2007年度ITPUB最佳技术原创精华ITPUB元老Heart of PUBITPUB北京九华山庄2008年会纪念徽章管理团队2007贡献徽章
参与2007年甲骨文全球大会(中国上海)纪念ITPUB北京香山2007年会纪念徽章管理团队2006纪念徽章会员2007贡献徽章会员2006贡献徽章授权会员

发表于 2007-12-17 02:47 
不错,给个小精华

但是用OEM来做这个更简单了,点点鼠标的事儿,相信10g以后OEM的使用会越来越多。


__________________
有事情请发Gmail邮箱,站内IM可能不能及时回复。    

***Chanel [K]***

从明天起, 做一个幸福的人  
喂马, 劈柴, 周游世界  
从明天起, 关心粮食和蔬菜  
我有一所房子 面朝大海, 春暖花开
只看该作者    顶部
离线 yudingchu
儿童心理学=未来


来自 庐山
精华贴数 0
个人空间 46
技术积分 2454 (628)
社区积分 4305 (322)
注册日期 2007-11-1
论坛徽章:8
奥运纪念徽章NBA2008季后赛纪念徽章授权会员2008北京奥运纪念徽章:举重2008北京奥运纪念徽章:自行车2008北京奥运纪念徽章:花样游泳
2008北京奥运纪念徽章:摔跤2008北京奥运纪念徽章:排球    

发表于 2007-12-17 06:40 
谢谢分享


只看该作者    顶部
离线 mustapha
高级会员


来自 没的看了
精华贴数 1
个人空间 0
技术积分 5075 (256)
社区积分 81 (3778)
注册日期 2006-5-18
论坛徽章:13
会员2007贡献徽章授权会员2008北京奥运纪念徽章:沙滩排球生肖徽章2007版:猴生肖徽章2007版:鼠生肖徽章2007版:鸡
ITPUB新首页上线纪念徽章生肖徽章:虎数据库板块每日发贴之星数据库板块每日发贴之星生肖徽章:龙生肖徽章:马

发表于 2007-12-17 09:37 
有时间我也测一把


__________________
没事就运动运动~~~~~~~~~~~~~
只看该作者    顶部
离线 biti_rainy
人生就是如此



精华贴数 36
个人空间 0
技术积分 110683 (4)
社区积分 11722 (121)
注册日期 2001-12-12
论坛徽章:41
现任管理团队成员ITPUB长老会成员ITPUB元老年度论坛发贴之星年度论坛发贴之星ITPUB北京九华山庄2008年会纪念徽章
管理团队2007贡献徽章参与2007年甲骨文全球大会(中国上海)纪念ITPUB北京香山2007年会纪念徽章管理团队2006纪念徽章会员2007贡献徽章会员2006贡献徽章

发表于 2007-12-17 09:56 
如果截获负载期间日志量生成比较大以及sql 运行的次数很多…… 不知道这个文件会多大。

比如常规数据生成的归档有30G ,这个过程中每秒运行了7000次SQL 。这样得产生多大的文件,会不会对主数据库性能构成太大的影响。


__________________
眼界决定边界,态度决定高度
blog:
人生就是如此
只看该作者    顶部
离线 rollingpig
版主


精华贴数 5
个人空间 100
技术积分 26737 (30)
社区积分 1664 (661)
注册日期 2001-10-18
论坛徽章:50
现任管理团队成员2006年度最佳技术回答ITPUB北京九华山庄2008年会纪念徽章蓝锆石海蓝宝石会员2007贡献徽章
2008北京奥运纪念徽章:沙滩排球每日论坛发贴之星    

发表于 2007-12-17 10:32 
建议移到新技术讨论板块……


__________________
欢迎访问乐恒的空间
提问的智慧Oracle版
0。尝试在google,论坛,metalink,online document里搜索。
1。写清楚你的执行log,报错信息,写清楚DB version , OS
2。Instance 方面的问题,请贴出alertlog
3。network的问题,贴出server的listener.ora , sqlnet.ora 并运行lsnrctl service, 贴出client的tnsnames.ora , sqlnet.ora ,并运行tnsping
4。DB总体性能问题,请于peak time做statspack,并上传statspack report。同时附上CPU/MEM配置,以及CPU IDLE/free menory的情况
5。SQL性能问题,列出当前SQL,以及PLAN。同时应提供表结构,index情况,Table的record数。CBO/RBO,table是否analyze等信息。
6。确保你的问题是Oracle相关。
提问的智慧 for Oracle[展开版]
欢迎访问乐恒的空间
只看该作者    顶部
离线 cc59
Love oracle



精华贴数 0
个人空间 326
技术积分 10753 (110)
社区积分 13740 (104)
注册日期 2004-8-13
论坛徽章:66
现任管理团队成员奥运纪念徽章    
      

发表于 2007-12-18 14:52 
这里用em还是要方便得多哟


__________________
My blog: tuning rac and using parallel


msn:liuyi8903@hotmail.com
只看该作者    顶部
离线 huanyouchen



精华贴数 0
个人空间 0
技术积分 2 (221620)
社区积分 0 (1693372)
注册日期 2008-2-3
论坛徽章:0
      
      

发表于 2008-2-3 18:28 
挺好的东西

11g的特性相当不错了,不过命令行的方式技术员应该很好的掌握


只看该作者    顶部
离线 pandzhi
菜頭


精华贴数 0
个人空间 0
技术积分 939 (1957)
社区积分 1034 (911)
注册日期 2005-11-5
论坛徽章:26
NBA常规赛纪念章2008北京奥运纪念徽章:皮划艇静水2008北京奥运纪念徽章:羽毛球2008北京奥运纪念徽章:花样游泳2008北京奥运纪念徽章:拳击2008北京奥运纪念徽章:曲棍球
数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星 

发表于 2008-2-5 14:15 
沒了解過11G,有空要看看了.


__________________
只看该作者    顶部
相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问