

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

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

このセクションでは、RDS for 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.blue\_green\_get\_status](#rds_tools.blue_green_get_status)
+ [rds\_tools.postgres\_get\_av\_diag](#rds_tools.postgres_get_av_diag)
+ [rds\_tools.rds\_version](#rds_tools.rds_version)
+ [rds\_tools.logical\_seed\_lsn](#rds_tools.logical_seed_lsn)
+ [rds\_tools.db\_instance\_identifier](#rds_tools.db_instance_identifier)
+ [rds\_tools.dbi\_resource\_id](#rds_tools.dbi_resource_id)
+ [rds\_tools.multi\_az\_db\_cluster\_source\_dbi\_resource\_id](#rds_tools.multi_az_db_cluster_source_dbi_resource_id)
+ [rds\_tools.show\_topology](#rds_tools.show_topology)
+ [rds\_tools.pg\_ls\_multixactdir](#rds_tools.pg_ls_multixactdir)

## 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.blue\_green\_get\_status
<a name="rds_tools.blue_green_get_status"></a>

ブルー/グリーンデプロイオペレーション中に、制限付きコマンドが実行されていないかを確認します。論理レプリケーションを使用するブルー/グリーンデプロイでは、ブルー環境とグリーン環境の間で、データ定義言語 (DDL) コマンドやラージオブジェクト (LO) オペレーションをレプリケートすることはできません。制限されたコマンドが検出された場合は、データを適切にグリーン環境にレプリケートできないため、ブルー/グリーンデプロイを再起動します。`rds_tools` 拡張機能バージョン 1.3 以降で使用できます。

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

```
rds_tools.blue_green_get_status(command_type)
```

### 引数
<a name="rds_tools.blue_green_get_status-arguments"></a>
+ `command_type` – 確認対象となる制限付きコマンドのタイプ。有効な値は、`'DDL'` (データ定義言語コマンド) と `'LO'` (大規模なオブジェクト操作) です。

### Output
<a name="rds_tools.blue_green_get_status-output"></a>

`boolean` 値。指定されたタイプの制限付きコマンドがデプロイ中に実行された場合は `true`、そのようなコマンドが検出されなかった場合は `false` を返します。

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

```
=> SELECT rds_tools.blue_green_get_status('DDL');
 blue_green_get_status
-----------------------
 f
(1 row)
```

## 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);"}
```

## rds\_tools.rds\_version
<a name="rds_tools.rds_version"></a>

DB インスタンスの RDS for PostgreSQL エンジンバージョンを表示します。この関数は、インスタンスの設定ファイルからバージョン情報を読み取ります。`rds_tools` 拡張機能バージョン 1.1 以降で使用できます。

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

```
rds_tools.rds_version()
```

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

なし。

### Output
<a name="rds_tools.rds_version-output"></a>

エンジンバージョンを含む文字列。

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

```
=> SELECT rds_tools.rds_version();
 rds_version
-------------
 18.1.R1
(1 row)
```

## rds\_tools.logical\_seed\_lsn
<a name="rds_tools.logical_seed_lsn"></a>

論理レプリケーションがソースインスタンスから分岐するポイントを表す論理シードログシーケンス番号 (LSN) を返します。この関数を使用して、論理レプリケーションのセットアップを管理し、レプリケーションの整合性ポイントを理解します。`rds_tools` 拡張機能バージョン 1.2 以降で使用できます。

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

```
rds_tools.logical_seed_lsn()
```

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

なし。

### Output
<a name="rds_tools.logical_seed_lsn-output"></a>

`pg_lsn` 値。

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

```
=> SELECT rds_tools.logical_seed_lsn();
 logical_seed_lsn
------------------
 0/1677B68
(1 row)
```

## rds\_tools.db\_instance\_identifier
<a name="rds_tools.db_instance_identifier"></a>

DB インスタンス識別子を表示します。この識別子は、DB インスタンスを作成するときに指定します。AWS サービスは、データベースを識別するために一貫してこの識別子を使用します。`rds_tools` 拡張機能バージョン 1.2 以降で使用できます。

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

```
rds_tools.db_instance_identifier()
```

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

なし。

### Output
<a name="rds_tools.db_instance_identifier-output"></a>

DB インスタンス識別子を含む文字列。

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

```
=> SELECT rds_tools.db_instance_identifier();
 db_instance_identifier
------------------------
 my-postgres-instance
(1 row)
```

## rds\_tools.dbi\_resource\_id
<a name="rds_tools.dbi_resource_id"></a>

DB インスタンスの DB インスタンスリソース ID (DBI リソース ID) を表示します。DBI リソース ID は、AWS が DB インスタンスに対して生成する一意の変更不可能な識別子です。インスタンスの名前を変更しても、インスタンスの存続期間中、この識別子は変わりません。この値を使用して、データベースアクティビティを AWS CloudTrail ログやその他の AWS モニタリングサービスと関連付けます。この値は、[DBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DBInstance.html) RDS API コマンドによって返される `DbiResourceId` フィールドと一致します。`rds_tools` 拡張機能バージョン 1.4 以降で使用できます。

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

```
rds_tools.dbi_resource_id()
```

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

なし。

### Output
<a name="rds_tools.dbi_resource_id-output"></a>

DBI リソース ID を含む文字列。

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

```
=> SELECT rds_tools.dbi_resource_id();
          dbi_resource_id
-----------------------------------
 db-ABC123DEF456GHI789JKL012MNO345P
(1 row)
```

## rds\_tools.multi\_az\_db\_cluster\_source\_dbi\_resource\_id
<a name="rds_tools.multi_az_db_cluster_source_dbi_resource_id"></a>

マルチ AZ DB クラスターデプロイのソースインスタンスの DBI リソース ID を表示します。この関数を使用して、マルチ AZ 設定のインスタンス間の関係を理解し、レプリケーションまたはフェイルオーバーのシナリオをトラブルシューティングします。`rds_tools` 拡張機能バージョン 1.4 以降で使用できます。

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

```
rds_tools.multi_az_db_cluster_source_dbi_resource_id()
```

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

なし。

### Output
<a name="rds_tools.multi_az_db_cluster_source_dbi_resource_id-output"></a>

ソース DBI リソース ID を含む文字列。インスタンスがマルチ AZ DB クラスターの一部でない場合、設定ファイルが存在しない場合、または設定に `dbi_resource_id` フィールドが存在しない場合は、NULL を返します。

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

```
=> SELECT rds_tools.multi_az_db_cluster_source_dbi_resource_id();
 multi_az_db_cluster_source_dbi_resource_id
--------------------------------------------
 db-XYZ789ABC123DEF456GHI012JKL345MNO678P
(1 row)
```

## rds\_tools.show\_topology
<a name="rds_tools.show_topology"></a>

RDS マルチ AZ クラスターのトポロジメタデータを表示します。これにより、クラスター内のすべてのインスタンスの接続情報が提供され、迅速なスイッチオーバーが可能になります。AWS Advanced JDBC ラッパードライバーなどのクライアントライブラリは、このセットを返す関数を使用して、RDS マルチ AZ クラスター内のすべてのインスタンスに直接接続します。ライターインスタンスのリソース ID を識別するには、この関数を `rds_tools.multi_az_db_cluster_source_dbi_resource_id` 関数と一緒に使用します。`rds_tools` 拡張機能バージョン 1.4 以降で使用できます。

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

```
rds_tools.show_topology([client_identifier])
```

### 引数
<a name="rds_tools.show_topology-arguments"></a>
+ `client_identifier` (オプション) – トポロジをクエリするクライアントライブラリまたはプロキシの識別子。このパラメータはオプションですが、設定することを推奨します。Amazon RDS がトポロジをアクティブにクエリしているクライアントを追跡し、追加のクライアントをサポートするためのテレメトリも提供されるようになるからです。

### Output
<a name="rds_tools.show_topology-output"></a>
+ `id` – RDS マルチ AZ クラスター内の各インスタンスの DBI リソース ID。
+ `endpoint` – クラスター内の各ノードのエンドポイント。
+ `port` – RDS マルチ AZ クラスター内の各インスタンスのポート番号。
+ `role` – ライターやリーダーなど、クラスター内のノードのロール。
+ `status` - ノードのステータス。
+ `version` – トポロジレコードのバージョン。

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

```
=> SELECT id, endpoint, port, role FROM rds_tools.show_topology('my-jdbc-app');
       id        |                         endpoint                          | port | role
-----------------+-----------------------------------------------------------+------+--------
 db-IDENTIFIER-1 | somedb-instance-1.aaaaaaaaaaaa.us-west-2.rds.amazonaws.com | 5432 | writer
 db-IDENTIFIER-2 | somedb-instance-2.aaaaaaaaaaaa.us-west-2.rds.amazonaws.com | 5432 | reader
 db-IDENTIFIER-3 | somedb-instance-3.aaaaaaaaaaaa.us-west-2.rds.amazonaws.com | 5432 | reader
(3 rows)
```

## rds\_tools.pg\_ls\_multixactdir
<a name="rds_tools.pg_ls_multixactdir"></a>

PostgreSQL でマルチトランザクションデータを保存する `pg_multixact` ディレクトリの内容を一覧表示します。このセットを返す関数を使用して、multixact の使用状況をモニタリングし、multixact 関連の問題をトラブルシューティングするとともに、データベースストレージパターンを把握できます。`rds_tools` 拡張機能バージョン 1.7 以降で使用できます。

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

```
rds_tools.pg_ls_multixactdir()
```

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

なし。

### Output
<a name="rds_tools.pg_ls_multixactdir-output"></a>
+ `name` – ファイルまたはディレクトリの名前。
+ `size` – バイト単位のサイズ。
+ `modification` – 最終変更タイムスタンプ。

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

```
=> SELECT * FROM rds_tools.pg_ls_multixactdir();
           name            | size |      modification
---------------------------+------+------------------------
 pg_multixact/members/     | 4096 | 2026-10-01 19:17:29+00
 pg_multixact/members/0000 | 8192 | 2025-08-22 21:53:46+00
 pg_multixact/offsets/     | 4096 | 2026-10-01 19:17:29+00
 pg_multixact/offsets/0000 | 8192 | 2026-10-01 19:22:38+00
(4 rows)
```