OceanBaseデータベースはDBMSパッケージを提供しており、このパッケージを使用してWR関連のクラスタスナップショットを管理できます。これには、手動でスナップショットの作成、特定のスナップショットの削除、およびタイマースレッドの時間間隔を変更することでクラスタスナップショットの取得頻度を調整することが含まれます。
注意
この機能はSYSテナントでのみ使用でき、アップグレード中は利用できません。
スナップショットの作成
WRは自動的にスナップショットを作成しますが、スナップショットの収集タイミングを調整する必要がある場合は、手動で新しいクラスタスナップショットを作成することができます。手動作成後、タイマーは新しく設定された時間間隔でデータを収集します。コマンドは以下のとおりです:
DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT(
flush_level VARCHAR(64) DEFAULT 'TYPICAL'
);
ここで、flush_level の値は現在、定期スナップショット(TYPICAL)のみをサポートしています。これは、ほとんどの統計データが収集されるのは定期スナップショットモードであることを意味します。例:
obclient [(none)]> CALL DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT(flush_level => 'TYPICAL');
Query OK, 0 rows affected, 3 warnings (1.112 sec)
注意
手動でスナップショットを作成した後、タイマーは再計測を開始します。例えば、デフォルトの1時間間隔で定期スナップショットを有効にした場合:
- 12:21 タイマーがスナップショットの作成をトリガー
- 13:21 タイマーが次のスナップショットの作成をトリガー
- 13:45 ユーザーが手動でスナップショットを作成
- 14:45 タイマーが次のスナップショットの作成をトリガー
スナップショットポリシーの設定
スナップショットの間隔と保持時間の設定
スナップショットの間隔と保持時間を変更することで、クラスタのスナップショットの取得頻度を調整します。コマンドは以下のとおりです:
DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
retention INT DEFAULT NULL,
interval INT DEFAULT NULL
);
関連フィールドの説明は以下のとおりです:
| フィールド | 説明 |
|---|---|
| retention | スナップショットの保持時間で、この時間を超えるスナップショットは自動的に削除されます。単位は分です。[1440分(1日)、52560000分(100年)]の範囲で指定します。
|
| interval | 各スナップショット間の間隔設定で、単位は分です。[10分、525600分(1年)]の範囲で指定します。
|
例えば、各スナップショットの保持時間を2265分(約1日12時間)、各スナップショット間の間隔を16分に設定する場合、例は以下のとおりです:
obclient [(none)]> CALL DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS('2265','16');
Query OK, 0 rows affected (0.006 sec)
スナップショットの構成情報を確認する
oceanbase.CDB_WR_CONTROLビューを使用して、すべてのテナントのWR関連構成情報を確認します。obclient [oceanbase]> SELECT * FROM oceanbase.CDB_WR_CONTROL;実行結果は次のとおりです:
+-----------+---------------+-------------+---------+ | TENANT_ID | SNAP_INTERVAL | RETENTION | TOPNSQL | +-----------+---------------+-------------+---------+ | 1 | +0 00:16:00 | +1 13:45:00 | 30 | +-----------+---------------+-------------+---------+ 1 row in set (0.018 sec)各フィールドの説明は以下のとおりです:
フィールド 説明 TENANT_ID - テナントID
- その他の値:ユーザーテナントまたはMetaテナントID
SNAP_INTERVAL スナップショット間の間隔設定。読みやすさを考慮して、 DD HH:mm:SSの形式で指定しますRETENTION スナップショット間の保持時間。読みやすさを考慮して、 DD HH:mm:SSの形式で指定しますTOPNSQL 保存されるトップNのSQL oceanbase.CDB_WR_CONTROLビューの詳細については、oceanbase.CDB_WR_CONTROLを参照してください。oceanbase.DBA_WR_CONTROLビューを使用して、現在のテナントのWR関連構成情報を確認します。obclient [oceanbase]> SELECT * FROM oceanbase.DBA_WR_CONTROL;実行結果は次のとおりです:
+-----------+---------------+-------------+---------+ | TENANT_ID | SNAP_INTERVAL | RETENTION | TOPNSQL | +-----------+---------------+-------------+---------+ | 1 | +0 00:16:00 | +1 13:45:00 | 30 | +-----------+---------------+-------------+---------+ 1 row in set (0.003 sec)各フィールドの説明は以下のとおりです:
フィールド 説明 TENANT_ID - テナントID
- その他の値:ユーザーテナントまたはMetaテナントID
SNAP_INTERVAL スナップショット間の間隔設定。読みやすいように DD HH:mm:SS形式を使用しますRETENTION スナップショット間の保持時間。読みやすいように DD HH:mm:SS形式を使用しますTOPNSQL 保存されるトップNのSQL DBA_WR_CONTROLビューの詳細については、oceanbase.DBA_WR_CONTROLおよびDBA_WR_CONTROLを参照してください。
oceanbase.CDB_WR_SNAPSHOTビューを使用して、すべてのテナントのスナップショット情報を確認します。obclient [oceanbase]> SELECT * FROM oceanbase.CDB_WR_SNAPSHOT limit 1;実行結果は次のとおりです:
+------------+-----------+---------+----------------+----------+----------------------------+----------------------------+-----------+----------------------------+ | CLUSTER_ID | TENANT_ID | SNAP_ID | SVR_IP | SVR_PORT | BEGIN_INTERVAL_TIME | END_INTERVAL_TIME | SNAP_FLAG | STARTUP_TIME | +------------+-----------+---------+----------------+----------+----------------------------+----------------------------+-----------+----------------------------+ | 4000 | 1 | 114 | xx.xx.xx.xx | 2882 | 2023-09-22 01:20:58.332785 | 2023-09-22 02:20:58.333136 | 0 | 2023-09-21 16:21:41.723234 | +------------+-----------+---------+----------------+----------+----------------------------+----------------------------+-----------+----------------------------+ 1 row in set (0.004 sec)各フィールドの説明は以下のとおりです:
フィールド 説明 CLUSTER_ID クラスタID TENANT_ID テナントID SNAP_ID スナップショットID SVR_IP ノードIPアドレス SVR_PORT ノードポート BEGIN_INTERVAL_TIME スナップショット開始時間、タイムスタンプはミリ秒単位 END_INTERVAL_TIME スナップショット終了時間、タイムスタンプはミリ秒単位 SNAP_FLAG スナップショットのトリガー理由 STARTUP_TIME プロセス起動時間、タイムスタンプはミリ秒単位 oceanbase.CDB_WR_SNAPSHOTビューの詳細については、oceanbase.CDB_WR_SNAPSHOTを参照してください。
oceanbase.DBA_WR_SNAPSHOTビューを使用して、現在のテナントのスナップショット情報を確認します。obclient [oceanbase]> SELECT * FROM oceanbase.DBA_WR_SNAPSHOT limit 1;実行結果は次のとおりです:
+------------+-----------+---------+----------------+----------+----------------------------+----------------------------+-----------+----------------------------+ | CLUSTER_ID | TENANT_ID | SNAP_ID | SVR_IP | SVR_PORT | BEGIN_INTERVAL_TIME | END_INTERVAL_TIME | SNAP_FLAG | STARTUP_TIME | +------------+-----------+---------+----------------+----------+----------------------------+----------------------------+-----------+----------------------------+ | 4000 | 1 | 114 | xx.xx.xx.xx | 2882 | 2023-09-22 01:20:58.332785 | 2023-09-22 02:20:58.333136 | 0 | 2023-09-21 16:21:41.723234 | +------------+-----------+---------+----------------+----------+----------------------------+----------------------------+-----------+----------------------------+ 1 row in set (0.004 sec)各フィールドの説明は以下のとおりです:
フィールド 説明 CLUSTER_ID クラスタID TENANT_ID テナントID SNAP_ID スナップショットID SVR_IP ノードIPアドレス SVR_PORT ノードポート BEGIN_INTERVAL_TIME スナップショット開始時間、タイムスタンプはミリ秒単位 END_INTERVAL_TIME スナップショット終了時間、タイムスタンプはミリ秒単位 SNAP_FLAG スナップショットのトリガー理由 STARTUP_TIME プロセス起動時間、タイムスタンプはミリ秒単位 DBA_WR_SNAPSHOTビューの詳細については、oceanbase.DBA_WR_SNAPSHOTおよびDBA_WR_SNAPSHOTを参照してください。
スナップショットの削除
注意
- 削除するスナップショットIDがシステム内に存在する有効なスナップショットIDであることを確認してください。
- 削除操作を実行すると、指定された範囲内のスナップショットデータは永続的に削除されます。慎重に操作してください。
削除するスナップショットの範囲の開始および終了スナップショットIDを指定して、指定された範囲内のスナップショットデータを削除します。コマンドは以下のとおりです:
DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(
low_snap_id INT,
high_snap_id INT
);
関連フィールドの説明は以下のとおりです:
| フィールド | 説明 |
|---|---|
| low_snap_id | 削除するスナップショットの開始スナップID |
| high_snap_id | 削除するスナップショットの終了スナップID |
スナップショットを削除する手順は以下のとおりです:
まず、テナント内のすべてのSNAP_IDを照会します。
obclient [oceanbase]> select count(1),min(snap_id), max(snap_id) from oceanbase.DBA_WR_SNAPSHOT;実行結果は次のとおりです:
+-----------+--------------+--------------+ | count(1) | min(snap_id) | max(snap_id) | +-----------+--------------+--------------+ | 1 | 2 | 2 | +-----------+--------------+--------------+ 1 row in set (0.039 sec)SNAP_ID範囲内のスナップショットデータを削除します。
obclient [oceanbase]> CALL DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE('2','2'); Query OK, 0 rows affected (1.018 sec)SNAP_IDが正常に削除されたかどうかを確認します。
obclient [oceanbase]> select count(1),min(snap_id), max(snap_id) from oceanbase.DBA_WR_SNAPSHOT;