7-3-3. RACFプロファイルの定義と権限付与 ~ DVMメタデータ・テーブルの登録
‒ 前手順 7-3-2項で定義・有効化したRACFクラス配下に、「SQLENG.*」というプロファイルを登録する
▪ DVMが内部的に持っている、以下のメタデータ・テーブルに対応;
‒ SQLENG.TABLES 仮想テーブル情報
‒ SQLENG.COLUMNS その列に関する情報
▪ これらのテーブルは、AVZXMAPDプログラムを用いるなどして情報を取り出すことが可能 (別項)
‒ DVMのユーザーに対して、同プロファイルの READ権限を付与する
▪ 仮想テーブルSAFセキュリティーを実装した場合は、メタデータ・テーブルに対する権限も付与し ておかないと仮想テーブルに関する情報が参照できず、エラーとなる
7-3-4. RACFプロファイルの定義と権限付与 ~ ユーザー作成の仮想テーブルの登録
‒ 同様の手順で、「テーブル・オーナー.仮想テーブル名」(下記)をRACFプロファイルとして登録の上、
DVMのユーザーに権限を付与する
▪ 仮想テーブルを参照 (SQL SELECTステートメント) だけできればよい場合は ACCESS(READ) で 充分であるが、データの更新も行いたい場合 (SQL INSERT、UPDATE、DELETEステートメント) には ACCESS(UPDATE) が必要
▪ 右図は「TEMP」から始まる仮想テーブルの参照許可をユーザーDVM001に付与する場合の例
RDEFINE RAVZ SQLENG.* UACC(NONE) PERMIT SQLENG.* CLASS(RAVZ) ID(DVM001) ACCESS(READ) SETROPTS REFRESH RACLIST(RAVZ)
7-3-3. RACFプロファイル定義例
(hlq.SAVZCNTL(AVZRAVTC)にサンプルを提供)
RDEFINE RAVZ DVSQL.TEMP* UACC(NONE) PERMIT DVSQL.TEMP* CLASS(RAVZ) ID(DVM001) ACCESS(READ) SETROPTS REFRESH RACLIST(RAVZ)
7-3-4. RACFプロファイル定義例
(補足)
仮想テーブルの RACFリソース・プロファイル名: RACFクラス名.テーブル・オーナー名.仮想テーブル名
SQLVTRESOURCETYPE SQLENGTABLEOWNER マップデータセット内の名前 パラメーターの設定値 パラメーターの設定値 (自分で定義した仮想テーブル名)
(Tips) メタデータ情報の利用
▪ DVM のメタデータ・テーブル ;
‒ DVMの場合、ユーザーが定義した仮想テーブルやその列に関する情報は、
物理的には区分データセットのメンバーとして保管されている
‒ DVMではそうしたメタデータ情報をアプリケーションで容易に利用でき
るようにするため、RDBMSソフトウェア製品におけるシステム・データ ベースに準じた方法で取り出せるようにしている
▪ 情報の取り出し ~ SQL アプリケーションから
‒ 以下のメタデータ・テーブルに対して、必要に応じてアプリケーションか らSQL SELECTステートメントを発行する方式;
▪ SQLENG.TABLES ・・ 仮想テーブル情報
▪ SQLENG.COLUMNS ・・ その列に関する情報
(内部的な位置づけのためか、これら自体のメタ情報は得られず、DVM Studio等でもこれらのテーブルは表示されない)
‒ AVZXMAPD、DVMのISPFアプリケーションに加えて、高級言語インター フェース(DSClient) を用いたユーザー開発のプログラムからも利用可能
▪ 情報の取り出し ~ JDBC アプリケーションから ;
‒ DVMが提供するJDBCドライバーも、一般的なJDBCドライバー製品と同 様に「DatabaseMetaData」クラス、「getTables」等のメソッドを提供して いるので、これを利用する
‒ 例えばユーザー開発のJDBCアプリケーションでgetTablesメソッドを発 行して、仮想テーブルの情報を入手するといったことができる
‒ JDBCだけでなく、ODBCドライバーに関してもこれに準じる
Driver driver = (Driver)(Class.forName(myDriverName).newInstance());
conn1 = DriverManager.getConnection(myURL, myUserName, myPassword);
//Display All Table Names
DatabaseMetaData tM = conn1.getMetaData();
ResultSet rsTM = tM.getTables(null, null, "%", null);
System.out.println("LIST OF TABLES");
while (rsTM.next())
{ System.out.println(rsTM.getString(3)); }
(※getString(3)・・テーブル名は 3個目の項目であるため)
JDBCプログラムのコーディング例 (部分)
SELECT * FROM SQLENG.TABLES;
SELECT * FROM SQLENG.COLUMNS WHERE TABLE_NAME = 'STAFFVS';
(必要に応じて、WHERE条件を付けて対象を絞るとよい) SQL文の実行例
© 2019 IBM Corporation 64
手順 8. JDBC ドライバーの入手と展開
Check 項番 メンバー名 必要度 作業内容 備考
8-1 - - hlq.SAVZBIN(AVZBIN2)をダウンロードし、導入先アプリケーション・サー
バーに配布する (バイナリ形式)
8-2 - - ファイル名を「JDBCdriver.zip」などに変更する
8-3 - - インストール作業用のフォルダーを設け、zipファイルを展開する 8-4 - - アプリケーション・サーバーにデプロイする
8-5 - - 構成をカストマイズする
8-6 - - DVMサーバーに接続し、仮想テーブルの照会を実行して結果を確認する
手順 9. ODBC ドライバーの入手と展開
Check 項番 メンバー名 必要度 作業内容 備考
9-1 - - 前提ハードウェア、ソフトウェアの確認 Windows以外の場合はIBMへ
9-2 - - 導入形態の検討
9-3 - - hlq.SAVZBIN(AVZBIN3)をダウンロードし、導入先ワークステーションに配布
する (バイナリ形式)
9-4 - - ファイル名を「ODBCdriver.zip」などに変更する
9-5 - - インストール作業用のフォルダーを設け、zipファイルを展開する 9-6 - - アプリケーション実行環境に応じた導入プログラムを選択・実行する 9-7 - - 「ODBCデータソースアドミニストレーター」による構成カストマイズ
9-8 - - DVMサーバーに接続し、仮想テーブルの照会を実行して結果を確認する