

# Amazon RDS for Db2 用户定义的函数参考
<a name="db2-user-defined-functions"></a>

以下用户定义的函数适用于运行 Db2 引擎的 Amazon RDS 数据库实例。

**Topics**
+ [rdsadmin.get\$1task\$1status](#db2-udf-get-task-status)
+ [rdsadmin.list\$1databases](#db2-udf-list-databases)
+ [rdsadmin.list\$1modifiable\$1db\$1params](#db2-udf-list-modi-db-params)

## rdsadmin.get\$1task\$1status
<a name="db2-udf-get-task-status"></a>

返回任务的状态。

### 语法
<a name="db2-udf-get-task-status-syntax"></a>

```
db2 "select task_id, task_type, database_name, lifecycle,
    varchar(bson_to_json(task_input_params), 500) as task_params,
    cast(task_output as varchar(500)) as task_output
    from table(rdsadmin.get_task_status(task_id,'database_name','task_type'))"
```

### 参数
<a name="db2-udf-get-task-status-parameters"></a>

以下参数为可选参数。如果您未提供任何参数，则用户定义函数将返回所有数据库的所有任务的状态。Amazon RDS 将任务历史记录保留 35 天。

*task\$1id*  
正在运行的任务的 ID。运行任务时会返回此 ID。默认值：`0`。

*database\$1name*  
正在为其运行任务的数据库的名称。

*task\$1type*  
要查询的任务的类型。有效值：`ADD_GROUPS`、`ADD_USER`、`ALTER_BUFFERPOOL`、`ALTER_TABLESPACE`、`CHANGE_PASSWORD`、`COMPLETE_ROLLFORWARD`、`CREATE_BUFFERPOOL`、`CREATE_DATABASE`、`CREATE_ROLE`、`CREATE_TABLESPACE`、`DROP_BUFFERPOOL`、`DROP_DATABASE`、`DROP_TABLESPACE`、`LIST_USERS`、`REMOVE_GROUPS`、`REMOVE_USER`、`RESTORE_DB`、`ROLLFORWARD_DB_LOG`、`ROLLFORWARD_STATUS`、`UPDATE_DB_PARAM`。

### 使用说明
<a name="db2-udf-get-task-status-usage-notes"></a>

您可以使用 `rdsadmin.get_task_status` 用户定义的函数检查针对 Amazon RDS for Db2 的以下任务的状态。此列表并不详尽。
+ 创建、更改或删除缓冲池
+ 创建、更改或删除表空间
+ 创建或删除数据库
+ 从 Amazon S3 还原数据库备份
+ 从 Amazon S3 向前滚动数据库日志

### 示例
<a name="db2-udf-get-task-status-examples"></a>

以下示例显示在调用 `rdsadmin.get_task_status` 时返回的列。

```
db2 "describe select * from table(rdsadmin.get_task_status())"
```

以下示例列出所有任务的状态。

```
db2 "select task_id, task_type, database_name, lifecycle, 
    varchar(bson_to_json(task_input_params), 500) as task_params, 
    cast(task_output as varchar(500)) as task_output 
    from table(rdsadmin.get_task_status(null,null,null))"
```

以下示例列出特定任务的状态。

```
db2 "select task_id, task_type, database_name, 
    varchar(bson_to_json(task_input_params), 500) as task_params 
    from table(rdsadmin.get_task_status(1,null,null))"
```

以下示例列出特定任务和数据库的状态。

```
db2 "select task_id, task_type, database_name, 
    varchar(bson_to_json(task_input_params), 500) as task_params 
    from table(rdsadmin.get_task_status(2,'SAMPLE',null))"
```

以下示例列出所有 `ADD_GROUPS` 任务的状态。

```
db2 "select task_id, task_type, database_name, 
    varchar(bson_to_json(task_input_params), 500) as task_params 
    from table(rdsadmin.get_task_status(null,null,'add_groups'))"
```

以下示例列出特定数据库的所有任务的状态。

```
db2 "select task_id, task_type, database_name, 
    varchar(bson_to_json(task_input_params), 500) as task_params 
    from table(rdsadmin.get_task_status(null,'testdb', null))"
```

以下示例将 JSON 值输出为列。

```
db2 "select varchar(r.task_type,25) as task_type, varchar(r.lifecycle,10) as lifecycle, r.created_at, u.* from 
    table(rdsadmin.get_task_status(null,null,'restore_db')) as r, json_table(r.task_input_params, 'strict $' columns(s3_prefix varchar(500) 
    null on empty, s3_bucket_name varchar(500) null on empty) error on error ) as U"
```

### 响应
<a name="db2-udf-get-task-status-response"></a>

`rdsadmin.get_task_status` 用户定义函数返回以下各列：

`TASK_ID`  
任务的 ID。

`TASK_TYPE`  
取决于输入参数。  
+ `ADD_GROUPS` – 添加组。
+ `ADD_USER` – 添加用户。
+ `ALTER_BUFFERPOOL` – 更改缓冲池。
+ `ALTER_TABLESPACE` – 更改表空间。
+ `CHANGE_PASSWORD ` – 更改用户的密码。
+ `COMPLETE_ROLLFORWARD` – 完成 `rdsadmin.rollforward_database` 任务并激活数据库。
+ `CREATE_BUFFERPOOL` – 创建缓冲池。
+ `CREATE_DATABASE` – 创建数据库。
+ `CREATE_ROLE` – 为用户创建 Db2 角色。
+ `CREATE_TABLESPACE` – 创建表空间。
+ `DROP_BUFFERPOOL` – 删除缓冲池。
+ `DROP_DATABASE` – 删除数据库。
+ `DROP_TABLESPACE` – 删除表空间。
+ `LIST_USERS` – 列出所有用户。
+ `REMOVE_GROUPS` – 移除组。
+ `REMOVE_USER` – 移除用户。
+ `RESTORE_DB` – 还原完整数据库。
+ `ROLLFORWARD_DB_LOG` – 对数据库日志执行 `rdsadmin.rollforward_database` 任务。
+ `ROLLFORWARD_STATUS ` – 返回 `rdsadmin.rollforward_database` 任务的状态。
+ `UPDATE_DB_PARAM` – 更新数据参数。

`DATABASE_NAME`  
与任务关联的数据库的名称。

`COMPLETED_WORK_BYTES`  
任务还原的字节数。

`DURATION_MINS`  
完成任务所花费的时间。

`LIFECYCLE`  
任务的状态。可能的状态：  
+ `CREATED` – 将任务提交给 Amazon RDS 后，Amazon RDS 会将状态设置为 `CREATED`。
+ `IN_PROGRESS` – 任务开始后，Amazon RDS 将状态设置为 `IN_PROGRESS`。将状态从 `CREATED` 更改为 `IN_PROGRESS` 可能需要多达 5 分钟时间。
+ `SUCCESS` – 任务完成后，Amazon RDS 将状态设置为 `SUCCESS`。
+ `ERROR` – 如果还原任务失败，Amazon RDS 会将状态设置为 `ERROR`。有关错误的更多信息，请参阅`TASK_OUPUT`。

`CREATED_BY`  
创建命令的 `authid`。

`CREATED_AT`  
创建任务的日期和时间。

`LAST_UPDATED_AT`  
上次更新任务的日期和时间。

`TASK_INPUT_PARAMS`  
参数因任务类型而异。所有输入参数都以 JSON 对象的形式表示。例如，`RESTORE_DB` 任务的 JSON 键如下：  
+ `DBNAME`
+ `RESTORE_TIMESTAMP`
+ `S3_BUCKET_NAME`
+ `S3_PREFIX`

`TASK_OUTPUT`  
有关任务的其他信息。如果在原生还原过程中发生错误，则此列将包含有关错误的信息。

### 响应示例
<a name="db2-udf-get-task-status-response-examples"></a>

以下响应示例显示已成功创建名为 `TESTJP` 的数据库。有关更多信息，请参阅 [rdsadmin.create\$1database](db2-sp-managing-databases.md#db2-sp-create-database) 存储过程。

```
`1 SUCCESS CREATE_DATABASE RDSDB 2023-10-24-18.32.44.962689 2023-10-24-18.34.50.038523 1 TESTJP { "CODESET" : "IBM-437", "TERRITORY" : "JP", "COLLATION" : "SYSTEM", "AUTOCONFIGURE_CMD" : "", "PAGESIZE" : 4096 } 
2023-10-24-18.33.30.079048 Task execution has started.

2023-10-24-18.34.50.038523 Task execution has completed successfully`.
```

以下响应示例解释了删除数据库失败的原因。有关更多信息，请参阅 [rdsadmin.drop\$1database](db2-sp-managing-databases.md#db2-sp-drop-database) 存储过程。

```
1 ERROR DROP_DATABASE RDSDB 2023-10-10-16.33.03.744122 2023-10-10-16.33.30.143797 - 2023-10-10-16.33.30.098857 Task execution has started.
2023-10-10-16.33.30.143797 Caught exception during executing task id 1, Aborting task. 
Reason Dropping database created via rds CreateDBInstance api is not allowed. 
Only database created using rdsadmin.create_database can be dropped
```

以下响应示例显示数据库的成功还原。有关更多信息，请参阅 [rdsadmin.restore\$1database](db2-sp-managing-databases.md#db2-sp-restore-database) 存储过程。

```
1 RESTORE_DB  SAMPLE  SUCCESS   
                                         
{ "S3_BUCKET_NAME" : "amzn-s3-demo-bucket", "S3_PREFIX" : "SAMPLE.0.rdsdb3.DBPART000.20230413183211.001", "RESTORE_TIMESTAMP" : "20230413183211", "BACKUP_TYPE" : "offline" }                                                                                                                                                                                                                                                                                                                                                   

2023-11-06-18.31.03.115795 Task execution has started.
2023-11-06-18.31.04.300231 Preparing to download
2023-11-06-18.31.08.368827 Download complete. Starting Restore
2023-11-06-18.33.13.891356 Task Completed Successfully
```

## rdsadmin.list\$1databases
<a name="db2-udf-list-databases"></a>

返回在 RDS for Db2 数据库实例上运行的所有数据库的列表。

### 语法
<a name="db2-udf-list-databases-syntax"></a>

```
db2 "select * from table(rdsadmin.list_databases())"
```

### 使用说明
<a name="db2-udf-list-databases-usage-notes"></a>

此用户定义的函数不指定数据库是处于激活还是停用状态。

如果您未在列表中看到您的数据库，可调用 [rdsadmin.get\$1task\$1status](#db2-udf-get-task-status) 用户定义的函数并查找错误消息。

### 响应
<a name="db2-udf-list-databases-response"></a>

`rdsadmin.list_databases` 用户定义的函数返回以下各列：

`DATABASE_NAME`  
数据库的名称。

`CREATE_TIME`  
创建数据库的日期和时间。

`DATABASE_UNIQUE_ID`  
RDS 创建的 GUID，用于唯一标识 Db2 数据库。

`ARCHIVE_LOG_RETENTION_HOUR`  
要保留归档日志文件的小时数。

`ARCHIVE_LOG_COPY`  
显示该功能对于该数据库是处于启用还是禁用状态。

`ARCHIVE_LOG_LAST_UPLOAD_FILE `  
表示上次上传到 S3 的归档日志。

`ARCHIVE_LOG_LAST_UPLOAD_FILE_TIME`  
表示归档日志文件的时间。

`ARCHIVE_LOG_COPY_STATUS`  
显示归档日志复制的状态。  
UPLOADING：表示正在将归档日志文件上传到 S3。  
CONFIGURATION\$1ERROR：表示存在需要引起您注意的配置问题。  
要查看详细的错误，请查看您的数据库实例的 RDS 事件消息。可以在[查看 Amazon RDS 事件](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ListEvents.html)中查看事件消息。

### 响应示例
<a name="db2-udf-list-databases-response-examples"></a>

以下响应示例显示了数据库的列表及其创建时间。`rdsadmin` 是 Amazon RDS 管理的数据库，并且始终显示在输出中。

```
DATABASE_NAME   CREATE_TIME                DATABASE_UNIQUE_ID                                 ARCHIVE_LOG_RETENTION_HOURS ARCHIVE_LOG_COPY ARCHIVE_LOG_LAST_UPLOAD_FILE ARCHIVE_LOG_LAST_UPLOAD_FILE_TIME ARCHIVE_LOG_COPY_STATUS
--------------- -------------------------- -------------------------------------------------- --------------------------- ---------------- ---------------------------- --------------------------------- ------------------------------
RDSADMIN        2026-01-06-02.03.42.569069 RDSADMIN                                                                     0 DISABLED         -                            -                                 -
FOO             2026-01-06-02.13.42.885650 F0D81C7E-7213-4565-B376-4F33FCF420E3                                         0 ENABLED          S0006536.LOG                 2026-01-28-19.15.10.000000        UPLOADING
CODEP           2026-01-14-19.42.42.508476 106EEF95-6E30-4FFF-85AE-B044352DF095                                         0 DISABLED         -                            -                                 -
...
```

## rdsadmin.list\$1modifiable\$1db\$1params
<a name="db2-udf-list-modi-db-params"></a>

返回所有可修改的数据库配置参数的列表。

### 语法
<a name="db2-udf-list-modi-db-params-syntax"></a>

```
db2 "select * from table(rdsadmin.list_modifiable_db_params())"
```

### 使用说明
<a name="db2-udf-list-modi-db-params-usage-notes"></a>

这个用户定义的函数显示可修改的数据库参数的选定列表。可以使用存储过程 [rdsadmin.update\$1db\$1param](db2-sp-managing-databases.md#db2-sp-update-db-param) 更新这些参数。

未包含在此列表中的任何数据库参数都已受到限制，无法修改。

### 响应
<a name="db2-udf-list-modi-db-params-response"></a>

`rdsadmin.list_modifiable_db_params` 用户定义的函数返回以下各列：

`PARAM_NAME`  
可修改的参数的名称。

`DEFAULT_VALUE`  
创建数据库时的默认参数值。

`RESTART_REQUIRED`  
是否需要回收数据库。  
 Y = 是，要求重新启动数据库。  
 N = 否，不要求重新启动数据库。

### 响应示例
<a name="db2-udf-list-modi-db-params-response-examples"></a>

以下内容为预期输出的示例（已截断）列表。

```
PARAM_NAME             DEFAULT_VALUE RESTART_REQUIRED
---------------------- ------------- ----------------
ACT_SORTMEM_LIMIT      NONE          N
ARCHRETRYDELAY         20            N
AUTHN_CACHE_DURATION   3             N
AUTHN_CACHE_USERS      0             N
AUTO_CG_STATS          OFF           N
...
```