

# 使用 IBM Db2 CLP 连接到 Amazon RDS for Db2 数据库实例
<a name="db2-connecting-with-clp-client"></a><a name="db2-downloading-package"></a>

您可以使用命令行实用程序（如 IBM Db2 CLP）连接到 Amazon RDS for Db2 数据库实例。此实用程序是 IBM Data Server Runtime Client 的一部分。要从 IBM Fix Central 中下载客户端****，请参阅 IBM 支持中的 [IBM Data Server Client Packages Version 11.5 Mod 8 Fix Pack 0](https://www.ibm.com/support/pages/node/6830885)。

**Topics**
+ [

## 术语
](#db2-connecting-ibm-clp-terms)
+ [

## 安装客户端
](#db2-connecting-ibm-clp-install-client)
+ [

## 连接数据库实例
](#db2-connecting-ibm-clp-connect-db-instance)
+ [

## 排除与 RDS for Db2 数据库实例的连接故障
](#db2-troubleshooting-connections-clp)

## 术语
<a name="db2-connecting-ibm-clp-terms"></a>

以下术语有助于解释[连接到 RDS for Db2 数据库实例](#db2-connecting-ibm-clp-connect-db-instance)时使用的命令。

**catalog tcpip node**  
此命令将远程数据库节点注册到本地 Db2 客户端，这样客户端应用程序就可以访问该节点。要对节点进行编目，您需要提供诸如服务器的主机名、端口号和通信协议之类的信息。然后，编目的节点表示一个或多个远程数据库所在的目标服务器。有关更多信息，请参阅 IBM Db2 文档中的 [CATALOG TCPIP/TCPIP4/TCPIP6 NODE 命令](https://www.ibm.com/docs/en/db2/11.5?topic=commands-catalog-tcpip-node)。

**catalog database**  
此命令将远程数据库注册到本地 Db2 客户端，这样客户端应用程序就可以访问该数据库。要对数据库进行编目，您需要提供诸如数据库别名、数据库所在的节点以及连接数据库所需的身份验证类型之类的信息。有关更多信息，请参阅 IBM Db2 文档中的 [CATALOG DATABASE 命令](https://www.ibm.com/docs/en/db2/11.5?topic=commands-catalog-database)。

## 安装客户端
<a name="db2-connecting-ibm-clp-install-client"></a>

[downloading the package for Linux](#db2-downloading-package)之后，使用根或管理员权限安装客户端。

**注意**  
要在 AIX 或 Windows 上安装客户端，请按照相同的步骤操作，但要修改适用于您的操作系统的命令。

**在 Linux 上安装客户端**

1. 运行 **`./db2_install -f sysreq`** 并选择 **`yes`** 以接受许可证。

1. 选择安装客户端的位置。

1. 运行 **`clientInstallDir/instance/db2icrt -s client` *instance\$1name***。将 *instance\$1name* 替换为 Linux 上有效的操作系统用户。在 Linux 中，Db2 数据库实例名称与操作系统的用户名相关联。

   此命令在 Linux 上指定用户的主目录中创建 **`sqllib`** 目录。

## 连接数据库实例
<a name="db2-connecting-ibm-clp-connect-db-instance"></a>

要连接到 RDS for Db2 数据库实例，您需要该实例的 DNS 名称和端口号。有关查找它们的信息，请参阅[查找终端节点](db2-finding-instance-endpoint.md)。您还需要知道您在创建 RDS for Db2 数据库实例时定义的数据库名称、主用户名和主密码。有关查找它们的更多信息，请参阅[创建数据库实例](USER_CreateDBInstance.md#USER_CreateDBInstance.Creating)。

**使用 IBM Db2 CLP 连接到 RDS for Db2 数据库实例**

1. 使用您在 IBM Db2 CLP 客户端安装期间指定的用户名登录。

1. 对 RDS for Db2 数据库实例进行编目。在以下示例中，将 *node\$1name*、*dns\$1name* 和 *port* 替换为本地目录中节点的名称、数据库实例的 DNS 名称以及端口号。

   ```
   1. db2 catalog TCPIP node node_name remote dns_name server port
   ```

   **示例**

   ```
   db2 catalog TCPIP node remnode remote database-1.123456789012.us-east-1.amazonaws.com server 50000
   ```

1. 对 `rdsadmin` 数据库和您的数据库进行编目。这将允许您连接到 `rdsadmin` 数据库以使用 Amazon RDS 存储过程执行一些管理任务。有关更多信息，请参阅 [管理您的 RDS for Db2 数据库实例](db2-administering-db-instance.md)。

   在以下示例中，将 *database\$1alias*、*node\$1name* 和 *database\$1name* 替换为该数据库的别名、在上一步中定义的节点的名称以及数据库的名称。`server_encrypt` 通过网络加密您的用户名和密码。

   ```
   db2 catalog database rdsadmin [ as database_alias ] at node node_name authentication server_encrypt
       
   db2 catalog database database_name [ as database_alias ] at node node_name authentication server_encrypt
   ```

   **示例**

   ```
   db2 catalog database rdsadmin at node remnode authentication server_encrypt
       
   db2 catalog database testdb as rdsdb2 at node remnode authentication server_encrypt
   ```

1. 连接到您的 RDS for Db2 数据库。在以下示例中，将 *rds\$1database\$1alias*、*master\$1username* 和 *master\$1password* 替换为 RDS for Db2 数据库实例的数据库名称、主用户名和主密码。

   ```
   db2 connect to rds_database_alias user master_username using master_password
   ```

   此命令生成类似于以下示例的输出：

   ```
   Database Connection Information
       
       Database server        = DB2/LINUXX8664 11.5.9.0
       SQL authorization ID   = ADMIN
       Local database alias   = TESTDB
   ```

1. 运行查询并查看结果。以下示例显示了一条 SQL 语句，该语句选择了您创建的数据库。

   ```
   db2 "select current server from sysibm.dual"
   ```

   此命令生成类似于以下示例的输出：

   ```
   1
       ------------------
       TESTDB
       
       1 record(s) selected.
   ```

## 排除与 RDS for Db2 数据库实例的连接故障
<a name="db2-troubleshooting-connections-clp"></a>

如果您收到以下 `NULLID` 错误，则通常表示您的客户端和 RDS for Db2 服务器版本不匹配。有关支持的 Db2 客户端版本，请参阅 IBM Db2 文档中的 [Supported combinations of clients, drivers and server levels](https://www.ibm.com/docs/en/db2/11.5?topic=communications-supported-combinations-clients-drivers-server-levels)。

```
db2 "select * from syscat.tables"
SQL0805N Package "NULLID.SQLC2O29 0X4141414141454A69" was not found.
SQLSTATE=51002
```

收到此错误后，必须将旧版 Db2 客户端中的软件包绑定到 RDS for Db2 支持的 Db2 服务器版本。

**将旧版 Db2 客户端中的软件包绑定到较新的 Db2 服务器**

1. 在客户端计算机上找到绑定文件。通常，这些文件位于 Db2 客户端安装路径的 **bnd** 目录中，扩展名为 **.bnd**。

1. 连接到 Db2 服务器。在以下示例中，将 *database\$1name* 替换为 Db2 服务器的名称。用您的信息替换 *master\$1username* 和 *master\$1password*。此用户拥有 `DBADM` 权限。

   ```
   db2 connect to database_name user master_username using master_password
   ```

1. 运行 `bind` 命令以绑定这些软件包。

   1. 导航到客户端计算机上存在绑定文件的目录。

   1. 对每个文件运行 `bind` 命令。

      以下选项为必填：
      + `blocking all` – 在单个数据库请求中绑定该绑定文件中的所有软件包。
      + `grant public` – 授予 `public` 执行软件包的权限。
      + `sqlerror continue` – 指定即使发生错误，`bind` 过程仍会继续。

      有关 `bind` 命令的更多信息，请参阅 IBM Db2 文档中的 [BIND 命令](https://www.ibm.com/docs/en/db2/11.5?topic=commands-bind)。

1. 通过查询 `syscat.package` 目录视图或检查 `bind` 命令后返回的消息，验证绑定是否成功。

有关更多信息，请参阅 IBM 支持中的 [DB2 v11.5 Bind File and Package Name List](https://www.ibm.com/support/pages/node/6190455)。