おらくるのいる生活

OracleのDBAとしての、障害対応やらパフォーマンス・チューニングやらの日々を綴っています

Oracle Instant Client について

以前の記事でOracle Instant Clientについてちょっと触れましたが、結果としてOracle Instant Clientを導入する事になったので、もう少し詳しく紹介しておきます。 

bismarc256.hateblo.jp

 

環境は以下の通りです。

Oracle Database 19c
RHEL 6.5

まず簡単にOracle Instant Clientとは何か、ですが

 軽量で簡単にインストールできる、無料のOracle Databaseツール、ライブラリ、SDK

特長は以下の通りです。

  • ダウンロード、デプロイ、配布が無料
  • フットプリントが小さい
  • ワンステップで迅速なインストールが可能なZIPで入手可能
  • Linux向けにRPMパッケージも提供
  • 完全版のOracle DatabaseまたはOracle Clientと同じライブラリ SQL*PlusやData Pumpなどのツールが含まれる
  • 広く使用されテストされている

例えばOracle TuxedoのようにOracleClientのライブラリだけがあれば動くアプリであれば、インスタント・クライアントで十分という事になります。

インストールもunzipするだけなので、通常のOracleClientよりも簡単です。

 

Oracle Instant Clientには以下のパッケージがあります。

 ・Basic

Oracle DatabaseでOCI、OCCI、JDBC-OCIアプリケーションを実行するのに必要なすべてのファイル

・Basic Light Basic Light

Basicパッケージの簡易バージョン。英語のエラー・メッセージとUnicode、ASCII、西欧キャラクタ・セットのみをサポート

SDK

OCIおよびOCCIアプリケーションを開発するための追加のヘッダー・ファイルとmakefileサンプル  

SQL*Plus

SQLPL/SQLの文およびスクリプトを実行するためのSQL*Plusコマンドライン・ツールを備える追加のパッケージ

・ツール

Data Pump、SQL*Loader、Workload Replay Clientなどの追加のツール Data PumpとSQL*Loader

ODBC

ODBCを備える追加ライブラリ ODBC

コンパイラ

Pro*CおよびPro*COBOLプリコンパイラを備える追加ツールとライブラリ

JDBC-OCI Supplement

国際化に対応するための追加ライブラリ

 

Oracle Tuxedoであれば必須パッケージはBasicだけだそうです。開発にPro*Cなどを使うのであればコンパイラ・パッケージも必要になります。

今回の環境ではOracle TuxedoとPro*Cを使用するので、Basicパッケージとコンパイラ・パッケージ、それに接続確認用にSQL*Plusパッケージも導入する事にしました。

尚、Oracle Instant Clientのインストール要件はOracle Clientと同じです。

DBサーバはRHEL7.8なのですが、AP側の要件でTuxedoサーバはRHEL6.5になります。

Oracle Client 19cのインストールにはRHEL7.5以降である必要がある為、今回は18cのInstant Clientを導入する事になりました。

 

実際にやってみます。

$ mkdir /u01/app/oracle/product/18.0.0

$ unzip instantclient-basic-linux-18.3.0.0.0dbru.zip -d /u01/app/oracle/product/18.0.0/

$ unzip instantclient-sqlplus-linux-18.3.0.0.0dbru.zip -d /u01/app/oracle/product/18.0.0/

$ unzip instantclient-precomp-linux-18.3.0.0.0dbru.zip -d /u01/app/oracle/product/18.0.0/

ディレクトリを作ってunzipするだけの簡単さです。

配置されたものを確認します。

