Skip to Content
Technical Articles
Author's profile photo Hai Zhang

SAP HANA Capture and Replay Tool End-to-end Hands-On Tutorial

This tutorial will walk us through the end-to-end steps in SAP HANA capture and replay tool.

What can I do with SAP HANA capture and replay?

Capture and replay tool could capture the real workload from source SAP HANA system and replay the captured workload to a target SAP HANA system. Both source system and target system should be on premise system.

The tool could be used to detect, analyze, or verify any potential issues for various scenarios, such as:

  • Hardware change

  • SAP HANA revision upgrade

  • SAP HANA ini file change

  • Table partitioning change

  • Index change

  • Landscape reorganization for SAP HANA scale-out systems

  • Apply HINT to queries

The tool supports statements based performance comparison and result verification.However, the tool does not offer workload level comparison between the capture time from the source system and the replay time to the target system.

End-to-end Hands-On

Hands-on environment

SAP HANA Cockpit 2.0 SP13

Source system : SAP HANA 2.0 version 48

Control system : SAP HANA 2.0 version 54

Target system : SAP HANA 2.0 version 54

1) Create users for each database & register in the Cockpit

The first step is creating users for each database system(source, control, and target) and register each system in the Cockpit. All 3 database systems should be registered in the Cockpit to use SAP HANA capture and replay tool.

Privileges as a Technical User to register the resource in SAP HANA Cockpit

  • CATALOG READ

  • SELECT on the _SYS_STATISTICS

Database user privilege in source system:

  • WORKLOAD CAPTURE ADMIN

  • BACKUP ADMIN

  • OPTIMIZER ADMIN

SQL commands:

CREATE USER <username> PASSWORD <password> NO FORCE_FIRST_PASSWORD_CHANGE VALID UNTIL FOREVER;

GRANT CATALOG READ TO <username>;

GRANT SELECT on SCHEMA _SYS_STATISTICS TO <username>;

GRANT WORKLOAD CAPTURE ADMIN TO <username>;

GRANT BACKUP ADMIN TO <username>;

GRANT OPTIMIZER ADMIN TO <username>;

Database user privilege in control system:

  • WORKLOAD CAPTURE ADMIN

  • WORKLOAD REPLAY ADMIN

  • WORKLOAD ANALYZER ADMIN

SQL commands:

CREATE USER <username> PASSWORD <password> NO FORCE_FIRST_PASSWORD_CHANGE VALID UNTIL FOREVER;

GRANT CATALOG READ TO <username>;

GRANT SELECT on SCHEMA _SYS_STATISTICS TO <username>;

GRANT WORKLOAD REPLAY ADMIN TO <username>;

GRANT WORKLOAD CAPTURE ADMIN TO <username>;

GRANT WORKLOAD ANALYZE ADMIN TO <username>;

Database user privilege in target system:

  • WORKLOAD REPLAY ADMIN

  • USER ADMIN

Database recovery in step 5 will remove all target database users created before the recovery. there are 4 options for target database replay user.

Option 1 : Reuse source system SYSTEM user in the Target Database

Option 2 : Create a new user in the Target Database after recovery

SQL commands:

CREATE USER <username> PASSWORD <password> NO FORCE_FIRST_PASSWORD_CHANGE VALID UNTIL FOREVER;

GRANT CATALOG READ TO <username>;

GRANT SELECT on SCHEMA _SYS_STATISTICS TO <username>;

GRANT WORKLOAD REPLAY ADMIN TO <username>;

GRANT USER ADMIN TO <username>;

Option 3 : Reuse the Source Database user in the Target Database with granting replay privileges

SQL commands:

GRANT WORKLOAD REPLAY ADMIN TO <username>;

GRANT USER ADMIN TO <username>;

Option 4 : Create a new user in the Source Database before starting capture and backup

SQL commands:

CREATE USER <username> PASSWORD <password> NO FORCE_FIRST_PASSWORD_CHANGE VALID UNTIL FOREVER;

GRANT CATALOG READ TO <username>;

GRANT SELECT on SCHEMA _SYS_STATISTICS TO <username>;

GRANT WORKLOAD REPLAY ADMIN TO <username>;

GRANT USER ADMIN TO <username>;

2) Source Database : Capture

To start capture, please go to the HANA Cockpit System Overview page of the source database and choose Start New Capture directly in the Capture Workload card.

To change the capture file destination (*.cpt file extension), choose Configure Capture on the bottom right of the Capture Management page.

