【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ファイルに変換する
$ 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
パスワードを入力してください:1234Connected 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>
以上。