

# IBM Db2 CLP을 사용하여 Amazon RDS for Db2 DB 인스턴스에 연결
<a name="db2-connecting-with-clp-client"></a><a name="db2-downloading-package"></a>

IBM Db2 CLP와 같은 명령줄 유틸리티를 사용하여 Amazon RDS for Db2 DB 인스턴스에 연결할 수 있습니다. 이 유틸리티는 IBM Data Server Runtime Client의 일부입니다. IBM Fix Central에서 클라이언트를** **다운로드하려면 IBM Support의 [IBM 데이터 서버 클라이언트 패키지 버전 11.5 Mod 8 수정 팩 0](https://www.ibm.com/support/pages/node/6830885)을 참조하세요.

**Topics**
+ [용어](#db2-connecting-ibm-clp-terms)
+ [클라이언트 설치](#db2-connecting-ibm-clp-install-client)
+ [DB 인스턴스에 연결](#db2-connecting-ibm-clp-connect-db-instance)
+ [RDS for Db2 DB 인스턴스에 대한 연결 문제 해결](#db2-troubleshooting-connections-clp)

## 용어
<a name="db2-connecting-ibm-clp-terms"></a>

다음 용어는 [RDS for Db2 DB 인스턴스에 연결](#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 DB 인스턴스 이름은 운영 체제 사용자 이름에 연결됩니다.

   이 명령은 Linux에서 지정된 사용자의 홈 디렉터리에 **`sqllib`** 디렉터리를 만듭니다.

## DB 인스턴스에 연결
<a name="db2-connecting-ibm-clp-connect-db-instance"></a>

RDS for Db2 DB 인스턴스에 연결하려면 인스턴스의 DNS 이름과 포트 번호가 필요합니다. 찾는 방법에 대한 자세한 내용은 [엔드포인트 찾기](db2-finding-instance-endpoint.md) 섹션을 참조하세요. 또한 RDS for Db2 DB 인스턴스를 만들 때 정의한 데이터베이스 이름, 마스터 사용자 이름, 마스터 암호도 알아야 합니다. 찾는 방법에 대한 자세한 내용은 [DB 인스턴스 생성](USER_CreateDBInstance.md#USER_CreateDBInstance.Creating) 섹션을 참조하세요.

**IBM Db2 CLP를 사용하여 RDS for Db2 DB 인스턴스에 연결하려면**

1. IBM Db2 CLP 클라이언트 설치 중에 지정한 사용자 이름으로 로그인합니다.

1. RDS for Db2 DB 인스턴스를 카탈로그화합니다. 다음 예제에서 *node\$1name*, *dns\$1name*, *port*를 로컬 카탈로그의 노드 이름, DB 인스턴스의 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` 데이터베이스와 데이터베이스를 카탈로그화합니다. 그러면 Amazon RDS 저장 프로시저로 `rdsadmin` 데이터베이스에 연결하여 일부 관리 작업을 수행할 수 있습니다. 자세한 내용은 [RDS for Db2 DB 인스턴스 관리](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 DB 인스턴스의 마스터 암호, 마스터 사용자 이름, 데이터베이스 이름으로 바꿉니다.

   ```
   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 DB 인스턴스에 대한 연결 문제 해결
<a name="db2-troubleshooting-connections-clp"></a>

다음 `NULLID` 오류는 보통 클라이언트와 RDS for Db2 서버 버전이 일치하지 않아 발생합니다. 지원되는 Db2 클라이언트 버전은 IBM Db2 설명서의 [지원되는 클라이언트, 드라이버 및 서버 수준 조합](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 Support의 [DB2 v11.5 바인딩 파일 및 패키지 이름 목록](https://www.ibm.com/support/pages/node/6190455)을 참조하세요.