OCIの異機種DBLINK検証環境構築メモ ~その3 [OCI]

前回に続き、今回はOCI上にDB2を構成してみよう。

 1.VCNの設定
 2.DBCSの構築
 3.DB設定(初期化パラメータ設定、PDB構築)
 4.SQL Serverの構築
 5.LinkedServerの構成
 6.DB2の構築 ★
 7.Federationの構成 ★
 8.OracleGWの構築
 9.SQL ServerへのDBLINKの構成
 10.DB2へのDBLINKの構成

今回は検証目的なので手っ取り早くOracle Linux上にDB2を構成したが、サポートマトリクスを見るとDB2がOracle Linuxをサポートしていないので、基本的にこの構成はお勧めしない。OSとしてはRHELが一般的だろうが、OCIのイメージにはRHELがないので、RHELを手動で入れるか、DB2がサポートしているCentOSやUbuntuを選択すると良いだろう。もっとも、エンタープライズ用途でCentやUbuntuをDB2のOSとして使うのかという感はあるが、そもそもOCI上にDB2を構成するケース自体が稀だろうから、あまり悩む問題ではないのかもしれない。

6.DB2の構築


(1)Oracle Linuxコンピュートインスタンスの構築


まずはOracle Linuxコンピュートインスタンスを構築する。基本的にはOCIのメニューのComputeのInstanceからCreate Instanceを選択し作成する。イメージはデフォルトOracle Linux7.9なので、そのままとする。この際、SSHの秘密鍵、公開鍵をダウンロードする。シェイプはVM.Standard.E2.1.Micro (OCPU 1, memory 1GB, Boot volume 47GB)となった。作成されたら、Instance Detail画面のInstant AccessでパブリックIPアドレスを確認しておく。このデフォルトのシェイプはDBを動かす用途としては少し小さすぎたと後で反省した。
Inked20211008_db2computeinstance2.jpg

以上で、基本的な構成は終了である。手元のPCからSSHで暗号鍵を使ってパブリックIPに接続できることを確認する。タイムゾーンをUTCからAsia/Tokyoに変更しておく。
[root@db2 ~]# cp /etc/localtime /etc/localtime.org
[root@db2 ~]# ln -sf  /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
[root@db2 ~]# ll /etc/localtime*
lrwxrwxrwx. 1 root root 30 Sep 18 15:48 /etc/localtime -> /usr/share/zoneinfo/Asia/Tokyo
lrwxrwxrwx. 1 root root 25 Aug 19 02:32 /etc/localtime.org -> ../usr/share/zoneinfo/GMT
[root@db2 ~]#

(2)Oracle Linuxの環境の確認


環境を確認してみよう。OSのバージョンは以下の通りOracle Linux 7.9となっている。
[root@db2 ~]# cat /etc/oracle-release
Oracle Linux Server release 7.9
[root@db2 ~]# uname -a
Linux db2 5.4.17-2102.204.4.4.el7uek.x86_64 #2 SMP Tue Aug 17 20:25:28 PDT 2021 x86_64 x86_64 x86_64 GNU/Linux
[root@db2 ~]#

ローカルディスクは39GB、利用できるのは36GB程度。
[opc@db2 ~]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        313M     0  313M   0% /dev
tmpfs           344M     0  344M   0% /dev/shm
tmpfs           344M  5.1M  339M   2% /run
tmpfs           344M     0  344M   0% /sys/fs/cgroup
/dev/sda3        39G  3.2G   36G   9% / ★
/dev/sda1       200M  7.5M  193M   4% /boot/efi
tmpfs            69M     0   69M   0% /run/user/0
tmpfs            69M     0   69M   0% /run/user/994
tmpfs            69M     0   69M   0% /run/user/1000

メモリは686MB。Hugepageは当然構成されていない。
[root@db2 ~]# free
              total        used        free      shared  buff/cache   available
Mem:         703108      262004       67392       47228      373712      268608
Swap:       8388604      301056     8087548
[root@db2 ~]#
[root@db2 ~]# cat /proc/meminfo
MemTotal:         703108 kB
MemFree:           64756 kB
MemAvailable:     266064 kB
Buffers:              20 kB
Cached:           306076 kB
...
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:               0 kB
DirectMap4k:      226192 kB
DirectMap2M:      817152 kB
DirectMap1G:           0 kB
[root@db2 ~]#

CPUは2コア見える。実体は32コアのものから切り出しているようだ。
[root@db2 ~]# cat /proc/cpuinfo
processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 23
model           : 1
model name      : AMD EPYC 7551 32-Core Processor
stepping        : 2
microcode       : 0x1000065
cpu MHz         : 1996.246
cache size      : 512 KB
physical id     : 0
siblings        : 2
core id         : 0
cpu cores       : 1
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm rep_good nopl cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext perfctr_core ssbd ibpb vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves nt_good clzero xsaveerptr virt_ssbd arat arch_capabilities
bugs            : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass
bogomips        : 3992.49
TLB size        : 1024 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 1
vendor_id       : AuthenticAMD
cpu family      : 23
...

(3)DB2のインストール準備


今回はdb2setupを利用してインストールすることにする。手順は参考[2]を参考にしながら行った。
DB2のCommunity Edition(メモリ16GB、4コアの制限あり)のバイナリを以下のサイトからダウンロードする。最新のバージョンで11.5.6を利用する。
https://www.ibm.com/analytics/db2/trials

/tmpにDB2のバイナリを転送し解凍する(/tmpはいずれ削除されるので、インストーラを残したい場合は/tmpは避けた方が良い)。インストーラはdb2setupである。
[opc@db2 ~]$ ll /tmp
total 2034632
-rw-------. 1 root root        995 Sep 18 00:07 dhclient-exit-hooksTev.log
drwx------. 3 root root         17 Sep 18 00:07 systemd-private-ef825e99a66941098bbb8b10143e1fb0-chronyd.service-3zBi0J
-rw-r--r--. 1 opc  opc  2083458415 Sep 14 05:10 v11.5.6_linuxx64_server_dec.tar.gz ★
[opc@db2 ~]$ gunzip -c v11.5.6_linuxx64_server_dec.tar.gz | tar -xvf-
...
[root@db2 tmp]# ls server_dec/db2/linuxamd64/install/
codegen.jar         DB2prereqs.xml              libdb2jcc.so
compileGPL          db2remssh                   libdb2jcc.so.1
db2chglibpath       db2rocmc                    libdb2locale_install.so
db2ckgpfs           db2_run_as                  libdb2locale_install.so.1
db2ckpcmk           db2scp                      libdb2locale.so
db2cktsa            db2setup★                  libdb2locale.so.1
...