The captured workload file is stored by default in the trace directory. (e.g.,/usr/sap/<SID>/HDB##/<hostname>/trace/)

In Capture Configuration, please select Usage and enter the name of the new capture. Please also customize other optional settings before you start the capture. Turning Create Backup on is recommended, the option could be used together with Synchronize Replay with Backup option for the replay.

In general, for most use cases, select Replay in Usage and enable Create Backup option is enough.

For other options, please refer to the SAP HANA Cockpit help document linked from the question mark icon at up right corner of the tool.

Once the capture is started, the information will be shown in the Capture Workload card, Capture Management Page and Capture Monitor page. Capture Monitor page shows the detailed information.

Please choose Stop Capture on the bottom right of the Capture Monitor page to finish the capture.

3) Control Database : Preprocess a Captured Workload

To preprocess a capture workload, the captured workload file should be copied or moved to the control database directory (e.g., /usr/sap/<SID>/HDB##/<hostname>/trace/) with proper file permissions.

Then please go to the SAP HANA Cockpit System Overview page of the control database and choose Start New Replay in the Replay Workload card.

Please choose Start in SAP HANA Cockpit Replay Management page to preprocess the capture file.

4) Control Database : Run Replayer

Once preprocessing is finished, please configure hdbuserstore entries and run replayer in the control database by accessing its OS level using <sid>adm.

Configure Secure User Store Keys

The following Secure User Store Keys should be configured to run the replayer and replay workloads.

Control Database user

This Secure User Store Key will be used for running the replayer.

OS command :

hdbuserstore SET <KEY><control_DB_Hostname:port><USERNAME> <PASSWORD>

Once control database user is registered in the Secure User Store, the key could be used to run the replayer.

OS command :

hdbwlreplayer -controlhost <control_DB_Host> -controlinstnum <control_DB_InstanceNumber> -controladminkey <USERNAME>,<KEY> -controldbname <control_DB_Name> -port <listenPortNumber>

Example:

<listenPortNumber> can be any port which is not in use.

Replayer should be up and running during until the end of the replay.

Replayer can be stopped by Ctrl+C or kill <pid> in OS.

Once replayer is running, it can be reachable from SAP HANA Cockpit Replay Configuration page by clicking the refresh icon.

Target SYSTEM user

This Secure User Store Key will be used for User Authentication in step 6.

OS command :

hdbuserstore SET <KEY> “<target_DB_Hostname:port>” SYSTEM <PASSWORD>

Target Database user

This Secure User Store Key will be used for Replayer Authentication in step 6.

As SYSTEM user can be used for this as well, if SYSTEM user will be used for Replayer Authetication during the replay, this step is not needed.

OS command:

hdbuserstore SET <KEY><target_DB_Hostname:port><USERNAME> <PASSWORD>

5) Target Databse : Recover from Source Database Backup

Recovering the target database with the source database backup is required to ensure that the source database and the target database are in a consistent state for capture and replay.

Performing a database backup right after starting the capture by using Create Backup option in step 2 together with using Synchronize Replay with Backup option in step 6 is highly recommended.

Please follow 10 steps and 3 steps in below 2 pictures to finish the target database recovery from source database backup. Before starting the recovery, source database data backup file should be copied or moved to the target database directory (e.g., /usr/sap/<SID>/HDB##/<hostname>/trace/) with proper file permissions. 

For copy database steps explanation, please refer to the SAP HANA Cockpit help document linked from the question mark icon at up right corner of the tool.

6) Control Database : Replay

General Information

Please define the replay name and select Target Host Name. If Create Backup option in step 2 is enabled, enable Synchronize Replay with Backup option in step 6 is highly recommended.

Replayer Authentication

Replay Authentication is for assigning the running replayer that will be used to connect to the target system and facilitate the replay.

Replayer List: Select the replayer in Replayer List started in step 4.

Replayer Authentication: Target database User Name and Secure User Store key created in step 4 should be used. If the user credential is correct, green text “Validated credentials” will appear.

User Authentication

User Authentication is needed for including workloads from all required users.

System User: Secure User Store Key of Target database SYSTEM user created during step 4 should be used. If the key is correct, the text box color will become green.

Technical User: Enabled in case target technical user appeared in capture to authenticate the user (e.g., source technical user name is equal to target technical user name)