$ ls -l /u01/app/oracle/product/18.0.0/instantclient_18_3
total 208912
-rw-r--r--. 1 oracle oinstall 1313 Jul 1 2018 BASIC_README
-rw-r--r--. 1 oracle oinstall 3592 Jul 1 2018 PRECOMP_README
-rw-r--r--. 1 oracle oinstall 1319 Jul 1 2018 SQLPLUS_README
-rwxr-xr-x. 1 oracle oinstall 31934 Jul 1 2018 adrci
-rwxr-xr-x. 1 oracle oinstall 10216 Jul 1 2018 cobsqlintf.o
-rwxr-xr-x. 1 oracle oinstall 45209 Jul 1 2018 genezi
-rw-r--r--. 1 oracle oinstall 342 Jul 1 2018 glogin.sql
lrwxrwxrwx. 1 oracle oinstall 17 Sep 25 11:51 libclntsh.so -> libclntsh.so.18.1
-rwxrwxr-x. 1 oracle oinstall 63828690 Jul 1 2018 libclntsh.so.18.1
-rwxrwxr-x. 1 oracle oinstall 6788398 Jul 1 2018 libclntshcore.so.18.1
-r-xr-xr-x. 1 oracle oinstall 5724833 Jul 1 2018 libnnz18.so
lrwxrwxrwx. 1 oracle oinstall 15 Sep 25 11:51 libocci.so -> libocci.so.18.1
-rwxrwxr-x. 1 oracle oinstall 1011968 Jul 1 2018 libocci.so.18.1
-rwxr-xr-x. 1 oracle oinstall 126937958 Jul 1 2018 libociei.so
-r-xr-xr-x. 1 oracle oinstall 174930 Jul 1 2018 libocijdbc18.so
-r-xr-xr-x. 1 oracle oinstall 313251 Jul 1 2018 libons.so
-rwxrwxr-x. 1 oracle oinstall 84303 Jul 1 2018 liboramysql18.so
-rwxr-xr-x. 1 oracle oinstall 1420057 Jul 1 2018 libsqlplus.so
-rwxr-xr-x. 1 oracle oinstall 1652783 Jul 1 2018 libsqlplusic.so
drwxr-xr-x. 3 oracle oinstall 19 Jul 1 2018 network
-r--r--r--. 1 oracle oinstall 4161744 Jul 1 2018 ojdbc8.jar
drwxr-xr-x. 3 oracle oinstall 19 Jul 1 2018 precomp
drwxr-xr-x. 4 oracle oinstall 73 Jul 1 2018 sdk
-rwxr-xr-x. 1 oracle oinstall 16658 Jul 1 2018 sqlplus
-r--r--r--. 1 oracle oinstall 1398331 Jul 1 2018 ucp.jar
-rwxr-xr-x. 1 oracle oinstall 191012 Jul 1 2018 uidrvci
-rw-r--r--. 1 oracle oinstall 74263 Jul 1 2018 xstreams.jar

instantclient_18_3というディレクトリが自動で作成され、その直下にライブラリやバイナリが配置されていますね。

BASIC_READMEなど、パッケージごとにreadmeファイルが作成され、中身を見ると以下の様にバージョンと32ビット版である事が確認できます。

Client Shared Library 32-bit - 18.3.0.0.0

System name: Linux
Release: 2.6.39-400.298.2.el6uek.i686
Version: #1 SMP Mon Jan 22 13:13:34 PST 2018
Machine: i686

networkディレクトリの下にはadminディレクトリがあり、ここにtnsnames.oraを配置します。別の場所に置きたければ環境変数のTNS_ADMINを設定しますが、これは普通のClientやDBと同じですね。

バイナリは$ORACLE_HOME/binの下ではなく、$ORACLE_HOME直下にあるのでそこにパスを通します。

$ export ORACLE_HOME=/u01/app/oracle/product/18.0.0/instantclient_18_3

$ export PATH=$ORACLE_HOME/bin:$PATH

早速、接続した所・・・

$ sqlplus /nolog
sqlplus: error while loading shared libraries: libsqlplus.so: cannot open shared object file: No such file or directory

共有ライブラリが無いよと怒られてしまいました。

通常、ライブラリは$ORACLE_HOME/libの下にありますが、Instant Client ではバイナリ同様、ライブラリも$ORACLE_HOME直下にあります。

ので、ライブラリパスを指定します。

$ export LD_LIBRARY_PATH=$ORACLE_HOME

$ sqlplus /nolog

SQL*Plus: Release 18.0.0.0.0 - Production on Fri Sep 25 12:00:23 2020
Version 18.3.0.0.0

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


SQL> conn system/password@test01
Connected.
SQL> select instance_name from from v$instance;

INSTANCE_NAME
----------------
test01

 これで無事sqlplusが起動し、別サーバにある19cのDBに接続できました。