Db2: 表関数をつかってDb2構成パラメーター情報を取得しよう

## 表関数をつかってDb2構成パラメーター情報を取得しよう



たとえば　[IBM Db2 Warehouse on Cloud](https://www.ibm.com/cloud/db2-warehouse-on-cloud)  のような　fully-managedのDb2 システムでは　管理者でも データベース構成パラメーターやデータベース・マネージャー構成パラメーター情報を取得することが難しいですよね。　Db2には次のような構成情報を取得する管理ビューや表関数が準備されています。 

- データベース・マネージャー構成パラメーター情報を取得するための　[DBMCFG 管理ビューと DBM_GET_CFG 表関数](https://www.ibm.com/docs/ja/db2/11.5?topic=views-dbmcfg-database-manager-configuration-parameter-information)
- データベース構成パラメーター情報を取得するための　[DBCFG 管理ビューおよび DB_GET_CFG 表関数](https://www.ibm.com/docs/ja/db2/11.5?topic=views-dbcfg-database-configuration-parameter-information)

IBM Db2 Warehouse on Cloudでは　DBM_GET_CFG 表関数　DB_GET_CFG 表関数を使用できます。

今回は　Db2 WoC (Warehouse on Cloud)のコンソールで構成情報を取得する例を　DBM_GET_CFG 表関数とDB_GET_CFG 表関数を使用してご紹介します。　( 十分な権限を持ったユーザーで実行する必要があります。)

-----------------------------------------------

本手順はIBM Db2 Warehouse on Cloud (Db2 ｖ11.5.5)で確認しています。
これらの技術を自身の環境に適用する際には、自己の責任において十分な検証と確認を実施いただくことをお奨めいたします。

-----------------------------------------------

### 例1 DBM_GET_CFG 表関数 をつかってデータベース・マネージャー構成パラメーター情報を取得する。

データベース・マネージャー構成パラメーター情報は　[DBMCFG 管理ビューと DBM_GET_CFG 表関数](https://www.ibm.com/docs/ja/db2/11.5?topic=views-dbmcfg-database-manager-configuration-parameter-information)　を使用して取得できます。

ここではDBM_GET_CFG 表関数を使ってみましょう。

```SQL
SELECT 
	NAME					-- 構成パラメーター名
	, VALUE					-- メモリー内に保管されている構成パラメーターの現行値 
	, VALUE_FLAGS			-- 現行値に固有の情報 : NONE - 追加情報なし / AUTOMATIC - 自動に設定されている
    , DEFERRED_VALUE 		-- ディスク上の構成パラメーター値 据え置き値 / AUTOMATIC - 自動に設定されている
    , DEFERRED_VALUE_FLAGS	-- 据え置き値に固有の情報 : NONE - 追加情報なし
FROM TABLE(SYSPROC.DBM_GET_CFG(-1))； -- パラメーター　memberを指定 -1 : 現在のデータベース・メンバー 
```



Db2 WoC (Warehouse on Cloud)のコンソールの"SQLの実行"を開いて 上↑のSQLを入力し、"すべて実行"をClickします。

![DBM_GET_CFG-20210707.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/855502/3849d0ff-2b5d-3277-cca2-9ebf3fcde84e.jpeg)




"CSV形式でエクスポート"を選択すると　CSV形式のファイルがダウンロードされ次のような情報を得ることができます。

| NAME           | VALUE          | VALUE_FLAGS | DEFERRED_VALUE | DEFERRED_VALUE_FLAGS |
| -------------- | -------------- | ----------- | -------------- | -------------------- |
| agent_stack_sz | 1024           | NONE        | 1024           | NONE                 |
| agentpri       | -1             | NONE        | -1             | NONE                 |
| aslheapsz      | 15             | NONE        | 15             | NONE                 |
| audit_buf_sz   | 65000          | NONE        | 65000          | NONE                 |
| authentication | SERVER_ENCRYPT | NONE        | SERVER_ENCRYPT | NONE                 |
| (以下省略)     |                |             |                |                      |



### 例2 DB_GET_CFG 表関数 をつかってデータベース構成パラメーター情報を取得する

データベース構成パラメーター情報は　[DBCFG 管理ビューおよび DB_GET_CFG 表関数](https://www.ibm.com/docs/ja/db2/11.5?topic=views-dbcfg-database-configuration-parameter-information) を使用して取得できます。

ここではDB_GET_CFG 表関数を使ってすべてアクティブなデータベース・メンバー のsortheapを確認しましょう。

```SQL
SELECT 
	NAME					-- 構成パラメーター名
	, VALUE					-- メモリー内に保管されている構成パラメーターの現行値 
	, VALUE_FLAGS			-- 現行値に固有の情報 : NONE - 追加情報なし / AUTOMATIC - 自動に設定されている
	, MEMBER				-- データベース・メンバーの数値 ID
FROM TABLE(SYSPROC.DB_GET_CFG(-2))	-- パラメーター memberを指定 -2 : すべてのアクティブなデータベース・メンバー 
WHERE NAME = 'sortheap' 
order by MEMBER;
```



例１と同様に　Db2 WoC (Warehouse on Cloud)のコンソールの"SQLの実行"を開いて 上↑のSQLを入力し、"すべて実行"をClickします。"読み込まれたすべてのレコードを表示"を選択すると次のような情報が得られます。

| NAME       | VALUE  | VALUE_FLAGS | MEMBER |
| :--------- | :----- | :---------- | :----- |
| sortheap   | 121558 | NONE        | 0      |
| sortheap   | 121558 | NONE        | 1      |
| sortheap   | 121558 | NONE        | 2      |
| (以下省略) |        |             |        |



db2 コマンドが使用可能なpureScale や DPF といった複数のノードで構成されている環境でも 　構成情報を表関数を使用して取得すると確認したいパラメータのみ取得してノード間で比較可能だったりと　"地味に"便利です。



## まとめ

- 構成情報を取得する管理ビューや表関数で情報をえるためには十分な権限を持ったユーザーで実行する必要があります。

- [IBM Db2 Warehouse on Cloud](https://www.ibm.com/cloud/db2-warehouse-on-cloud)  のような　fully-managedのDb2 システムでも　表関数を使用してDb2構成パラメーター情報が参照可能です。