Database Users: For a stable replay, resetting the passwords of the database users is recommended and for this, you have the following options:

  • Reset Password: Reset all passwords for all users except for the SYSTEM user and the technical user. On the Reset Password window enable the confirmation box and choose Confirm.
  • User List: You can authenticate users manually by creating the Secure User Store Keys for the users in step 4.

Choose Start Replay once everything is ready.

Once the replay is started, choose Details to check the information in the HANA Cockpit Replay Monitor. Please choose Go to Report once the replay is finished.

7) Control Database : Replay Report Analysis

In the Replay Report, the first thing to check is availability of the Load chart menu. If it is missing, please choose Capture Workload card and make sure that the workload is loaded. Load chart is useful when comparing two replays.

Overview Tab

Result Comparison Card

In Result Comparison card, the functional correctness can be checked based on the number of record.

Identical: Row counts of individual SQL statement from source and target are identical

Different: Row counts are different

Failed: Execution has failed

Dummy Skipped: Execution has been skipped due to dummy request (result verification is also skipped)

Actual Skipped: Execution is done but result verification is skipped due to reasons other than dummy request

Different Statements Card

Statement: Individual SQL statement where the number of record is different. The full SQL statement can be checked by clicking More

Execution Count: The number of execution of the individual SQL statement

Deterministic: The number of execution that should be consistent

Difference Count: The number of execution with the different row count between source and target

Verification Skipped Card

In Verification Skipped card, details of skipped statements can be checked.

Multiple reasons can be appeared at the same time, in that case the reasons are concatenated with comma.

Performance Comparison Card

In Performance Comparison card, SQL execution time of individual statement can be compared.

Comparable: SQL performance is comparable between capture and replay

Faster: SQL performance is faster during replay comparing to capture

Slower: SQL performance is slower during replay comparing to capture

Failed: Execution has failed

Dummy Skipped: Execution has been skipped due to dummy request (result verification is also skipped)

Actual Skipped: Execution is done but result verification is skipped due to reasons other than dummy request

Comparable is related to Tolerance Ratio(10% by default) and Replay Report Threshold(100ms by default). Please refer to the examples below to know how SQL performance is categorize as Comparable.

Slower Statements Card

Statement: Individual SQL statement where the average difference is higher than the threshold. The full SQL statement can be checked by clicking More

Execution Count: The number of execution of the individual SQL statement

Average Difference Time: Average of elapsed time difference (between capture and replay) of the individual SQL statements

Maximum Elapsed Time: Maximum elapsed time of execution on target system of the individual SQL statements

Replay Failed Card

In Replay Failed card, details of failures can be checked.

Authentication failed: when invalid credential was given or failure during authentication

No connection to execute statements with: when only FetchCursor was captured without ExecutePrepared or ExecuteStatement

Invalid table name: FOUND_INIFILE_CONTENTS: line 1 col 12 (at pos 11): Missing table during CALL statement execution

Invalid table name: could not find table/view: missing table during SQL statement execution

Other reasons: unique constraints violated, out of memory, and any failure can happen depending on the situation

All error messages from replay can be shown here (any possible errors from the statement execution)

Load Tab

Load tab can be used to compare database KPIs between different captures and replays.

Performance Comparison Tab

Performance Comparison tab can provide detailed performance information of each captured and replayed SQL.

Result Comparison Tab

Result Comparison tab can provide detailed result verification information of each captured and replayed SQL.

Best Practice for Avoiding Issues

Always start with a small capture (e.g., 10-30 minutes) and test its replay

After clearing issues, then proceed with longer captures

If there are any issues, please carefully review the traces (e.g., authentication failures)

In case of authentication failure, check if credential is valid or database users are locked down due to the previous invalid login attempts

Don’t get confused with what has to be done on which system (e.g., control or target system)

Best Practice for troubleshooting

Collect runtimedumps of replay target system thrice

Collect target indexserver and wlreplayer traces

If reproducible, collect traces again with

  • wlreplayer.ini/[trace]/workloadreplayer=info
  • indexserver.ini/[trace]/workloadreplay=info(in SPS05 or higher),stmtdep_mgr=debug(in SPS04 or lower)

Raise a ticket with the collected traces and source/control/target revision information (component: HAN-CPT-CPT2-CNR)

It would be best if customer can provide the capture or preprocess file for investigation (we don’t need backup files in general)

Do’s and Don’ts

 

Assigned Tags

      Be the first to leave a comment
      You must be Logged on to comment or reply to a post.