

# rds\_tools 함수 참조
<a name="PostgreSQL_rds_tools-functions-reference"></a>

`rds_tools` 확장은 RDS for PostgreSQL DB 인스턴스를 관리하고 모니터링하기 위한 유틸리티 함수 세트를 제공합니다. 이러한 함수를 사용하면 별도의 모니터링 도구 없이 SQL에서 직접 복제, vacuum 및 구성 문제를 진단할 수 있습니다. 이러한 함수들은 표준 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으로 마이그레이션하기 전에 이 함수를 사용하여 암호 암호화 방식을 검토하는 예제는 [SCRAM for 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>

없음.

### 출력
<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'`)입니다.

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

`boolean` 값입니다. 배포 중에 지정된 유형의 제한된 명령이 실행되었으면 `false`를 반환하고, 그러한 명령이 감지되지 않았으면 `true`를 반환합니다.

### 사용 예
<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>

차단 상태이거나 지연되고 있는 autovacuum 프로세스에 관한 진단 정보와 각 문제를 해결하기 위한 제안 사항을 반환합니다. 정확한 결과를 얻으려면 트랜잭션 ID가 가장 오래된 데이터베이스에서 이 집합 반환 함수를 실행하세요. 자세한 정보는 [공격적인 vacuum 블로커 식별 및 해결](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>

없음.

### 출력
<a name="rds_tools.postgres_get_av_diag-output"></a>
+ `blocker` - vacuum을 차단하는 데이터베이스 활동의 범주입니다. 값은 다음 중 하나입니다.
  + 활성 문
  + 트랜잭션의 유휴 상태
  + 준비된 트랜잭션
  + 논리적 복제 슬롯
  + 물리적 복제 슬롯을 사용하는 읽기 전용 복제본
  + 스트리밍 복제를 사용하는 읽기 전용 복제본
  + 임시 테이블
+ `database` - 차단 활동이 발생하고 있는 데이터베이스의 이름입니다.
+ `blocker_identifier` - 차단 활동의 식별자입니다. 이 값은 다음과 같이 차단 요인의 유형에 따라 달라집니다.
  + 실행 중인 문 또는 트랜잭션 내 유휴 세션인 경우, 프로세스 ID와 해당 SQL 문이 표시됩니다.
  + 준비된 트랜잭션인 경우, 준비된 트랜잭션 이름이 표시됩니다.
  + 읽기 복제본인 경우, 해당 복제본의 IP 주소가 표시됩니다.
  + 복제 슬롯인 경우, 복제 슬롯 이름이 표시됩니다.
+ `wait_event` - 해당하는 경우 차단 세션의 대기 이벤트입니다.
+ `autovacuum_lagging_by` - 해당 범주에서 autovacuum이 지연되고 있는 트랜잭션 수입니다.
+ `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>

없음.

### 출력
<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>

없음.

### 출력
<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>

없음.

### 출력
<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>

없음.

### 출력
<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>

없음.

### 출력
<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 Wrapper Driver와 같은 클라이언트 라이브러리는 이 집합 반환 함수를 사용하여 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가 토폴로지를 활발히 쿼리하는 클라이언트를 추적할 수 있도록 하며, 향후 추가 클라이언트를 지원하는 데 필요한 원격 측정 데이터도 제공하기 때문입니다.

### 출력
<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` 디렉터리의 내용을 나열합니다. 다중 트랜잭션 사용량을 모니터링하고, 다중 트랜잭션 관련 문제를 해결하며, 데이터베이스 스토리지 패턴을 파악하려면 이 집합 반환 함수를 사용하세요. `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>

없음.

### 출력
<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)
```