当前所在位置:珠峰网资料 >> 计算机 >> Oracle认证 >> 正文
11G数据库重放新特性的测试
发布时间:2010/10/15 10:10:41 来源:www.xue.net 编辑:城市总裁吧
      首先创建测试用户:

  SQL> conn / as sysdba

  Connected.

  SQL> select name from v$datafile;

  NAME

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

  /oradata/test11g/system01.dbf

  /oradata/test11g/sysaux01.dbf

  /oradata/test11g/undotbs01.dbf

  /oradata/test11g/users01.dbf

  /oradata/test11g/example01.dbf

  SQL> create tablespace test datafile '/oradata/test11g/test01.dbf' size 50m;

  Tablespace created.

  SQL>  grant connect,resource to test identified by test;

  Grant succeeded.

  SQL> alter user test default tablespace test;

  User altered.

  SQL> create restore point sp1;

  Restore point created.

  SQL> create or replace directory test as '/home/oracle/dbcapture';

  Directory created.

  SQL> grant all on directory test to test;

  Grant succeeded.

  测试环境已经建立好。

  一、启动捕获进程

  SQL> conn system/oracle

  Connected.

  SQL> EXEC DBMS_WORKLOAD_CAPTURE.START_CAPTURE('CAPTURE1','TEST');

  PL/SQL procedure successfully completed.

  SQL> SELECT ID,NAME,DBNAME,DBVERSION,DIRECTORY,STATUS FROM DBA_WORKLOAD_CAPTURES;

  ID NAME       DBNAME     DBVERSION  DIRECTORY  STATUS

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

  1 CAPTURE1   TEST11G    11.2.0.1.0 TEST       IN PROGRESS

  数据库后台ALERT日志文件中可以看到如下信息:

  Sun Sep 26 09:31:18 2010

  DBMS_WORKLOAD_CAPTURE.START_CAPTURE(): Starting database capture at 09/26/2010 09:31:17

  test对象对应的操作系统目录下将会生成几个文件:

  [oracle@dbtest ~]$ ls -l dbcapture/

  total 20

  drwxr-xr-x  2 oracle oinstall 4096 Sep 26 09:31 cap

  drwxr-xr-x  3 oracle oinstall 4096 Sep 26 09:31 capfiles

  -rw-r--r--  1 oracle oinstall    0 Sep 26 09:31 wcr_cap_00001.start

  二、模拟数据库活动

  SQL> CONN TEST/TEST

  ERROR:

  ORA-01017: invalid username/password; logon denied

  11G的密码已经区分大小写了。

  Warning: You are no longer connected to ORACLE.

  SQL> conn test/test

  Connected.

  SQL> CREATE TABLE T(ID INT,NAME VARCHAR2(30));

  Table created.

  SQL> ! vi insert.sql

  INSERT INTO T VALUES(1,'ICOL$');

  INSERT INTO T VALUES(2,'I_USER1');

  INSERT INTO T VALUES(3,'CON$');

  INSERT INTO T VALUES(4,'UNDO$');

  INSERT INTO T VALUES(5,'C_COBJ#');

  INSERT INTO T VALUES(6,'I_OBJ#');

  INSERT INTO T VALUES(7,'PROXY_ROLE_DATA$');

  INSERT INTO T VALUES(8,'I_IND1');

  INSERT INTO T VALUES(9,'I_CDEF2');

  INSERT INTO T VALUES(10,'I_OBJ5');

  INSERT INTO T VALUES(11,'I_PROXY_ROLE_DATA$_1');

  INSERT INTO T VALUES(12,'FILE$');

  INSERT INTO T VALUES(13,'UET$');

  INSERT INTO T VALUES(14,'I_FILE#_BLOCK#');

  INSERT INTO T VALUES(15,'I_FILE1');

  INSERT INTO T VALUES(16,'I_CON1');

  INSERT INTO T VALUES(17,'I_OBJ3');

  INSERT INTO T VALUES(18,'I_TS#');

  INSERT INTO T VALUES(19,'I_CDEF4');

  INSERT INTO T VALUES(20,'IND$');

  INSERT INTO T VALUES(21,'SEG$');

  INSERT INTO T VALUES(22,'C_TS#');

  。。。。。

  SQL> @insert.sql

  省略显示。

  SQL> COMMIT;

  Commit complete.

  SQL> SELECT COUNT(1) FROM T;

  COUNT(1)

  ----------

  10000

  三、结束捕获进程

  SQL> conn system/oracle

  Connected.

  SQL> EXEC DBMS_WORKLOAD_CAPTURE.FINISH_CAPTURE;

  PL/SQL procedure successfully completed.

  SQL> SELECT ID,NAME,DBNAME,DBVERSION,DIRECTORY,STATUS FROM DBA_WORKLOAD_CAPTURES;

  ID NAME       DBNAME     DBVERSION  DIRECTORY  STATUS

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

  1 CAPTURE1   TEST11G    11.2.0.1.0 TEST       COMPLETED

  从后台ALERT文件中可以看到如下信息:

  Sun Sep 26 10:18:09 2010

  DBMS_WORKLOAD_CAPTURE.FINISH_CAPTURE(): Stopped database capture

  (not all sessions  could flush their capture buffers) at 09/26/2010 10:18:09

  此时数据库的活动全部记录在以下目录中的文件中

  [oracle@dbtest ~]$ ls -l dbcapture/

  total 16

  drwxr-xr-x  2 oracle oinstall 4096 Sep 26 10:18 cap

  drwxr-xr-x  3 oracle oinstall 4096 Sep 26 09:31 capfiles

  四、闪回到SP1时刻

  由于只有一个11G的数据库环境,因此重放也是在这个数据库中进行的。此时

  需要闪回到以前创建表的时候,以便观察。

  SQL> CONN / AS SYSDBA

  Connected.

  SQL> SHUTDOWN IMMEDIATE

  Database closed.

  Database dismounted.

  ORACLE instance shut down.

  SQL> STARTUP MOUNT

  ORACLE instance started.

  Total System Global Area  343154688 bytes

  Fixed Size                  1336428 bytes

  Variable Size             260049812 bytes

  Database Buffers           75497472 bytes

  Redo Buffers                6270976 bytes

  Database mounted.

  SQL> FLASHBACK DATABASE TO RESTORE POINT SP1;

  Flashback complete.

  SQL> ALTER DATABASE OPEN RESETLOGS;

  Database altered.

  SQL> CONN TEST/test

  Connected.

  SQL> select tname from tab;

  no rows selected

  SQL> create or replace directory test as '/home/oracle/dbcapture';

  Directory created.

  SQL> grant all on directory test to test;

  Grant succeeded.

  五、准备重放进程

  首先进行预处理

  SQL> EXEC DBMS_WORKLOAD_REPLAY.PROCESS_CAPTURE('TEST');

  PL/SQL procedure successfully completed.

  SQL> EXEC DBMS_WORKLOAD_REPLAY.INITIALIZE_REPLAY('REPLAY1','TEST');

  PL/SQL procedure successfully completed.

  SQL> EXEC DBMS_WORKLOAD_REPLAY.PREPARE_REPLAY;

  PL/SQL procedure successfully completed.

  以ORACLE用户登录到操作系统中,启动重放客户端

  [oracle@dbtest ~]$ wrc userid=system password=oracle replaydir=/home/oracle/dbcapture/

  Workload Replay Client: Release 11.2.0.1.0 - Production on Sun Sep 26 10:47:24 2010

  Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

  Wait for the replay to start (10:47:24)

  此时可以看到等待重放。

  重新回到SQLPLUS下:

  六、开始重放

  SQL> EXEC DBMS_WORKLOAD_REPLAY.START_REPLAY;

  PL/SQL procedure successfully completed.

  SQL> SELECT ID,NAME,DBNAME,DBVERSION,DIRECTORY,STATUS FROM DBA_WORKLOAD_REPLAYS;

  ID NAME       DBNAME     DBVERSION  DIRECTORY  STATUS

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

  1 REPLAY1    TEST11G    11.2.0.1.0 TEST       IN PROGRESS

  此时可以看到重放客户端会出现 Replay started

  [oracle@dbtest ~]$ wrc userid=system password=oracle replaydir=/home/oracle/dbcapture/

  Workload Replay Client: Release 11.2.0.1.0 - Production on Sun Sep 26 10:47:24 2010

  Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

  Wait for the replay to start (10:47:24)

  Replay started (10:49:01)

  ALERT文件中会出现:

  Sun Sep 26 10:49:01 2010

  DBMS_WORKLOAD_REPLAY.START_REPLAY(): Starting database replay at 09/26/2010 10:49:00

  重放完成后,DBA_WORKLOAD_REPLAYS的STATUS列会标记为COMPLETED.

  SQL> SELECT ID,NAME,DBNAME,DBVERSION,DIRECTORY,STATUS FROM DBA_WORKLOAD_REPLAYS;

  ID NAME       DBNAME     DBVERSION  DIRECTORY  STATUS

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

  1 REPLAY1    TEST11G    11.2.0.1.0 TEST       COMPLETED

  重放客户端会自动退出

  [oracle@dbtest ~]$ wrc userid=system password=oracle replaydir=/home/oracle/dbcapture/

  Workload Replay Client: Release 11.2.0.1.0 - Production on Sun Sep 26 10:47:24 2010

  Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

  Wait for the replay to start (10:47:24)

  Replay started (10:49:01)

  Replay finished (11:35:30)

  [oracle@dbtest ~]$

  10000条记录,竟然重放了1个小时,可能和虚拟机有关系。

  ALERT日志文件记录如下内容:

  Sun Sep 26 11:34:07 2010

  DBMS_WORKLOAD_REPLAY: Database replay ran to completion at 09/26/2010 11:34:07

  Sun Sep 26 11:34:24 2010

  DM00 started with pid=34, OS id=5583, job SYS.SYS_EXPORT_TABLE_01

  Sun Sep 26 11:34:30 2010

  DW00 started with pid=35, OS id=5585, wid=1, job SYS.SYS_EXPORT_TABLE_01

  怀疑数据是通过数据泵导入的。

  SQL> CONN TEST/test

  Connected.

  SQL> SELECT COUNT(1) FROM T;

  COUNT(1)

  ----------

  10000

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved