資料庫負荷重放(Database replay)
從Oracle 11g開始支援資料庫負荷重放(Database Replay)功能,透過捕獲生產伺服器上的工作負荷,然後在測試系統上重放工作負荷,以此來幫助評估測試系統上效能的變化,輔助解決效能問題。
使用Database Replay,需要執行四個主要步驟:
1)捕獲工作負荷
2)預處理工作負荷
3)重放工作負荷
4)分析和報告
記錄過程自身在生產系統上帶來的開銷極低。但是根據捕獲時間的長短,需要保證擁有足夠的磁碟空間來儲存捕獲的工作負荷。如果磁碟空間用盡,則捕獲過程將停止。如果可能,務必在無活動會話時開始捕獲過程。雖然可以捕獲正在進行中的事務,但可能無法正常重放,因為這樣只會在目標系統重放每個正在進行的事務的一部分。捕獲操作不包含諸如SQL*Loader操作、Oracle流、閃回查詢、OCI物件導航、非基於SQL的物件訪問、遠端describe和commit命令。
以下示範Database replay功能的使用:
一、生產庫上的操作
1、用sys或system使用者身份登入,建立使用者、表和目錄並授權:
sqlplus / as sysdba
grant dba to player identified by player;
create table player.t1 as select * from all_objects;
create directory play_d as 'd:\play_d';
grant all on directory play_d to public;
2、開始捕獲,兩個引數是自定義的捕獲名稱和儲存捕獲的Oracle目錄:
exec dbms_workload_capture.start_capture('cap1', 'PLAY_D');
3、以新的使用者身份連線,執行生成資料庫工作負荷的PL/SQL塊:
conn player/player
declare
m number;
begin
for i in 1 .. 1000 loop
select count(1) into m from t1 where object_id = 1;
end loop;
end;
/
4、以sys或system使用者身份連線,終止捕獲並預處理捕獲資訊為可以在目標系統上重放的重放檔案:
conn / as sysdba
exec dbms_workload_capture.finish_capture;
exec dbms_workload_replay.process_capture('PLAY_D');
二、測試庫上的操作
1、用sys或system使用者身份登入,建立使用者、表和目錄並授權,與生產庫對應:
sqlplus / as sysdba
grant dba to player identified by player;
create table player.t1 as select * from all_objects;
create directory play_d as 'd:\play_d';
grant all on directory play_d to public;
2、將生產庫play_d目錄中的內容複製到測試庫的play_d中。
3、重放的資料庫狀態準備:
exec dbms_workload_replay.initialize_replay('cap1', 'PLAY_D');
exec dbms_workload_replay.prepare_replay;
4、在作業系統命令提示符下啟動重放客戶端,重新建立所有客戶端請求。一個重放客戶端可以重放來自許多會話的語句:
C:\Users\Administrator>wrc player/player replaydir=d:\play_d
Workload Replay Client: Release 11.2.0.1.0 - Production on 星期五 1月 19 11:07:35 2018
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Wait for the replay to start (11:07:35)
5、回到SQL*Plus中啟動重放,這將允許建立的客戶端開始執行捕獲的工作負荷中的語句:
exec dbms_workload_replay.start_replay;
6、檢索重放報告:
首先獲取ID:
select id, capture_id, directory, start_time, end_time from dba_workload_replays;
ID CAPTURE_ID DIRECTORY START_TIME END_TIME
---------- ---------- ------------------------------ ------------------- -------------------
1 1 PLAY_D 2018-01-19 03:08:54
執行檢索,可以生成HTML格式的檔案或者生成TEXT格式的檔案:
spool d:\play_d\report.html
select dbms_workload_replay.report(1, 'HTML') from dual;
spool off
根據需要,也可以用以下PL/SQL程式檢索和生成報告:
declare
capt_dir_id number;
curr_replay_id number;
replay_report clob;
begin
capt_dir_id := dbms_workload_replay.get_replay_info(dir => 'PLAY_D');
select max(id)
into curr_replay_id
from dba_workload_replays
where capture_id = capt_dir_id;
replay_report := dbms_workload_replay.report(replay_id => curr_replay_id,
format => dbms_workload_replay.type_text);
end;
/
研究生成的報告,注意Replay和Capture的DB Time值:
7、以player使用者身份連線,向表中新增一個主鍵約束:
conn player/player
alter table t1 add constraint t1_pk primary key(object_id);
8、重複3、4、5、6步驟,觀察重放報告中DB Time值的變化,說明定義約束後效能的提高。
9、使用delete_replay_info過程刪除重放目錄中的報告,引數中指定需要刪除的報告ID:
exec dbms_workload_replay.delete_replay_info(1);
10、清理測試使用者和目錄:
drop user player cascade;
drop directory play_d;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28974745/viewspace-2150466/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 資料庫重放(Database Replay)功能演示Oracle資料庫Database
- 資料包注入重放工具aireplay-ngAI
- Oracle Database ReplayOracleDatabase
- oracle rat database replayOracleDatabase
- Oracle11g新特性之Replay a captured workload 捕獲工作負載新環境重放負載測試壓力OracleAPT負載
- 【DBA】Oracle Database 11g: 面向 DBA 和開發人員的重要特性 資料庫重放OracleDatabase資料庫
- 刪除工作負荷組
- 資源調控器工作負荷管理方案
- database replay基礎學習Database
- 理解Linux系統負荷Linux
- 將工作負荷組移動到其他資源池
- 資料庫變更之後Event Sourcing怎樣重放?資料庫
- database資料庫的資料結構Database資料庫資料結構
- 11g Database Replay使用詳解Database
- Oracle 11g Database Replay 實驗OracleDatabase
- Flashback Database 閃回資料庫Database資料庫
- oracle之 oracle database vault(資料庫保險庫)OracleDatabase資料庫
- 3. 資料庫 database & Eloquent ORM資料庫DatabaseORM
- 國產資料庫OushuDB(Database)簡介資料庫Database
- h2database資料庫分析Database資料庫
- 經驗預測法(工作負荷)(轉載)
- 檢視硬碟IO訪問負荷的方法硬碟
- sv新增工作負荷(新增其他程式語言)
- 執行database replay進行升級測試Database
- 資料安全(反爬蟲)之「防重放」策略爬蟲
- 2.4.1 使用 CREATE DATABASE 子句建立資料庫Database資料庫
- 資料庫分片(Database Sharding)詳解資料庫Database
- 使用RMAN複製資料庫 active database資料庫Database
- mysql database manual(mysql資料庫手冊)MySqlDatabase資料庫
- 分散式資料庫元件——Database Link分散式資料庫元件Database
- 處理器負荷過大怎麼解決
- 建立SQL Server 2008的工作負荷SQLServer
- 數字孿生對地球負責,金倉資料庫對資料負責資料庫
- 資料庫資源管理器(Database Resource Manager)資料庫Database
- 2.4 使用 CREATE DATABASE 語句建立資料庫Database資料庫
- 4、MySQL建立資料庫(CREATE DATABASE語句)MySql資料庫Database
- 閃回資料庫(flashback database)知識分享資料庫Database
- RMAN duplicate from active database 複製資料庫Database資料庫