(4)DB2のプレチェック


手順に従ってプレチェックを走らせる。今回必要なはDB2 Database "Server"にパッケージが不足している旨のメッセージが出ている。
[root@db2 server_dec]# ./db2prereqcheck -v 11.5.6.0 -s
Requirement not matched for DB2 database "Server" . Version: "11.5.6.0".
Summary of prerequisites that are not met on the current system:    DBT3514W  The db2prereqcheck utility failed to find the following 32-bit library file: "/lib/libpam.so*".

DBT3514W  The db2prereqcheck utility failed to find the following 32-bit library file: "libstdc++.so.6".


Requirement not matched for DB2 database "Server" with pureScale feature . Version: "11.5.6.0".
Summary of prerequisites that are not met on the current system: DBT3613E  The db2prereqcheck utility failed to verify the prerequisites for TSA. Ensure your machine meets all the TSA installation prerequisites.

DBT3507E  The db2prereqcheck utility failed to find the following package or file: "patch".

   Actual version is undetermined: "kernel-headers".
DBT3617E  The db2prereqcheck utility detected that a "kernel-headers" package with a version that matches the system "kernel" level "5.4.17-2102.204.4.4.el7uek.x86_64" is not installed.

DBT3507E  The db2prereqcheck utility failed to find the following package or file: "kernel-devel".

DBT3507E  The db2prereqcheck utility failed to find the following package or file: "m4".

DBT3507E  The db2prereqcheck utility failed to find the following package or file: "gcc-c++".

DBT3563E  The db2prereqcheck utility determined that SELinux is enabled, which is not supported with GPFS.

DB2 database "Server"に不足している以下の32bitパッケージをインストールする。yumリポジトリは構成されているので、以下コマンドを実行するだけでインストールは可能。pureSclaeやTSAを利用する場合はさらにいろいろと必要なようであるが、今回は使用しないので、無視する。

yum install libstdc++.i686
yum install pam.i686

もう一度precheckを流したところ、全部OKとなった。
[root@db2 server_dec]# ./db2prereqcheck -v 11.5.6.0 -s
DBT3533I  The db2prereqcheck utility has confirmed that all installation prerequisites were met.★
・・・

(5)X11の設定


参考[4]を見ながらX11を設定する。XserverはXmingを利用、ターミナルはPuttyを利用することとし、端末側にセットアップする。Oracle Linuxサーバ上では以下を変更する。
[root@db2 opc]# vi /etc/ssh/sshd_config
[root@db2 opc]# cat /etc/ssh/sshd_config | grep X11UseLocalhost
#X11UseLocalhost yes
X11UseLocalhost no

Xを利用する上での注意は、opcでログインしてから、sudoでユーザを切り替える際、xauthの内容を以下のように引き継ぐ必要がある点である。自動でできると良いのだが、やり方がわからないので、手動で実行する(初めての使うときは、/root/.Xauthorityがないため、touchでファイルだけ作成する)。
[opc@db2 ~]$ xauth list
db2.subnet.vcn.oraclevcn.com:10  MIT-MAGIC-COOKIE-1  f6d909c7dfe75cd7e539c52068473291
[opc@db2 ~]$ sudo -s
[root@db2 opc]# xauth list ★opcのxauthが引き継がれていない(古い値になっている)ため、手動でxauth addする
db2.subnet.vcn.oraclevcn.com:10  MIT-MAGIC-COOKIE-1  1ae63e695284309e06b4f39b928ab8da
[root@db2 opc]# xauth add db2.subnet.vcn.oraclevcn.com:10  MIT-MAGIC-COOKIE-1  f6d909c7dfe75cd7e539c52068473291
[root@db2 opc]# xauth list ★opcのxauthが追加された
db2.subnet.vcn.oraclevcn.com:10  MIT-MAGIC-COOKIE-1  f6d909c7dfe75cd7e539c52068473291
[root@db2 opc]#

db2setupを起動するといくつか不足しているXのパッケージで引っかかるのでそれらをインストールする。ここはトライ&エラーで必要なパッケージを洗い出したが、結果としては以下4つのパッケージである。

yum install xauth
yum install libXrender.x86_64
yum install libXtst
yum install libXft

ようやくdb2setupの画面を見ることができた。
20211008_db2setup1.jpg


(6)db2setupによるDB2のインストール


インストーラが立ち上がれば、後はウィザードに従って必要事項を入力していくだけ、製品インストールと必要なOSユーザ(インスタンスオーナー用とフェンスユーザ用)とインスタンス作成まで実行してくれる。

Server Editionを選択

20211008_db2setup2.jpg


TypicalとCustomがあるが、Typicalを選択。create an instanceをチェック。I agree to the IBM and Non-IBM termsにチェック。
20211008_db2setup3.jpg


Instance Ownerとして新規ユーザを作成する。Passwordにパスワードを入力。他デフォルト(user name: db2inst1, use default UID, group name:db2iadm1, use default GID, Home directory:/home/db2inst1)とする。
20211008_db2setup4.jpg


Fenced Userも同様に作成。
20211008_db2setup5.jpg


Response File and Summary画面で、Install DB2 Server Edition on this computer and save my setting in a response fileを選択しFinishを押下。レスポンスファイルは/root/db2server.rspに作成される。参考まで、今回のインストールで作成されたレスポンスファイルは参考ファイル[1]に載せておく。これがあれば、次回同じ構成を作成する際に画面は不要となり、Xを構成する必要はないかもしれない。
20211008_db2setup6.jpg


インストールが始まる。しばらくかかる。
20211008_db2setup7.jpg


インストール完了。Post-install stepsを押下。
20211008_db2setup8.jpg


