以前に Linux 版 Db2 を導入した時の手順を紹介したブログがありました:
http://dotnsf.blog.jp/archives/2960284.html
3年以上前のこの時の仮想環境が奇跡的に残っていたので久しぶりに使ってみました。で、折角の Db2 コマンドライン環境(?)なので、このコマンドラインインターフェースから IBM Cloud 上の DBaaS である Db2 に接続して使ってみました。以下、その手順の紹介です。
まずは IBM Cloud にログインして Db2 インスタンスを作成します。無料のライトアカウントでも使えるサービスが用意されているので、派手に使わない限りは無料で試すこともできます:

無料のライトプランを使う場合はデプロイ先ロケーションを「米国南部」に設定します。加えて自分のメールアドレスを指定します:

デプロイ先ロケーションが米国南部の場合、無料の Lite プランが選択可能になります(もちろん他のプランでも構いません)。プラン設定後に「作成」ボタンでインスタンスが作成されます:

インスタンス作成後、「サービス資格情報」メニューから「資格情報の表示」を選択します(「資格情報の表示」が存在しない場合は、最初に「新規資格情報」をクリックして作成し、その後に改めて「資格情報の表示」を選択します)。すると画面下部に JSON フォーマットで接続先サーバー名やユーザー、パスワードといった情報を確認できます:

この中で、今回使うのは以下の5つの情報です:
- hostname(接続先のサーバー名)
- password(接続時のパスワード)
- port(接続先のポート番号)
- db(データベース名)
- username(接続時のユーザー名)
以下では、これら5つの値がこのような内容になっていたと仮定して説明を続けます:
ではこの DBaaS 上のデータベース(BLUDB)にコマンドラインから接続するための手順を紹介します。
db2inst1 ユーザーへの変更
ここから下のコマンドはすべて db2 インストール時に指定したユーザー(今回の例では db2inst1)に切り替えて行う必要があります。というわけでターミナル上でのユーザーを切り替えます:
ノードカタログの確認
接続先となる Db2 サーバーはサーバーノードとしてカタログに記録されている必要があります。というわけで、まず現在のノードカタログを確認します(青字は出力結果):
この出力結果によるとノードカタログは空で何も登録されていないようです。
ノードのカタログ登録
というわけで今回の接続先となる IBM Cloud 上の Db2 サーバーをカタログに登録します。以下のように接続先のサーバー名とポート番号を指定し、今回は "dashdb" という名前でカタログに登録しています(太字部分は各自の環境や希望に併せて変更してください):
ノードカタログを削除
今回は作業しませんが、登録したカタログを削除する場合はカタログ名を指定して以下のように実行します:
エイリアスの確認
DB2 でデータベースに接続するにはデータベースをエイリアスとして登録する必要があります。というわけで次に接続先となるリモートデータベースのエイリアスを作成します。まずは現在登録されているエイリアスの一覧を確認します:
この例では(いずれもローカルサーバー内の)JSONDB と MYDB という2つのデータベースエイリアスが登録されていました。この例ではリモートサーバーのエイリアスは登録されていません。
エイリアスの登録
では先程作成した dashdb ノード上の接続先データベース(BLUDB)を "remotedb" という名前でエイリアス登録します:
成功したようです。念の為もう1回エイリアス一覧を確認します:
エイリアスが2つから3つに増え、REMOTEDB が新たに登録されました。
エイリアスを削除
この作業も今回は不要ですが、登録したエイリアスを削除する場合はエイリアス名を指定して次のように実行します:
エイリアスを指定して接続
では改めてエイリアスを作ったデータベースに接続します。接続時にはユーザー名とパスワードが必要になるので、以下のように指定します:
IBM Cloud 上のデータベースに接続できました。後はこのリモートデータベースに対して各種 SQL を実行してテーブルやデータの作成/更新/削除/検索といったコマンドが実行できます。
接続しているエイリアスから切断
なお、接続しているエイリアスから切断する場合は以下のコマンドを実行します:
http://dotnsf.blog.jp/archives/2960284.html
3年以上前のこの時の仮想環境が奇跡的に残っていたので久しぶりに使ってみました。で、折角の Db2 コマンドライン環境(?)なので、このコマンドラインインターフェースから IBM Cloud 上の DBaaS である Db2 に接続して使ってみました。以下、その手順の紹介です。
まずは IBM Cloud にログインして Db2 インスタンスを作成します。無料のライトアカウントでも使えるサービスが用意されているので、派手に使わない限りは無料で試すこともできます:

無料のライトプランを使う場合はデプロイ先ロケーションを「米国南部」に設定します。加えて自分のメールアドレスを指定します:

デプロイ先ロケーションが米国南部の場合、無料の Lite プランが選択可能になります(もちろん他のプランでも構いません)。プラン設定後に「作成」ボタンでインスタンスが作成されます:

インスタンス作成後、「サービス資格情報」メニューから「資格情報の表示」を選択します(「資格情報の表示」が存在しない場合は、最初に「新規資格情報」をクリックして作成し、その後に改めて「資格情報の表示」を選択します)。すると画面下部に JSON フォーマットで接続先サーバー名やユーザー、パスワードといった情報を確認できます:

