【Linux】【Ubuntu18.04】OracleDB(10g)への接続

仕事で、というか仕事でしか触らないであろうOracleDBへ、Linuxからのアクセス方法をメモ。


【参考】https://ponsuke-tarou.hatenablog.com/entry/2020/03/09/232129

1.Oracle Instant Clientのダウンロード

まずクライアントをダウンロードする。
ダウンロードサイトは以下。
https://www.oracle.com/jp/database/technologies/instant-client/linux-x86-64-downloads.html

2021年9月時点での最新版をwgetで取得。
Basic Light Package (OL8 RPM)とSQL*Plus Package (OL8 RPM)の二つが必要。
rpmファイルはUbuntuで利用できないけど、後ほどdebファイルに変換する。

$ wget https://download.oracle.com/otn_software/linux/instantclient/213000/oracle-instantclient-basiclite-21.3.0.0.0-1.el8.x86_64.rpm --no-check-certificate
$ wget https://download.oracle.com/otn_software/linux/instantclient/213000/oracle-instantclient-sqlplus-21.3.0.0.0-1.el8.x86_64.rpm --no-check-certificate

※本来はユーザ登録してダウンロードが必要。--no-check-certificateで証明書を無視して強制ダウンロード
 

2.rpmファイル→debファイルに変換する

alienというソフトでdebファイルへの変換を行う。

$ sudo apt install alien


$ sudo alien oracle-instantclient-basiclite-21.3.0.0.0-1.el8.x86_64.rpm oracle-instantclient-sqlplus-21.3.0.0.0-1.el8.x86_64.rpm

debファイルが作成出来たらそれぞれdpkgで直接指定してインストールを行う。

$ sudo dpkg -i oracle-instantclient-basiclite_21.3.0.0.0-2_amd64.deb
$ sudo dpkg -i oracle-instantclient-sqlplus_21.3.0.0.0-2_amd64.deb

※証明書関連?でwarningが出るが気にしない

sqlplusがインストールできたかを確認する。

$ which sqlplus64
/usr/bin/sqlplus64

3.環境変数の設定

環境変数の変更を行う。

$ vi .bash_profile
↓以下追記

# SQL*Plusのインストール場所を指定する環境変数
export ORACLE_HOME=/usr/lib/oracle/21/client64
# UNIXおよびLinux上のライブラリの検索に使用するパスを指定する環境変数
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
# グローバリゼーション機能を指定する環境変数
export NLS_LANG=Japanese_Japan.UTF8

$ source .bash_profile

で読み込みを行う。(再ログイン以降は自動で追加した環境変数が適用される)

環境変数が適用されているかを確認する。

$ printenv | grep -i oracle
LD_LIBRARY_PATH=/usr/lib/oracle/21/client64/lib:
ORACLE_HOME=/usr/lib/oracle/21/client64
OLDPWD=/usr/lib/oracle/21
PATH=/usr/lib/oracle/21/client64/bin:/home/user/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

4.コマンド実行確認

sqlplus64が実行できるかを確認。

$ sqlplus64 -V
sqlplus64: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

上記エラーが出る場合は、以下のコマンドを実行コマンド

$ sudo apt install libaio1

$ sqlplus64 -V
SQL*Plus: Release 21.0.0.0.0 - Production
Version 21.3.0.0.0

 

5.OracleDBへの接続設定

どうやらtnsnames.oraというファイルに書いておくとその設定を利用する?らしい。
tnsnames.oraの作成を行う。
設定内容は以下の通りだが、network/admin配下に置くようにマニュアルでも書いてあるようだが、ディレクトリがないので作る

$ cd $ORACLE_HOME/
$ pwd
/usr/lib/oracle/21/client64
$ sudo mkdir network
$ cd network
$ sudo mkdir admin
$ cd admin

$ sudo vi tnsnames.ora
XXX =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = xxx.xxx.xxx.xxx)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = YYY)
    )
  )

XXXはネットワークサービス名、YYYのSIDは古い記述らしく、SERVICE_NAMEが推奨らしい。
まぁ基本的には管理者などから提供される情報なので、それを利用することになるはず。
HOSTは接続先のIPアドレスを指定する。ホスト名でもいい。
ポートがデフォルトと異なる場合はそれを指定する。

6.OracleDBにログイン

ユーザ名がUSER、パスワードが1234だった場合は、以下のように入力してログインできる。
ユーザ名のところは@に続けてネットワークサービス名を指定する。
 

$ sqlplus64
ユーザー名を入力してください: USER@XXX
パスワードを入力してください:1234

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL>

以上。