インスタンスオーナーとインスタンスのポートを確認する。この例では、インスタンスオーナのユーザIDはdb2inst1、db2inst1インスタンスのポートは25010となった。その他、インストール結果の検証方法等が記載されているので一通り確認する。
20211008_db2setup9.jpg


インストールされた環境を確認してみよう。
[db2inst1@db2 bin]$ db2val
DBI1379I  The db2val command is running. This can take several minutes.

DBI1335I  Installation file validation for the DB2 copy installed at
      /opt/ibm/db2/V11.5 was successful. ★インストール検証OK

DBI1339I  The instance validation for the instance db2inst1 was
      successful. ★インスタンス検証OK

DBI1343I  The db2val command completed successfully. For details, see
      the log file /tmp/db2val-210918_062559.log.

[db2inst1@db2 bin]$ db2licm -l
Product name:                     "DB2 Community Edition" ★コミュニティエディション
License type:                     "Community"
Expiry date:                      "Permanent"
Product identifier:               "db2dec"
Version information:              "11.5"
Max amount of memory (GB):        "16"
Max number of cores:              "4"
Features:
IBM DB2 Performance Management Offering:              "Not licensed"

[db2inst1@db2 bin]$ db2level
DB21085I  This instance or install (instance name, where applicable:
"db2inst1") uses "64" bits and DB2 code release "SQL11056" with level
identifier "0607010F".
Informational tokens are "DB2 v11.5.6.0", "s2106111000", "DYN2106111000AMD64", ★バージョン11.5.6パッチなし
and Fix Pack "0".
Product is installed at "/opt/ibm/db2/V11.5". ★インストールディレクトリ

(7)DB2のデータベース作成


まずはインスタンスオーナーにログインしてインスタンスを起動する。
[opc@db2 ~]$ sudo su - db2inst1
[db2inst1@db2 ~]$ db2start
09/18/2021 15:51:33     0   0   SQL1026N  The database manager is already active.
SQL1026N  The database manager is already active. ★すでに起動している
[db2inst1@db2 ~]$ db2stop ★停止する
09/18/2021 15:51:49     0   0   SQL1064N  DB2STOP processing was successful.
SQL1064N  DB2STOP processing was successful.
[db2inst1@db2 ~]$ db2start ★起動する
09/18/2021 15:51:55     0   0   SQL1063N  DB2START processing was successful.
SQL1063N  DB2START processing was successful.
[db2inst1@db2 ~]$

インスタンスのコンフィグはdb2 get dbm cfgで確認できる。全体の出力結果は、参考ファイル[2]を参照されたい。
[db2inst1@db2 ~]$ db2 get dbm cfg

          Database Manager Configuration

     Node type = Enterprise Server Edition with local and remote clients
...
 Default database path                       (DFTDBPATH) = /home/db2inst1

 Database monitor heap size (4KB)          (MON_HEAP_SZ) = AUTOMATIC(90)
 Java Virtual Machine heap size (4KB)     (JAVA_HEAP_SZ) = 65536
 Audit buffer size (4KB)                  (AUDIT_BUF_SZ) = 0
 Global instance memory (% or 4KB)     (INSTANCE_MEMORY) = AUTOMATIC(131833)
 Member instance memory (% or 4KB)                       = GLOBAL
 Agent stack size                       (AGENT_STACK_SZ) = 1024
 Sort heap threshold (4KB)                  (SHEAPTHRES) = 0

 Directory cache support                     (DIR_CACHE) = YES

 Application support layer heap size (4KB)   (ASLHEAPSZ) = 15
 Max requester I/O block size (bytes)         (RQRIOBLK) = 65535
 Workload impact by throttled utilities(UTIL_IMPACT_LIM) = 10
...
[db2inst1@db2 ~]$

DBを作成する。ここではtestdbという名前のデータベースとした。
[db2inst1@db2 ~]$ db2 create database testdb
DB20000I  The CREATE DATABASE command completed successfully.

データベースに接続する。
[db2inst1@db2 ~]$ db2 connect to testdb

   Database Connection Information

 Database server        = DB2/LINUXX8664 11.5.6.0
 SQL authorization ID   = DB2INST1
 Local database alias   = TESTDB

テーブルを作成し、レコードを入れてみる。なんとなくDBとして動く状態にはなったように見える。
[db2inst1@db2 ~]$ db2 "CREATE TABLE TBL1(COL1 INTEGER, COL2 VARCHAR(50))"
DB20000I  The SQL command completed successfully.
[db2inst1@db2 ~]$ db2 "select * from tbl1"

COL1        COL2
----------- --------------------------------------------------

  0 record(s) selected.

[db2inst1@db2 ~]$
[db2inst1@db2 ~]$ db2 "insert into tbl1 values(1,'kzhr')"
DB20000I  The SQL command completed successfully.
[db2inst1@db2 ~]$ db2 "commit"
DB20000I  The SQL command completed successfully.
[db2inst1@db2 ~]$ db2 "select * from tbl1"

COL1        COL2
----------- --------------------------------------------------
          1 kzhr

  1 record(s) selected.

データベースへの接続を停止する。これをしないとインスタンスの停止はできない。
[db2inst1@db2 ~]$
[db2inst1@db2 ~]$ db2 terminate
DB20000I  The TERMINATE command completed successfully.
[db2inst1@db2 ~]$ db2stop
09/18/2021 16:02:21     0   0   SQL1064N  DB2STOP processing was successful.
SQL1064N  DB2STOP processing was successful.
[db2inst1@db2 ~]$

7.Federationの構成


(1)Oracleクライアントのインストール準備


Oracleクライアントをインストールする準備を行う。まずはOTNからバイナリ(LINUX.X64_193000_client.zip)をダウンロード、サーバに配置し解凍する。
Oracle Database 19c Client (19.3) for Linux x86-64
https://www.oracle.com/database/technologies/oracle19c-linux-downloads.html

以下の通りoracleユーザを作成する。念のためDBCS側のuid(101),gid(1001)は合わせておく。パスワードも設定しておく。
[root@db2 tmp]# groupadd -g 1001 oinstall
[root@db2 tmp]# useradd -u 101 -g oinstall oracle
[root@db2 tmp]# su - oracle
[oracle@db2 ~]$ id
uid=101(oracle) gid=1001(oinstall) groups=1001(oinstall) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[oracle@db2 ~]$
[root@db2 tmp]# passwd oracle

