

# rds\_tools 関数リファレンス
<a name="PostgreSQL_rds_tools-functions-reference"></a>

`rds_tools` 拡張機能は、Aurora PostgreSQL DB インスタンスを管理およびモニタリングするための一連のユーティリティ関数を提供します。これらの関数を使用すると、個別のモニタリングツールを使用せずに、SQL から直接レプリケーション、バキューム、および設定の問題を診断できます。これらの関数は、標準の PostgreSQL 関数に追加されています。標準の PostgreSQL 関数の詳細については、PostgreSQL ドキュメントの「[Functions and operators](https://www.postgresql.org/docs/current/functions.html)」を参照してください。

このセクションでは、Aurora PostgreSQL で使用できる `rds_tools` 関数について説明します。各関数の説明には、関数が使用可能になった `rds_tools` 拡張機能のバージョンが記載されています。

拡張機能を作成するには、次のコマンドを実行します。

```
postgres=> CREATE EXTENSION rds_tools;
CREATE EXTENSION
```

**Topics**
+ [rds\_tools.role\_password\_encryption\_type](#rds_tools.role_password_encryption_type)
+ [rds\_tools.postgres\_get\_av\_diag](#rds_tools.postgres_get_av_diag)

## rds\_tools.role\_password\_encryption\_type
<a name="rds_tools.role_password_encryption_type"></a>

各データベースロールに使用されるパスワード暗号化方法を返します。このセットを返す関数は、RDS で保護されたシステムロールを出力から除外します。`rds_tools` 拡張機能バージョン 1.0 以降で使用できます。

データベースユーザーを SCRAM に移行する前に、この関数を使用してパスワード暗号化を確認する例については、「[PostgreSQL のパスワード暗号化に SCRAM を使用する](PostgreSQL_Password_Encryption_configuration.md)」を参照してください。

### 関数プロトタイプ
<a name="rds_tools.role_password_encryption_type-prototype"></a>

```
rds_tools.role_password_encryption_type()
```

### 引数
<a name="rds_tools.role_password_encryption_type-arguments"></a>

なし。

### Output
<a name="rds_tools.role_password_encryption_type-output"></a>
+ `rolname` – データベースロールの名前。
+ `encryption_type` – 使用されるパスワード暗号化方法 (`md5` や `scram-sha-256` など)。

### 使用例
<a name="rds_tools.role_password_encryption_type-example"></a>

```
=> SELECT * FROM rds_tools.role_password_encryption_type();
    rolname    | encryption_type
---------------+-----------------
 postgres      | md5
 app_user      | md5
 readonly_user | scram-sha-256
(3 rows)
```

## rds\_tools.postgres\_get\_av\_diag
<a name="rds_tools.postgres_get_av_diag"></a>

ブロックされている、あるいは遅延している自動バキュームプロセスに関する診断情報を取得し、各問題を解決するための提案を提示します。正確な結果を得るために、最も古いトランザクション ID を持つデータベースでこのセットを返す関数を実行します。詳細については、「[積極的なバキュームのブロック要因を特定して解決する](Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.md)」を参照してください。

`rds_tools` 拡張機能バージョン 1.9 以降で使用できます。

### 関数プロトタイプ
<a name="rds_tools.postgres_get_av_diag-prototype"></a>

```
rds_tools.postgres_get_av_diag()
```

### 引数
<a name="rds_tools.postgres_get_av_diag-arguments"></a>

なし。

### Output
<a name="rds_tools.postgres_get_av_diag-output"></a>
+ `blocker` – バキュームをブロックしているデータベースアクティビティのカテゴリ。値は次のいずれかです。
  + アクティブなステートメント
  + トランザクションでのアイドル状態
  + 準備済みトランザクション
  + 論理レプリケーションスロット
  + 物理レプリケーションスロットを使用するリードレプリカ
  + ストリーミングレプリケーションを使用するリードレプリカ
  + 一時テーブル
+ `database` – ブロックアクティビティが発生しているデータベースの名前。
+ `blocker_identifier` – ブロックアクティビティの識別子。値は、ブロッカーのタイプによって異なります。
  + アクティブなステートメント、またはトランザクション内でアイドル状態のセッションのプロセス ID と SQL ステートメント。
  + 準備済みトランザクションの場合、準備済みトランザクション名。
  + リードレプリカの場合、そのレプリカの IP アドレス。
  + レプリケーションスロットの場合は、レプリケーションスロット名。
+ `wait_event` – ブロッキングセッションの待機イベント (該当する場合)。
+ `autovacuum_lagging_by` – そのカテゴリで、自動バキュームが遅延しているトランザクションの数。
+ `suggestion` – ブロッカーを解決するための提案。データベース名、プロセス ID、実行するアクションを含みます。
+ `suggested_action` – ブロッカーを解決するために実行するアクションの配列。

### 使用例
<a name="rds_tools.postgres_get_av_diag-example"></a>

```
=> SELECT *
   FROM rds_tools.postgres_get_av_diag()
   ORDER BY autovacuum_lagging_by DESC;

blocker               | Active statement
database              | my_database
blocker_identifier    | SELECT pg_sleep(20000);
wait_event            | Timeout:PgSleep
autovacuum_lagging_by | 568600871
suggestion            | Connect to database "my_database", review carefully, and consider terminating the process using suggested_action.
suggested_action      | {"SELECT pg_terminate_backend(29621);"}
```