

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# rds\_tools 函數參考
<a name="PostgreSQL_rds_tools-functions-reference"></a>

`rds_tools` 延伸項目提供一組公用程式函數，用於管理和監控 RDS for PostgreSQL 資料庫執行個體。使用這些函數，您可以直接從 SQL 診斷複寫、清空和組態問題，而無需單獨的監控工具。這些函數是標準 PostgreSQL 函數以外的函數。如需標準 PostgreSQL 函數的詳細資訊，請參閱 PostgreSQL 文件中的[函數和運算子](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 之前檢閱密碼加密的範例，請參閱 [使用 SCRAM 進行 PostgreSQL 密碼加密](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` – 封鎖活動的識別符。值取決於封鎖程式類型：
  + 對於作用中陳述idle-in-transaction工作階段，程序 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>

顯示資料庫執行個體的 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>

顯示資料庫執行個體識別符。您可以在建立資料庫執行個體時指定此識別符，而 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>

包含資料庫執行個體識別符的字元字串。

### 使用範例
<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>

顯示資料庫執行個體的資料庫執行個體資源 ID (DBI 資源 ID)。DBI 資源 ID 是 AWS 為資料庫執行個體產生的唯一不可變識別符。即使您重新命名執行個體，它仍會在執行個體的生命週期內保持不變。使用此值將資料庫活動與 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>

顯示多可用區域資料庫叢集部署之來源執行個體的 DBI 資源 ID。使用此函數來了解多可用區組態中執行個體之間的關係，以及疑難排解複寫或容錯移轉案例。從`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 的字元字串。如果執行個體不屬於多可用區域資料庫叢集、組態檔案不存在，或組態中不存在 `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 多可用區域叢集的拓撲中繼資料，透過提供叢集中所有執行個體的連線資訊來啟用快速切換。AWS Advanced JDBC Wrapper Driver 等用戶端程式庫使用此集合傳回函數，直接連線至 RDS Multi-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 Multi-AZ 叢集中每個執行個體的 DBI 資源 ID。
+ `endpoint` – 叢集中每個節點的端點。
+ `port` – RDS Multi-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>

列出 `pg_multixact`目錄的內容，該目錄會將多筆交易資料存放在 PostgreSQL 中。使用此集合傳回函數來監控 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)
```