インストールディレクトリを作成する。今回は/u01/app/oracle配下にインストールする。
[root@db2 tmp]# mkdir -p /u01/app/oracle
[root@db2 tmp]# ll /u01/app
total 0
drwxr-xr-x. 2 root root 6 Sep 19 01:26 oracle
[root@db2 tmp]# chown oracle:oinstall /u01/app/oracle
[root@db2 tmp]# ll /u01/app
total 0
drwxr-xr-x. 2 oracle oinstall 6 Sep 19 01:26 oracle
[root@db2 tmp]# mkdir -p /u01/app/oraInventory
[root@db2 tmp]# chown oracle:oinstall /u01/app/oraInventory
[root@db2 tmp]#

(2)Oracleクライアントのインストール


oracleユーザでログインし、前述したxauth addしてXが起動できるようにしてからrunInstallerを起動する。以下のワーニングがでるが、yとする。
Checking monitor: must be configured to display at least 256 colors
    >>> Could not execute auto check for display colors using command /usr/bin/xdpyinfo. Check if the DISPLAY variable is set.    Failed <<<<

Some requirement checks failed. You must fulfill these requirements before

continuing with the installation,

Continue? (y/n) [n]

インストールタイプはAdministratorを選択する。Instant ClientでもFederationは構成できるはずであるが、検証目的なので全て入れておくことにした。
20211109_OraClient1.jpg


インストールロケーションはoracle baseとして先に作成したディレクトリを入力。ソフトウェアロケーションはデフォルト値のままとする。
20211109_OraClient2.jpg


初めてのインストールなのでoraInventoryを指定する。これも先に作成したディレクトリを指定する。
20211109_OraClient3.jpg


prerequisite checkでいくつかパッケージ不足のメッセージが表示される。今回は以下パッケージを追加インストールし、check againを押下し全てパスすることを確認する。
yum install compat-libcap1.x86_64 libstdc++-devel.x86_64 libaio-devel.x86_64 psmisc.x86_64
20211109_OraClient4.jpg


サマリ画面。レスポンスファイルを保存しておく。実際の内容は参考ファイル[3]を参照されたい。

20211109_OraClient5.jpg


インストールの途中でrootでスクリプトを実行する。
20211109_OraClient6.jpg

[root@db2 tmp]# /u01/app/oraInventory/orainstRoot.sh
Changing permissions of /u01/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.

Changing groupname of /u01/app/oraInventory to oinstall.
The execution of the script is complete.

以上でOracleクライアントのインストールは完了。

(3)Oracleクライアントの設定


oracleユーザの.bash_profileに以下★の環境変数の設定を追加・変更する。
[oracle@db2 ~]$ cat ~/.bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

export ORACLE_HOME=/u01/app/oracle/product/19.0.0/client_1 ★
export NLS_LANG=Japanese_Japan.AL32UTF8 ★

# User specific environment and startup programs

PATH=$ORACLE_HOME/bin:$PATH:$HOME/.local/bin:$HOME/bin ★

tnsnames.oraを作成する。今回接続先となるDBCSのインスタンス(PDB)の接続識別子(k5)を作成する。
[oracle@db2 ~]$ cd $ORACLE_HOME/network/admin
[oracle@db2 admin]$ vi tnsnames.ora
[oracle@db2 admin]$ cat tnsnames.ora
k5 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.2)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = k5.subnet.vcn.oraclevcn.com)
    )
  )

tnspingで疎通確認を行う。問題なし。
[oracle@db2 admin]$ tnsping k5

TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 19-9月 -2021 02:06:51

Copyright (c) 1997, 2019, Oracle.  All rights reserved.

パラメータ・ファイルを使用しました:
/u01/app/oracle/product/19.0.0/client_1/network/admin/sqlnet.ora


エイリアスを解決するためにTNSNAMESアダプタを使用しました。
(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.2)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = k5.subnet.vcn.oraclevcn.com)))に接続の試行中
OK (10ミリ秒)