この中で、今回使うのは以下の5つの情報です:
- hostname(接続先のサーバー名)
- password(接続時のパスワード)
- port(接続先のポート番号)
- db(データベース名)
- username(接続時のユーザー名)
以下では、これら5つの値がこのような内容になっていたと仮定して説明を続けます:
{ "hostname": "dashdb-txn-sbox-yp-dal09-03.services.dal.bluemix.net", "password": "xxxxxxxx", "port": 50000, "db": "BLUDB", "username": "lrz77612", : }
ではこの DBaaS 上のデータベース(BLUDB)にコマンドラインから接続するための手順を紹介します。
db2inst1 ユーザーへの変更
ここから下のコマンドはすべて db2 インストール時に指定したユーザー(今回の例では db2inst1)に切り替えて行う必要があります。というわけでターミナル上でのユーザーを切り替えます:
$ su - db2inst1
ノードカタログの確認
接続先となる Db2 サーバーはサーバーノードとしてカタログに記録されている必要があります。というわけで、まず現在のノードカタログを確認します(青字は出力結果):
$ db2 list node directory
SQL1037W The node directory is empty. SQLSTATE=01606
この出力結果によるとノードカタログは空で何も登録されていないようです。
ノードのカタログ登録
というわけで今回の接続先となる IBM Cloud 上の Db2 サーバーをカタログに登録します。以下のように接続先のサーバー名とポート番号を指定し、今回は "dashdb" という名前でカタログに登録しています(太字部分は各自の環境や希望に併せて変更してください):
成功したようです。この状態で再度ノードカタログを確認すると、今度は dashdb という名前のカタログが確認できるはずです:$ db2 catalog tcpip node dashdb remote dashdb-txn-sbox-yp-dal09-03.services.dal.bluemix.net server 50000 DB20000I The CATALOG TCPIP NODE command completed successfully. DB21056W Directory changes may not be effective until the directory cache is refreshed.
$ db2 list node directory
Node Directory
Number of entries in the directory = 1
Node 1 entry:
Node name = DASHDB
Comment =
Directory entry type = LOCAL
Protocol = TCPIP
Hostname = dashdb-txn-sbox-yp-dal09-03.services.dal.bluemix.net
Service name = 50000
ノードカタログを削除
今回は作業しませんが、登録したカタログを削除する場合はカタログ名を指定して以下のように実行します:
$ db2 uncatalog node dashdb
エイリアスの確認
DB2 でデータベースに接続するにはデータベースをエイリアスとして登録する必要があります。というわけで次に接続先となるリモートデータベースのエイリアスを作成します。まずは現在登録されているエイリアスの一覧を確認します:
$ db2 list db directory
System Database Directory
Number of entries in the directory = 2
Database 1 entry:
Database alias = JSONDB
Database name = JSONDB
Local database directory = /home/db2inst1
Database release level = 14.00
Comment =
Directory entry type = Indirect
Catalog database partition number = 0
Alternate server hostname =
Alternate server port number =
Database 2 entry:
Database alias = MYDB
Database name = MYDB
Local database directory = /home/db2inst1
Database release level = 14.00
Comment =
Directory entry type = Indirect
Catalog database partition number = 0
Alternate server hostname =
Alternate server port number =
この例では(いずれもローカルサーバー内の)JSONDB と MYDB という2つのデータベースエイリアスが登録されていました。この例ではリモートサーバーのエイリアスは登録されていません。
エイリアスの登録
では先程作成した dashdb ノード上の接続先データベース(BLUDB)を "remotedb" という名前でエイリアス登録します:
$ db2 catalog database BLUDB as remotedb at node dashdb DB20000I The CATALOG DATABASE command completed successfully. DB21056W Directory changes may not be effective until the directory cache is refreshed.
成功したようです。念の為もう1回エイリアス一覧を確認します:
$ db2 list db directory
System Database Directory
Number of entries in the directory = 3
Database 1 entry:
Database alias = REMOTEDB
Database name = BLUDB
Node name = DASHDB
Database release level = 14.00
Comment =
Directory entry type = Remote
Catalog database partition number = -1
Alternate server hostname =
Alternate server port number =
Database 2 entry:
Database alias = JSONDB
Database name = JSONDB
Local database directory = /home/db2inst1
Database release level = 14.00
Comment =
Directory entry type = Indirect
Catalog database partition number = 0
Alternate server hostname =
Alternate server port number =
Database 3 entry:
Database alias = MYDB
Database name = MYDB
Local database directory = /home/db2inst1
Database release level = 14.00
Comment =
Directory entry type = Indirect
Catalog database partition number = 0
Alternate server hostname =
Alternate server port number =
エイリアスが2つから3つに増え、REMOTEDB が新たに登録されました。
エイリアスを削除
この作業も今回は不要ですが、登録したエイリアスを削除する場合はエイリアス名を指定して次のように実行します:
$ db2 uncatalog db remotedb
エイリアスを指定して接続
では改めてエイリアスを作ったデータベースに接続します。接続時にはユーザー名とパスワードが必要になるので、以下のように指定します:
$ db2 connect to remotedb user lrz77612 using xxxxxxxx
Database Connection Information
Database server = DB2/LINUXX8664 11.1.2.2
SQL authorization ID = LRZ77612
Local database alias = REMOTEDB
IBM Cloud 上のデータベースに接続できました。後はこのリモートデータベースに対して各種 SQL を実行してテーブルやデータの作成/更新/削除/検索といったコマンドが実行できます。
接続しているエイリアスから切断
なお、接続しているエイリアスから切断する場合は以下のコマンドを実行します:
$ db2 terminate