My開発メモ

Sqlplusのインストール(Ubuntu)

Oracleデータベース11g をDocker上で動かしている。

その Oracle Database 11g に Dockerの外から(ホストマシンから)アクセスするのに Sqlplusが必要になる。

Sqlplusのインストール

以下のサイトから2つの zipファイルをダウンロードする。

Instant Client Downloads for Linux x86-64 (64-bit)

  1. Basic Package(ZIP) instantclient-basic-linux.x64-21.1.0.0.0.zip
  2. SQL*Plus Package(ZIP) instantclient-sqlplus-linux.x64-21.1.0.0.0.zip

1)をダウンロードして、適当なディレクトリで展開する。instantclient_21_1ディレクトリができる。

2)をダウンロードして、適当なディレクトリで展開する。instantclient_21_1ディレクトリ、つまり、 同じ名前のディレクトリが作成されるので、instantclient_21_1(2) となるはずである。

2)でできたファイルを 1)のディレクトリの中に置く。その中に sqlplus も含まれる。

今回は、ホームディレクトリに oracleというディレクトリを作成し、 そこに instantclient_21_1 ディレクトリを置いた。

パスの設定

以下のように設定した。

~/.bashrc

# for Sqlplus
export SQLPATH=$HOME/oracle/instantclient_21_1/
export PATH=$PATH:$SQLPATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/oracle/instantclient_21_1

3つめのライブラリパスの設定は、sqlplusは起動時にライブラリ(libsqlplus.so)を 見つけにいくためである。

文字コードの設定 (2021.10.24追記)

~/.bashrc に以下の記述も加える。

export NLS_LANG=Japanese_Japan.AL32UTF8

このことにより、sqlplusが動作している端末が UTF-8 であることを Oracle11g に 伝えることになる。その結果、

  1. Oracleデータベースからのメッセージが日本語になる。
  2. sqlplusの動作している端末から送られる文字は UTF-8 であることを Oracleデータベースに伝えることになる。そのことで、保存する文字が文字化けしなくなる。

接続設定 (2021.10.24追記)

sqlplusで Oracleデータベースに接続するためには、接続設定が一致していなければならない。

クライアント側の設定(sqlplus) を以下のように設定した。

$HOME/bin/oracle/instantclient_21_3/network/admin/tnsnames.ora

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

これは、サーバー側の設定と同じである。

$ docker exec -it oracle11 /bin/bash
bash-4.2# cd /u01/app/oracle/oradata/dbconfig/XE

/u01/app/oracle/oradata/dbconfig/XE/tnsnames.ora

# tnsnames.ora Network Configuration File:

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
     (ADDRESS_LIST =
       (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
     )
     (CONNECT_DATA =
       (SID = PLSExtProc)
       (PRESENTATION = RO)
     )
  )

起動

$ sqlplus system@localhost:1521

SQL*Plus: Release 21.0.0.0.0 - Production on Sun Jan 24 05:58:57 2021
Version 21.1.0.0.0

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

Enter password: [パスワード文字列] 

Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

SQL> 

[パスワード文字列]は、docker-compose up で起動したときに、画面に現れる。

カテゴリー: memo, OracleDB

タグ: install, oracle, sqlplus

カウント: 204