Oracle replayc測試
執行流程
Replay 流程
Database Replay 實施的流程是workload_capture->workload preprocess->replay client prepare->replay->generate replay report,對於同一個capture可以進行多次replay
執行資料庫
生產資料庫:用於workload_capture,即負載捕獲
遷移資料庫:用於workload_ preprocess和replay,即負載預處理和負載重放
Replay client :用於發起workload的客戶端程式
生產資料庫
建立capture目錄
需要確保目錄下無任何檔案
mkdir -p /home/oracle/capdir
create or replace directory capdir as '/home/oracle/capdir';
查詢是否有原來的capture任務
SQL> SELECT id, name FROM dba_workload_captures;
根據id 用以下進行刪除:
SQL> exec dbms_workload_capture.delete_capture_info(2);
建立過濾器
過濾器可以透過START_CAPTURE 過程的DEFAULT_ACTION 引數,引數值 INCLUDE 排除(預設) 或者 EXCLUDE 包含 過濾器。
建立 HEAGLEDB 使用者執行資訊的過濾器:
EXEC DBMS_WORKLOAD_CAPTURE.ADD_FILTER ('filter_user1','USER','HEAGLEDB');
過濾器其他方式:
capture 所有的資訊,可以跳過add_filter設定
查詢過濾器
select * from dba_workload_filters;
執行Capture
10g 資料庫需要開啟PRE_11G_ENABLE_CAPTURE
alter system set PRE_11G_ENABLE_CAPTURE=true;
函式:
DBMS_WORKLOAD_CAPTURE.START_CAPTURE (
name IN VARCHAR2,
dir IN VARCHAR2,
duration IN NUMBER DEFAULT NULL,
default_action IN VARCHAR2 DEFAULT 'INCLUDE',
auto_unrestrict IN BOOLEAN DEFAULT TRUE,
capture_sts IN BOOLEAN DEFAULT FALSE,
sts_cap_interval IN NUMBER DEFAULT 300);
常用全庫捕獲: BEGIN DBMS_WORKLOAD_CAPTURE.start_capture (name => 'pri_capture_1', dir =>'CAPDIR', duration => NULL); END; / |
如果上面使用過濾器,可以使用以下語法。 注意:exclude 意思是包含上面過濾器中的任務 :
BEGIN
DBMS_WORKLOAD_CAPTURE.START_CAPTURE (
name => 'pri_capture_1',
dir => 'CAPDIR',
default_action => ' EXCLUDE ',
duration => NULL);
END;
/
Sql 執行
生產資料庫執行階段。
停止 capture
BEGIN DBMS_WORKLOAD_CAPTURE.finish_capture; END; / |
獲取capture ID
SELECT DBMS_WORKLOAD_CAPTURE.get_capture_info('CAPDIR') FROM dual; select id, name, status,dir_path from dba_workload_captures;
|
查詢捕獲資訊
可以在捕獲路徑下獲取已生成的報告wcr_cr.html、wcr_cr.text。
set pagesize 0 long 30000000 longchunksize 2000 line 150 spool pri_capture.html select dbms_workload_capture.report ( 11 ,'HTML') from dual; spool off 注:11 為的capture id。
|
匯出awr報告
exec dbms_workload_capture.export_awr (capture_id => 11);
注:11 為的capture id。
查詢dba_workload_captures
select id,AWR_BEGIN_SNAP,AWR_END_SNAP from dba_workload_captures; |
遷移資料庫
建立directory
cap and capfiles 上傳到目標伺服器
建立directory
mkdir -p /oracle/replay
CREATE OR REPLACE DIRECTORY db_replay_capture_dir AS '/oracle/replay';
節點1
scp -r /oracle/replay/* oracle@168.68.19.138:/oracle/replay/
載入capture日誌
使用PROCESS_CAPTURE過程來準備capture logs。
exec DBMS_WORKLOAD_REPLAY.PROCESS_CAPTURE('DB_REPLAY_CAPTURE_DIR');
執行完畢後,會生成wcr_process.wmd,wcr_login.pp, wcr_seq_data.extb, wcr_scn_order.extb , wcr_conn_data.extb等檔案。
初始化replay
使用Initializing replay 裝載metadata到tables裡:
EXEC DBMS_WORKLOAD_REPLAY.initialize_replay (replay_name => 'replay', replay_dir => 'DB_REPLAY_CAPTURE_DIR');
將資料改成PREPARE REPLAY 模式:
exec DBMS_WORKLOAD_REPLAY.PREPARE_REPLAY();
預設synchronization引數TRUE。
檢查replay的狀態:
set lin 160 col name for a20 col status for a20 select name,status from dba_workload_replays; |
啟動重放客戶端
評估客戶端需求
wrc MODE=calibrate REPLAYDIR=/oracle/replay
前臺執行replay:
wrc system/mhqx1190 mode=replay replaydir=/oracle/replay
可以後臺執行 (可選)
nohup wrc system/mhqx1190 mode=replay replaydir=/oracle/replay &
執行replay
執行時間跟生產庫獲取的時間有關
exec DBMS_WORKLOAD_REPLAY.START_REPLAY; select id, name, status from dba_workload_replays; |
初始狀態:PREPARE
執行狀態:IN PROGRESS
完成狀態:COMPLETED
停止replay
如果希望在完成replay 前stop replay過程,呼叫CANCEL_REPLAY 過程即可。
exec DBMS_WORKLOAD_REPLAY.CANCEL_REPLAY ();
獲取replay報告
select id, name, status from dba_workload_replays;
set pagesize 0 long 30000000 longchunksize 2000 line 150
spool /home/oracle/replay_report.html
select dbms_workload_replay.report(replay_id => 46 ,format => 'HTML') from dual;
spool off
注:46為上面的replay id。
匯入capture awr資料
匯入Capture AWR data 到測試資料庫,比較replay AWR data
set serveroutput on
declare
capid number := 0;
BEGIN
capid := DBMS_WORKLOAD_CAPTURE.GET_CAPTURE_INFO(dir =>'
DB_REPLAY_CAPTURE_DIR
');
dbms_output.put_line('capid is ' || capid);
END;
/
輸出: 1
select dbms_workload_capture.import_awr(capture_id => 1, staging_schema => 'SYSTEM') from dual;
輸出:1959014922
SQL> select snap_id,dbid from dba_hist_snapshot where dbid= 1959014922 ;
SNAP_ID DBID
---------- ----------
3212 1959014922
3213 1959014922
獲取capture資訊
SQL> select id, awr_begin_snap, awr_end_snap from dba_workload_captures;
1 3212 3213
獲取replay資訊
SQL> select id, awr_begin_snap, awr_end_snap from dba_workload_replays;
3 6414 6415
比較capture和replay
set serveroutput on spool /home/ora19c/compare_period_report.html declare v_rlt clob; v_replay_id1 number := 46; v_replay_id2 number := null; v_snum number := 1; v_length number; v_char varchar2(32767); begin dbms_workload_replay.compare_period_report(replay_id1 => v_replay_id1, replay_id2 => v_replay_id2, format => 'HTML', result => v_rlt); v_length := dbms_lob.GETLENGTH(v_rlt); while (v_snum < v_length) loop v_char := dbms_lob.substr(lob_loc => v_rlt, amount => 32767, offset => v_snum); v_snum := v_snum + 32767; dbms_output.put_line(v_char); end loop; end; / |
awr 效能比較報告
生成awr比較報告
set pagesize 0 long 30000000 longchunksize 2000 heading off line 1000
spool / home / oracle / replay / awrdiff_10g_11g.html
SELECT output
FROM TABLE ( DBMS_WORKLOAD_REPOSITORY.AWR_DIFF_REPORT_HTML ( dbid1 => 1959014922 ,
inst_num1 => 1 ,
bid1 => 3212 ,
eid1 => 3213 ,
dbid2 => 2791053097 ,
inst_num2 => 1 ,
bid2 => 6414 ,
eid2 => 6415 ));
spool off
測試完成,刪除capture和replay
SQL> SELECT id, name FROM dba_workload_captures;
SQL> exec dbms_workload_capture.delete_capture_info(2);
SQL> select id, awr_begin_snap, awr_end_snap from dba_workload_replays;
SQL> exec DBMS_WORKLOAD_REPLAY.DELETE_REPLAY_INFO (1);
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31547506/viewspace-2925946/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE壓力測試Oracle
- Oracle TDE加密測試Oracle加密
- Oracle RMAN恢復測試Oracle
- Oracle logmnr簡單測試Oracle
- Oracle sqlldr工具功能測試OracleSQL
- Oracle RAC序列效能測試Oracle
- Oracle 11gRac 測試案例(三)系統測試Oracle
- Oracle 11gRac 測試案例(五)ASM功能測試OracleASM
- Oracle rman duplicate遷移測試Oracle
- oracle壓力測試之orastress!OracleAST
- Oracle JDBC ResultSet引數測試OracleJDBC
- Oracle 11gRac 測試案例(二)系統測試(一)Oracle
- oracle測試資料庫啟用Oracle資料庫
- oracle鎖級別相關測試Oracle
- 使用profiler測試Oracle PL/SQL效能OracleSQL
- oracle壓力測試之orabm(三)Oracle
- Oracle 閃回資料庫測試Oracle資料庫
- oracle壓力測試之orabm(一)Oracle
- oracle壓力測試之orabm(二)Oracle
- 2.5.4. 測試Oracle net——2.5.4.3. 測試網路服務名Oracle
- Oracle 12C Sharding部署和測試Oracle
- 【Oracle19c】Oracle19c rman使用簡單測試Oracle
- Oracle 11gRac 測試案例(一)目錄Oracle
- oracle分割槽表的分類及測試Oracle
- 有關oracle external table的一點測試。Oracle
- 測試測試測試測試測試測試
- 【RAC】Oracle RAC上線測試場景介紹Oracle
- 使用python對oracle進行簡單效能測試PythonOracle
- 【SWINGBENCH】使用SwingBench對Oracle進行壓力測試Oracle
- 【JDBC】java連線池模擬測試 連線oracleJDBCJavaOracle
- 【TEST】Oracle19c使用benchmarksql進行效能測試OracleSQL
- Oracle11gR2 Smart Flash Cache測試說明Oracle
- Oracle ORION模擬Database負載測試儲存效能OracleDatabase負載
- Oracle 11gRac 測試案例(四)叢集程式錯誤Oracle
- 2.5.4. 測試Oracle net——2.5.4.1. 啟動監聽程式Oracle
- Oracle 11g 測試停庫對job的影響Oracle
- 【RAT】Oracle Real Application Testing(真用應用測試)介紹OracleAPP
- 測試—測試方法