続いてsqlplusで接続する。こちらも問題なし。
[oracle@db2 admin]$ sqlplus f/***@k5

SQL*Plus: Release 19.0.0.0.0 - Production on 日 9月 19 02:11:01 2021
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

最終正常ログイン時間: 金 9月  17 2021 14:23:53 +09:00


Oracle Database 19c EE High Perf Release 19.0.0.0.0 - Production
Version 19.11.0.0.0
に接続されました。
SQL>

以上でOracleクライアントの設定は完了である。

(4)DB2ユーザの設定


oinstallにdb2inst1,db2fenc1を追加する。必須ではないが、これにより、DB2のOSユーザでoerrコマンドなど、いくつかOracleの基本的なコマンドが動作しない問題が解決する。
[root@db2 opc]# id db2inst1
uid=1001(db2inst1) gid=101(db2iadm1) groups=101(db2iadm1)
[root@db2 opc]# usermod -aG oinstall db2inst1
[root@db2 opc]# id db2inst1
uid=1001(db2inst1) gid=101(db2iadm1) groups=101(db2iadm1),1001(oinstall) ★


DB2ユーザ(db2inst1)の環境変数の設定を行う。.bash_profileに以下★の設定を追加・変更する。db2inst1ユーザからtnspingおよびsqlplusでDBCSのPDBへ接続できることを確認する。
[db2inst1@db2 ~]$ cat .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

export ORACLE_HOME=/u01/app/oracle/product/19.0.0/client_1★
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH★
export NLS_LANG=Japanese_Japan.AL32UTF8★

# User specific environment and startup programs

PATH=$ORACLE_HOME/bin:$PATH:$HOME/.local/bin:$HOME/bin★

export PATH

(5)Federationの構成


OracleへのFederation Serverの構成方法は参考[3]のドキュメントを参考にしながら行った。
db2dj.iniに以下のoracleの設定を追加する。

ORACLE_HOME=/u01/app/oracle/product/19.0.0/client_1
DB2LIBPATH=/u01/app/oracle/product/19.0.0/client_1/lib
NLS_LANG=Japanese_Japan.AL32UTF8

ファイルは/home/db2inst1/sqllib/cfg/db2dj.iniにあるので、★の部分を追加する。
[db2inst1@db2 cfg]$ cat /home/db2inst1/sqllib/cfg/db2dj.ini
DJX_ODBC_LIBRARY_PATH=/home/db2inst1/sqllib/federation/odbc/lib:
DB2_FED_LIBPATH=/home/db2inst1/sqllib/federation/odbc/lib:/home/db2inst1/sqllib/federation/netezza/lib64:
ODBCINST=/home/db2inst1/sqllib/cfg/odbcinst.ini
NZ_ODBC_INI_PATH=/home/db2inst1/sqllib/cfg
[db2inst1@db2 cfg]$ cp db2dj.ini db2dj.ini.org
[db2inst1@db2 cfg]$ vi db2dj.ini
[db2inst1@db2 cfg]$ cat db2dj.ini
DJX_ODBC_LIBRARY_PATH=/home/db2inst1/sqllib/federation/odbc/lib:
DB2_FED_LIBPATH=/home/db2inst1/sqllib/federation/odbc/lib:/home/db2inst1/sqllib/federation/netezza/lib64:
ODBCINST=/home/db2inst1/sqllib/cfg/odbcinst.ini
NZ_ODBC_INI_PATH=/home/db2inst1/sqllib/cfg
ORACLE_HOME=/u01/app/oracle/product/19.0.0/client_1 ★
DB2LIBPATH=/u01/app/oracle/product/19.0.0/client_1/lib ★
NLS_LANG=Japanese_Japan.AL32UTF8 ★

続いて、NET8ラッパーを作成する。DB2インスタンスを起動、testdbへ接続し、CREATE WRAPPER NET8を実行する。
[db2inst1@db2 ~]$ db2start
09/19/2021 14:40:49     0   0   SQL1063N  DB2START processing was successful.
SQL1063N  DB2START processing was successful.
[db2inst1@db2 ~]$ db2 "connect to testdb"

   Database Connection Information

 Database server        = DB2/LINUXX8664 11.5.6.0
 SQL authorization ID   = DB2INST1
 Local database alias   = TESTDB

[db2inst1@db2 ~]$ db2 "CREATE WRAPPER NET8"
DB21034E  The command was processed as an SQL statement because it was not a
valid Command Line Processor command.  During SQL processing it returned:
SQL20076N  The instance for the database is not enabled for the specified
action or operation.  Reason code = "1".  SQLSTATE=0A502

SQL20076Nのエラーが発生した。以下サイトを見ると、どうやらdatabase managerのfederated yesの設定変更してインスタンス再起動が必要とのことである。

https://www.ibm.com/support/pages/what-causes-error-sql20076n
・What causes error SQL20076N ?
Cause:Error SQL20076N is received when the FEDERATED database manager configuration parameter is not enabled.
Answer:
1. Set the FEDERATED database manager configuration parameter to YES by entering the following statement using the command line processor:
db2 update database manager configuration using federated yes
2. Restart the DB2 instance by typing the following commands using the command line processor:
db2stop
db2start

実際に上記設定変更を行う。特に問題なくインスタンスの再起動まで完了。
[db2inst1@db2 ~]$ db2 update database manager configuration using federated yes
DB20000I  The UPDATE DATABASE MANAGER CONFIGURATION command completed
successfully.
[db2inst1@db2 ~]$ db2 terminate
DB20000I  The TERMINATE command completed successfully.
[db2inst1@db2 ~]$ db2stop
09/19/2021 15:09:06     0   0   SQL1064N  DB2STOP processing was successful.
SQL1064N  DB2STOP processing was successful.
[db2inst1@db2 ~]$ db2start
09/19/2021 15:09:11     0   0   SQL1063N  DB2START processing was successful.
SQL1063N  DB2START processing was successful.
[db2inst1@db2 ~]$

再度CREATE WRAPPER NET8を行うと成功した。
[db2inst1@db2 ~]$ db2 connect to testdb

   Database Connection Information

 Database server        = DB2/LINUXX8664 11.5.6.0
 SQL authorization ID   = DB2INST1
 Local database alias   = TESTDB

[db2inst1@db2 ~]$ db2 "CREATE WRAPPER NET8"
DB20000I  The SQL command completed successfully. ★
[db2inst1@db2 ~]$

続いてサーバを作成する。
[db2inst1@db2 ~]$ db2 "create server k5 type oracle version 19.0 wrapper NET8 options (node 'k5', password 'Y', pushdown 'Y')"
DB20000I  The SQL command completed successfully.
[db2inst1@db2 ~]$

ユーザマッピングの設定を行う。上記で作成したサーバにOracle側の接続ユーザの認証情報を設定する。
[db2inst1@db2 ~]$ db2 "create user mapping for user server k5 options ( REMOTE_AUTHID 'f', REMOTE_PASSWORD '***' )"
DB20000I  The SQL command completed successfully.

以上でFederationの設定は完了である。実際にOracleへのSQLが通るか確認すると、うまくいった!
[db2inst1@db2 ~]$ db2 "select * from k5.f.emp"

EMPNO  ENAME      JOB       MGR    HIREDATE                   SAL       COMM      DEPTNO
------ ---------- --------- ------ -------------------------- --------- --------- ------
  7839 KING       PRESIDENT      - 1981-11-17-00.00.00.000000   5000.00         -     10
  7698 BLAKE      MANAGER     7839 1981-05-01-00.00.00.000000   2850.00         -     30
  7782 CLARK      MANAGER     7839 1981-06-09-00.00.00.000000   2450.00         -     10
  7566 JONES      MANAGER     7839 1981-04-02-00.00.00.000000   2975.00         -     20
  7788 SCOTT      ANALYST     7566 1987-04-19-00.00.00.000000   3000.00         -     20
  7902 FORD       ANALYST     7566 1981-12-03-00.00.00.000000   3000.00         -     20
  7369 SMITH      CLERK       7902 1980-12-17-00.00.00.000000    800.00         -     20
  7499 ALLEN      SALESMAN    7698 1981-02-20-00.00.00.000000   1600.00    300.00     30
  7521 WARD       SALESMAN    7698 1981-02-22-00.00.00.000000   1250.00    500.00     30
  7654 MARTIN     SALESMAN    7698 1981-09-28-00.00.00.000000   1250.00   1400.00     30
  7844 TURNER     SALESMAN    7698 1981-09-08-00.00.00.000000   1500.00      0.00     30
  7876 ADAMS      CLERK       7788 1987-05-23-00.00.00.000000   1100.00         -     20
  7900 JAMES      CLERK       7698 1981-12-03-00.00.00.000000    950.00         -     30
  7934 MILLER     CLERK       7782 1982-01-23-00.00.00.000000   1300.00         -     10
  9998 NEWEMP     PRESIDENT      - 2021-09-12-11.13.53.000000   5000.00         -     10

  15 record(s) selected.

ちなみにDB2ではシノニムはニックネームとして作成することができる。以下のようにニックネームを作成することでサーバ名を隠蔽することが可能である。
[db2inst1@db2 ~]$ db2 "CREATE NICKNAME db2inst1.k5_emp FOR k5.f.emp"
DB20000I  The SQL command completed successfully.
[db2inst1@db2 ~]$ db2 "select * from k5_emp"

EMPNO  ENAME      JOB       MGR    HIREDATE                   SAL       COMM      DEPTNO
------ ---------- --------- ------ -------------------------- --------- --------- ------
...

まとめ


OCI上でDB2をインストール、データベースを作成し、Oracleクライアントをインストール・設定し、Federation Serverを構成しOracleへ接続する方法について記載した。Oracle LinuxでDB2は動くのかは不安はあったが、必須パッケージをきちんと準備すればインストールでき、今回検証した範囲では特に問題なく動作することを確認した。次回はOracleGatewayの構成方法について記載してみたいと思う。

◇参考


[1] 即戦力のDB2管理術

即戦力のDB2管理術 ~仕組みからわかる効率的管理のノウハウ

即戦力のDB2管理術 ~仕組みからわかる効率的管理のノウハウ

  • 作者: 下佐粉 昭
  • 出版社/メーカー: 技術評論社
  • 発売日: 2011/04/08
  • メディア: 単行本(ソフトカバー)


[2] Installing Db2 servers using the Db2 Setup wizard (Linux and UNIX)

[3] How does Federation Server connect to Oracle data source via Instant Client?

[4] Running Graphical Applications Securely on Oracle Cloud Infrastructure

◇参考ファイル


[1] DB2のインストーラのレスポンスファイル
[root@db2 opc]# cat /root/db2server.rsp
*-----------------------------------------------------
* Generated response file used by the DB2 Setup wizard
* generation time: 9/18/21 5:33 AM
*-----------------------------------------------------
*  Product Installation
LIC_AGREEMENT       = ACCEPT
PROD       = DB2_SERVER_EDITION
FILE       = /opt/ibm/db2/V11.5
INSTALL_TYPE       = TYPICAL
*-----------------------------------------------
*  Das properties
*-----------------------------------------------
DAS_CONTACT_LIST       = LOCAL
* ----------------------------------------------
*  Instance properties
* ----------------------------------------------
INSTANCE       = inst1
inst1.TYPE       = ese
*  Instance-owning user
inst1.NAME       = db2inst1
inst1.GROUP_NAME       = db2iadm1
inst1.HOME_DIRECTORY       = /home/db2inst1
inst1.PASSWORD       = 950640616429906512023297944420508313828123455632730438513228255593461432458416223456036832448445492711578342498653692333335222622734761075274283324395386411544853756320496743408227814262723354966225615278654096931872723108982573022551923619411473168849326813413622086595121272258350735774365940235475428514232842752410099416505600591422351305405369272625221103266374125068782624039439514382235224652624939751544942926724431946633696660344422014451331827766656638182692221427270556132248213153932610061491102358265668031394725150546523314042113086842631322008657621651335832910899983832426429664974541258329257743294274864627184825853337284486692243263756298331568533629324484241536415436621933235753093352433346360145945661814866416662446230343074518626998131246453143
ENCRYPTED       = inst1.PASSWORD
inst1.AUTOSTART       = YES
inst1.SVCENAME       = db2c_db2inst1
inst1.PORT_NUMBER       = 25010
inst1.FCM_PORT_NUMBER       = 20016
inst1.MAX_LOGICAL_NODES       = 6
inst1.CONFIGURE_TEXT_SEARCH       = NO
*  Fenced user
inst1.FENCED_USERNAME       = db2fenc1
inst1.FENCED_GROUP_NAME       = db2fadm1
inst1.FENCED_HOME_DIRECTORY       = /home/db2fenc1
inst1.FENCED_PASSWORD       = 571185537232343041763270154361524673344253060832241250240365234602333370773398890635958273178286044005834416435965614021261462055314463250142929745425525963488641223984212243393506854434500316144423087219321444062235207636591745243320662224886257926337032832864284149645637703113558324235226433548428325776824043119258429959369531480719670666491802742054565564421743149152034481843343046733520653714422769592050385076495215442236632303892949697939829063327030659950189374754317447285180122605814125162115375585545636033596545201925759408430553856375234257233353400134082655257979412926287539342379578352712795543751359487506516935370132975476390700266767723259273424251413414266528278129074633264442728175454530887654208855409471734028734758836723435352011324456551438
ENCRYPTED       = inst1.FENCED_PASSWORD
*-----------------------------------------------
*  Installed Languages
*-----------------------------------------------
LANG       = EN


[2] DB2インスタンスのコンフィグ
[db2inst1@db2 ~]$ db2 get dbm cfg

          Database Manager Configuration

     Node type = Enterprise Server Edition with local and remote clients

 Database manager configuration release level            = 0x1500

 CPU speed (millisec/instruction)             (CPUSPEED) = 1.889377e-07
 Communications bandwidth (MB/sec)      (COMM_BANDWIDTH) = 1.000000e+02

 Max number of concurrently active databases     (NUMDB) = 32
 Federated Database System Support           (FEDERATED) = NO
 Transaction processor monitor name        (TP_MON_NAME) =

 Default charge-back account           (DFT_ACCOUNT_STR) =

 Java Development Kit installation path       (JDK_PATH) = /home/db2inst1/sqllib/java/jdk64

 Diagnostic error capture level              (DIAGLEVEL) = 3
 Notify Level                              (NOTIFYLEVEL) = 3
 Diagnostic data directory path               (DIAGPATH) = /home/db2inst1/sqllib/db2dump/ $m
 Current member resolved DIAGPATH                        = /home/db2inst1/sqllib/db2dump/DIAG0000/
 Alternate diagnostic data directory path (ALT_DIAGPATH) =
 Current member resolved ALT_DIAGPATH                    =
 Size of rotating db2diag & notify logs (MB)  (DIAGSIZE) = 0

 Default database monitor switches
   Buffer pool                         (DFT_MON_BUFPOOL) = OFF
   Lock                                   (DFT_MON_LOCK) = OFF
   Sort                                   (DFT_MON_SORT) = OFF
   Statement                              (DFT_MON_STMT) = OFF
   Table                                 (DFT_MON_TABLE) = OFF
   Timestamp                         (DFT_MON_TIMESTAMP) = ON
   Unit of work                            (DFT_MON_UOW) = OFF
 Monitor health of instance and databases   (HEALTH_MON) = OFF

 SYSADM group name                        (SYSADM_GROUP) = DB2IADM1
 SYSCTRL group name                      (SYSCTRL_GROUP) =
 SYSMAINT group name                    (SYSMAINT_GROUP) =
 SYSMON group name                        (SYSMON_GROUP) =

 Client Userid-Password Plugin          (CLNT_PW_PLUGIN) =
 Client Kerberos Plugin                (CLNT_KRB_PLUGIN) =
 Group Plugin                             (GROUP_PLUGIN) =
 GSS Plugin for Local Authorization    (LOCAL_GSSPLUGIN) =
 Server Plugin Mode                    (SRV_PLUGIN_MODE) = UNFENCED
 Server List of GSS Plugins      (SRVCON_GSSPLUGIN_LIST) =
 Server Userid-Password Plugin        (SRVCON_PW_PLUGIN) =
 Server Connection Authentication          (SRVCON_AUTH) = NOT_SPECIFIED
 Cluster manager                                         =

 Database manager authentication        (AUTHENTICATION) = SERVER
 Alternate authentication           (ALTERNATE_AUTH_ENC) = NOT_SPECIFIED
 Cataloging allowed without authority   (CATALOG_NOAUTH) = NO
 Trust all clients                      (TRUST_ALLCLNTS) = YES
 Trusted client authentication          (TRUST_CLNTAUTH) = CLIENT
 Bypass federated authentication            (FED_NOAUTH) = NO

 Default database path                       (DFTDBPATH) = /home/db2inst1

 Database monitor heap size (4KB)          (MON_HEAP_SZ) = AUTOMATIC(90)
 Java Virtual Machine heap size (4KB)     (JAVA_HEAP_SZ) = 65536
 Audit buffer size (4KB)                  (AUDIT_BUF_SZ) = 0
 Global instance memory (% or 4KB)     (INSTANCE_MEMORY) = AUTOMATIC(131833)
 Member instance memory (% or 4KB)                       = GLOBAL
 Agent stack size                       (AGENT_STACK_SZ) = 1024
 Sort heap threshold (4KB)                  (SHEAPTHRES) = 0

 Directory cache support                     (DIR_CACHE) = YES

 Application support layer heap size (4KB)   (ASLHEAPSZ) = 15
 Max requester I/O block size (bytes)         (RQRIOBLK) = 65535
 Workload impact by throttled utilities(UTIL_IMPACT_LIM) = 10

 Priority of agents                           (AGENTPRI) = SYSTEM
 Agent pool size                        (NUM_POOLAGENTS) = AUTOMATIC(100)
 Initial number of agents in pool       (NUM_INITAGENTS) = 0
 Max number of coordinating agents     (MAX_COORDAGENTS) = AUTOMATIC(200)
 Max number of client connections      (MAX_CONNECTIONS) = AUTOMATIC(MAX_COORDAGENTS)

 Keep fenced process                        (KEEPFENCED) = YES
 Number of pooled fenced processes         (FENCED_POOL) = AUTOMATIC(MAX_COORDAGENTS)
 Initial number of fenced processes     (NUM_INITFENCED) = 0

 Index re-creation time and redo index build  (INDEXREC) = RESTART

 Transaction manager database name         (TM_DATABASE) = 1ST_CONN
 Transaction resync interval (sec)     (RESYNC_INTERVAL) = 180

 SPM name                                     (SPM_NAME) = db2
 SPM log size                          (SPM_LOG_FILE_SZ) = 256
 SPM resync agent limit                 (SPM_MAX_RESYNC) = 20
 SPM log path                             (SPM_LOG_PATH) =

 TCP/IP Service name                          (SVCENAME) = db2c_db2inst1
 Discovery mode                               (DISCOVER) = SEARCH
 Discover server instance                (DISCOVER_INST) = ENABLE

 SSL server keydb file                   (SSL_SVR_KEYDB) =
 SSL server stash file                   (SSL_SVR_STASH) =
 SSL server certificate label            (SSL_SVR_LABEL) =
 SSL service name                         (SSL_SVCENAME) =
 SSL cipher specs                      (SSL_CIPHERSPECS) =
 SSL versions                             (SSL_VERSIONS) =
 SSL client keydb file                  (SSL_CLNT_KEYDB) =
 SSL client stash file                  (SSL_CLNT_STASH) =

 Maximum query degree of parallelism   (MAX_QUERYDEGREE) = ANY
 Enable intra-partition parallelism     (INTRA_PARALLEL) = NO

 Maximum Asynchronous TQs per query    (FEDERATED_ASYNC) = 0

 Number of FCM buffers                 (FCM_NUM_BUFFERS) = AUTOMATIC(4096)
 FCM buffer size                       (FCM_BUFFER_SIZE) = 32768
 Number of FCM channels               (FCM_NUM_CHANNELS) = AUTOMATIC(2048)
 FCM parallelism                       (FCM_PARALLELISM) = AUTOMATIC(2)
 Node connection elapse time (sec)         (CONN_ELAPSE) = 10
 Max number of node connection retries (MAX_CONNRETRIES) = 5
 Max time difference between nodes (min) (MAX_TIME_DIFF) = 60

 db2start/db2stop timeout (min)        (START_STOP_TIME) = 10

 WLM dispatcher enabled                 (WLM_DISPATCHER) = NO
 WLM dispatcher concurrency            (WLM_DISP_CONCUR) = COMPUTED
 WLM dispatcher CPU shares enabled (WLM_DISP_CPU_SHARES) = NO
 WLM dispatcher min. utilization (%) (WLM_DISP_MIN_UTIL) = 5

 Communication buffer exit library list (COMM_EXIT_LIST) =
 Current effective arch level         (CUR_EFF_ARCH_LVL) = V:11 R:5 M:6 F:0 I:0 SB:0
 Current effective code level         (CUR_EFF_CODE_LVL) = V:11 R:5 M:6 F:0 I:0 SB:0

 Keystore type                           (KEYSTORE_TYPE) = NONE
 Keystore location                   (KEYSTORE_LOCATION) =

 Path to python runtime                    (PYTHON_PATH) =
 Path to R runtime                              (R_PATH) =



[3] Oracle Clientのレスポンスファイル
[oracle@db2 oraInventory]$ cat client.rsp
###############################################################################
## Copyright(c) Oracle Corporation 1998,2019. All rights reserved.           ##
##                                                                           ##
## Specify values for the variables listed below to customize                ##
## your installation.                                                        ##
##                                                                           ##
## Each variable is associated with a comment. The comment                   ##
## can help to populate the variables with the appropriate                   ##
## values.                                                                   ##
##                                                                           ##
###############################################################################


#-------------------------------------------------------------------------------
# Do not change the following system generated value.
#-------------------------------------------------------------------------------
oracle.install.responseFileVersion=/oracle/install/rspfmt_clientinstall_response_schema_v19.0.0

#-------------------------------------------------------------------------------
# Unix group to be set for the inventory directory.
#-------------------------------------------------------------------------------
UNIX_GROUP_NAME=oinstall
#-------------------------------------------------------------------------------
# Inventory location.
#-------------------------------------------------------------------------------
INVENTORY_LOCATION=/u01/app/oraInventory
#-------------------------------------------------------------------------------
# Complete path of the Oracle Home
#-------------------------------------------------------------------------------
ORACLE_HOME=/u01/app/oracle/product/19.0.0/client_1
#-------------------------------------------------------------------------------
# Complete path of the Oracle Base.
#-------------------------------------------------------------------------------
ORACLE_BASE=/u01/app/oracle
#------------------------------------------------------------------------------
#Name       : INSTALL_TYPE
#Datatype   : String
#Description: Installation type of the component.
#
#             The following choices are available. The value should contain
#             only one of these choices.
#               - Administrator
#               - Runtime
#               - InstantClient
#               - Custom
#
#Example    : INSTALL_TYPE = Administrator
#------------------------------------------------------------------------------
oracle.install.client.installType=Administrator

#-------------------------------------------------------------------------------
# Name       : oracle.install.client.customComponents
# Datatype   : StringList
#
# This property is considered only if INSTALL_TYPE is set to "Custom"
#
# Description: List of Client Components you would like to install
#
#   The following choices are available. You may specify any
#   combination of these choices.  The components you choose should
#   be specified in the form "internal-component-name:version"
#   Below is a list of components you may specify to install.
#
# oracle.sqlj:19.0.0.0.0 -- "Oracle SQLJ"
# oracle.rdbms.util:19.0.0.0.0 -- "Oracle Database Utilities"
# oracle.javavm.client:19.0.0.0.0 -- "Oracle Java Client"
# oracle.sqlplus:19.0.0.0.0 -- "SQL*Plus"
# oracle.dbjava.jdbc:19.0.0.0.0 -- "Oracle JDBC/THIN Interfaces"
# oracle.ldap.client:19.0.0.0.0 -- "Oracle Internet Directory Client"
# oracle.rdbms.oci:19.0.0.0.0 -- "Oracle Call Interface (OCI)"
# oracle.precomp:19.0.0.0.0 -- "Oracle Programmer"
# oracle.xdk:19.0.0.0.0 -- "Oracle XML Development Kit"
# oracle.network.aso:19.0.0.0.0 -- "Oracle Advanced Security"
# oracle.oraolap.mgmt:19.0.0.0.0 -- "OLAP Analytic Workspace Manager and Worksheet"
# oracle.network.client:19.0.0.0.0 -- "Oracle Net"
# oracle.network.cman:19.0.0.0.0 -- "Oracle Connection Manager"
# oracle.network.listener:19.0.0.0.0 -- "Oracle Net Listener"
# oracle.ordim.client:19.0.0.0.0 -- "Oracle Multimedia Client Option"
# oracle.odbc:19.0.0.0.0 -- "Oracle ODBC Driver"
# oracle.has.client:19.0.0.0.0 -- "Oracle Clusterware High Availability API"
# oracle.dbdev:19.0.0.0.0 -- "Oracle SQL Developer"
# oracle.rdbms.scheduler:19.0.0.0.0 -- "Oracle Scheduler Agent"
#
# Example    : oracle.install.client.customComponents="oracle.precomp:19.0.0.0.0","oracle.oraolap.mgmt:19.0.0.0.0","oracle.rdbms.scheduler:19.0.0.0.0"
#-------------------------------------------------------------------------------
oracle.install.client.customComponents=

#-------------------------------------------------------------------------------
# Host name to be used for by the Oracle Scheduler Agent.
# This needs to be entered in case oracle.rdbms.scheduler is selected in the
# list of custom components during custom install
#
# Example    : oracle.install.client.schedulerAgentHostName = acme.domain.com
#------------------------------------------------------------------------------
oracle.install.client.schedulerAgentHostName=

#------------------------------------------------------------------------------
# Port number to be used for by the Oracle Scheduler Agent.
# This needs to be entered in case oracle.rdbms.scheduler is selected in the
# list of custom components during custom install
#
# Example: oracle.install.client.schedulerAgentPortNumber = 1500
#------------------------------------------------------------------------------
oracle.install.client.schedulerAgentPortNumber=