そういうのがいいブログ

SIerで働く30代サラリーマンSEがインフラエンジニアに憧れてLinux・クラウド・AWSの勉強をするブログ

【CentOS8】Oracle19cにSQL*Plus接続・InstantClientインストール

※[PR]当ブログの記事の中にはプロモーションが含まれています。

【CentOS8】Oracle19cにSQL*Plus接続するためにInstantClient(19.6.0.0.0)をインストールする手順

CentOS8サーバから、Oracleデータベースへ、SQL*Plus接続するための設定方法を探している方へ。

CentOS8サーバから、Oracleデータベースへ、SQL*Plus接続できるようにする方法を知りたい

CentOS8サーバから、別のサーバ上にあるOracleデータベースへ、SQL*Plusで接続するための方法を知りたい、と考えていませんか?

CentOS8サーバから、別のサーバ上にあるOracleデータベースへSQL*Plus接続できるようにする手順を紹介します

本記事では、下記の内容を解説します。

  1. Linuxサーバ用のOracle Instant Client をダウンロードしてインストールする手順
  2. Oracle Instant Clientインストール後に必要な設定
  3. CentOS8サーバからSQL*PlusでOracleデータベースへ接続
  4. ラクルデータベースのおススメの勉強法の紹介

この記事を書いている私は、某SIerに勤務しながら、
WEB系エンジニア・インフラエンジニアに憧れて、プログラミングおよびインフラ技術の勉強をしています。
私が実機で試したコマンドや画像を載せて書いています。
記事の信頼性担保に繋がると思います。

前提条件(本記事の場合の環境)

本記事で設定したサーバ構成は以下です。

項目 Oracleデータベースサーバ アプリケーションサーバ(接続元)
OS Oralce Linux 7.7 CentOS 8.0
サーバ名 SV-PLUTO SV-NEPTUNE
DB Oracle 19c -
PDB FINDTPDB -

DBサーバと、APサーバの2台構成にしているシステムを想定しています。

Linuxサーバ用のOracle Instant Client をダウンロードしてインストールする手順

CentOSに「Oracle Instant Client」をインストールすることで、SQL*Plusが使えるようになります。
Oracle Instant Client」はオラクル社が無料で提供しているライブラリ及び開発ツールのことです。

Oracle Instant Client のRPMファイルをダウンロード

下記のページから、RPMファイルをダウンロードしておきます。

www.oracle.com

https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html

ダウンロードするのは以下3ファイル

RPMファイルをCentOS8サーバ上にアップロード

今回は、/tmp/INST_WKというディレクトリを作成して、そこにRMPファイルをアップロードしました。

[root@sv-neptune INST_WK]# cd /tmp/INST_WK
[root@sv-neptune INST_WK]# ls -l
合計 54104
-rw-r--r-- 1 root root 54082016  3月 21 14:03 oracle-instantclient19.6-basic-19.6.0.0.0-1.x86_64.rpm
-rw-r--r-- 1 root root   612276  3月 21 14:03 oracle-instantclient19.6-devel-19.6.0.0.0-1.x86_64.rpm
-rw-r--r-- 1 root root   702528  3月 21 14:04 oracle-instantclient19.6-sqlplus-19.6.0.0.0-1.x86_64.rpm

インストール実行

yum localinstall oracle-instantclient19.6-basic-19.6.0.0.0-1.x86_64.rpm
[root@sv-neptune INST_WK]# yum localinstall oracle-instantclient19.6-basic-19.6.0.0.0-1.x86_64.rpm
メタデータの期限切れの最終確認: 0:03:17 時間前の 20200321140935秒 に実施しました。
依存関係が解決しました。
========================================================================================================================
 パッケージ                                 アーキテクチャー   バージョン                リポジトリー             サイズ
========================================================================================================================
インストール:
 oracle-instantclient19.6-basic             x86_64             19.6.0.0.0-1              @commandline              52 M

トランザクションの概要
========================================================================================================================
インストール  1 パッケージ

合計サイズ: 52 M
インストール済みのサイズ: 226 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                                                                1/1
  インストール中   : oracle-instantclient19.6-basic-19.6.0.0.0-1.x86_64                                             1/1
  scriptletの実行中: oracle-instantclient19.6-basic-19.6.0.0.0-1.x86_64                                             1/1
  検証             : oracle-instantclient19.6-basic-19.6.0.0.0-1.x86_64                                             1/1

インストール済み:
  oracle-instantclient19.6-basic-19.6.0.0.0-1.x86_64

完了しました!
yum localinstall oracle-instantclient19.6-devel-19.6.0.0.0-1.x86_64.rpm
[root@sv-neptune INST_WK]# yum localinstall oracle-instantclient19.6-devel-19.6.0.0.0-1.x86_64.rpm
メタデータの期限切れの最終確認: 0:03:55 時間前の 20200321140935秒 に実施しました。
依存関係が解決しました。
========================================================================================================================
 パッケージ                                 アーキテクチャー   バージョン                リポジトリー             サイズ
========================================================================================================================
インストール:
 oracle-instantclient19.6-devel             x86_64             19.6.0.0.0-1              @commandline             598 k

トランザクションの概要
========================================================================================================================
インストール  1 パッケージ

合計サイズ: 598 k
インストール済みのサイズ: 2.0 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                                                                1/1
  インストール中   : oracle-instantclient19.6-devel-19.6.0.0.0-1.x86_64                                             1/1
  scriptletの実行中: oracle-instantclient19.6-devel-19.6.0.0.0-1.x86_64                                             1/1
  検証             : oracle-instantclient19.6-devel-19.6.0.0.0-1.x86_64                                             1/1

インストール済み:
  oracle-instantclient19.6-devel-19.6.0.0.0-1.x86_64

完了しました!
yum localinstall oracle-instantclient19.6-sqlplus-19.6.0.0.0-1.x86_64.rpm
[root@sv-neptune INST_WK]# yum localinstall oracle-instantclient19.6-sqlplus-19.6.0.0.0-1.x86_64.rpm
メタデータの期限切れの最終確認: 0:04:13 時間前の 20200321140935秒 に実施しました。
依存関係が解決しました。
========================================================================================================================
 パッケージ                                  アーキテクチャー  バージョン                 リポジトリー            サイズ
========================================================================================================================
インストール:
 oracle-instantclient19.6-sqlplus            x86_64            19.6.0.0.0-1               @commandline            686 k

トランザクションの概要
========================================================================================================================
インストール  1 パッケージ

合計サイズ: 686 k
インストール済みのサイズ: 3.1 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                                                                1/1
  インストール中   : oracle-instantclient19.6-sqlplus-19.6.0.0.0-1.x86_64                                           1/1
  scriptletの実行中: oracle-instantclient19.6-sqlplus-19.6.0.0.0-1.x86_64                                           1/1
  検証             : oracle-instantclient19.6-sqlplus-19.6.0.0.0-1.x86_64                                           1/1

インストール済み:
  oracle-instantclient19.6-sqlplus-19.6.0.0.0-1.x86_64

完了しました!

Oracle Instant Clientインストール後に必要な設定

Oracle Instant Clientインストール後に、以下の設定作業が必要です。

  • 共有ライブラリの追加
  • libnsl のインストール
  • tnsnames.oraファイルの作成
  • 環境変数 NLS_LANG の設定

共有ライブラリの追加

SQL*Plusを使えるようにするには、
環境変数 LD_LIBRARY_PATH/usr/lib/oracle/19.6/client64/lib を追加する必要がありますが、
OS再起動すると消えてしまうので、永続的に反映させるために、以下を行います。

/etc/ld.so.conf.d/oracle-instantclient.conf

に以下のように記述されていることを確認します。

/usr/lib/oracle/19.6/client64/lib

その後、下記コマンドを実行

ldconfig
参考リンク

共有ライブラリの追加:祈れ、そして働け ~ Ora et labora

libnsl のインストール

エラー「libnsl.so.1: cannot open shared object file: No such file or directory」が出てしまいます

SQL*Plusを実行しようとすると、以下のエラーが出てしまいます。

[root@sv-neptune ~]# sqlplus
sqlplus: error while loading shared libraries: libnsl.so.1: cannot open shared object file: No such file or directory

「libnsl.so.1 が見つからない」とのことなので、追加でインストールします

参考リンク

qiita.com

dnf install libnsl
[root@sv-neptune ~]# dnf install libnsl
CentOS-8 - AppStream                                                                     13 kB/s | 4.3 kB     00:00
CentOS-8 - Base                                                                          12 kB/s | 3.8 kB     00:00
CentOS-8 - Extras                                                                       4.9 kB/s | 1.5 kB     00:00
依存関係が解決しました。
========================================================================================================================
 パッケージ                アーキテクチャー          バージョン                         リポジトリー              サイズ
========================================================================================================================
インストール:
 libnsl                    x86_64                    2.28-72.el8_1.1                    BaseOS                     94 k

トランザクションの概要
========================================================================================================================
インストール  1 パッケージ

ダウンロードサイズの合計: 94 k
インストール済みのサイズ: 240 k
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
libnsl-2.28-72.el8_1.1.x86_64.rpm                                                       662 kB/s |  94 kB     00:00
------------------------------------------------------------------------------------------------------------------------
合計                                                                                    219 kB/s |  94 kB     00:00
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                                                                1/1
  インストール中   : libnsl-2.28-72.el8_1.1.x86_64                                                                  1/1
  scriptletの実行中: libnsl-2.28-72.el8_1.1.x86_64                                                                  1/1
  検証             : libnsl-2.28-72.el8_1.1.x86_64                                                                  1/1

インストール済み:
  libnsl-2.28-72.el8_1.1.x86_64

完了しました!

tnsnames.oraファイルの作成

データベースサーバ側の設定に合わせたtnsnames.oraファイルを作り、
所定のディレクトリに配置しておきます。

vi /usr/lib/oracle/19.6/client64/lib/network/admin/tnsnames.ora
[root@sv-neptune admin]# vi tnsnames.ora
[root@sv-neptune admin]# cat /usr/lib/oracle/19.6/client64/lib/network/admin/tnsnames.ora
# tnsnames.ora Oracle Instant Client: /usr/lib/oracle/19.6/client64/lib/network/admin/tnsnames.ora

FINDTPDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = SV-PLUTO)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = FINDTPDB)
    )
  )

環境変数 NLS_LANG の設定

ここまでの状態で、SQL*Plusで接続できるようになりますが、
そのままでは文字化けしてしまうので、環境変数NLS_LANG を設定します。

vi ~/.bash_profile

export NLS_LANG=Japanese_Japan.AL32UTF8
# .bash_profile

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

fi

# User specific environment and startup programs
export NLS_LANG=Japanese_Japan.AL32UTF8

CentOS8サーバからSQL*PlusでOracleデータベースへ接続

以上で、SQL*PlusでOracleデータベースに接続できるようになります。

sqlplus ユーザー名xxxxxxxxxx/パスワードxxxxxx@データベース名xxxxxx
[root@sv-neptune admin]# sqlplus ユーザー名xxxxxxxxxx/パスワードxxxxxx@データベース名xxxxxx

SQL*Plus: Release 19.0.0.0.0 - Production on 土 321 14:47:26 2020
Version 19.6.0.0.0

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

最終正常ログイン時間: 土 321 2020 14:45:49 +09:00


Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
に接続されました。
SQL>
SQL>
SQL> select * from dual;

D
-
X

SQL>

まとめ

CentOS8にOracleInstantClientをインストールして、SQL*Plus接続ができるようにするまでの手順を紹介しました

  1. Linuxサーバ用のOracle Instant Client のRPMファイルをダウンロードしてインストール
  2. 共有ライブラリの追加 /etc/ld.so.conf.d/oracle-instantclient.conf
  3. libnsl のインストール
  4. tnsnames.oraファイルの作成 /usr/lib/oracle/19.6/client64/lib/network/admin/tnsnames.ora
  5. 環境変数 NLS_LANG の設定
  6. CentOS8サーバからSQL*PlusでOracleデータベースへ接続

ラクルデータベースのおススメの勉強法の紹介

私は、某SIerに勤務しながら、入社以来10年以上、オラクルデータベースを使用したシステムに関わる仕事をしています。

ラクルデータベースについて、仕事場以外でも勉強をしたい、おススメの勉強法を知りたい、と考えている方のために、
①おすすめの書籍と、②おすすめのオンライン学習サイト、 を紹介します。

働きながら勉強するための、おススメの書籍とオンラインで学習できるサイトの紹介です

ラクルデータベースの勉強ができるおススメ書籍

朝の通勤時や帰宅時の電車の中や、社外打合せへの移動中などに勉強するなら、やはり書籍が一番だと思います。

Oracleの基本 ~データベース入門から設計/運用の初歩まで

技術エキスパートとして認定されたOracle ACEの渡部亮太さんの書かれた本です。

https://twitter.com/wrcsus4twitter.com

本書では、Oracle初心者/新人エンジニアが押さえておくべき知識とスキルを、現場で活躍するOracleエンジニアたちが、わかりやすく丁寧に解説。
Oracleの使い方はもちろん、データベースの基礎知識から、データ操作のためのSQL、テーブル設計、データベース運用/管理の基礎までしっかり押さえ、実務で使える入門スキルを身につけられます。
Oracleを学びたいすべての人に最適な入門書です。

Oracleの基本 ~データベース入門から設計/運用の初歩まで

プロとしてのOracleアーキテクチャ入門【第2版】

もう1冊、こちらもOracle ACEの渡部亮太さんの書かれた本です。

本書は、Oracle Databaseのアーキテクチャ(内部構成)について解説した入門書です。 本書の内容を理解することで「Oracleの動作の仕組み」を本質的に理解することができます。 これからOracleを使用する初心者の方から、実際にシステムの開発や運用管理を行っている DBエンジニアやシステムエンジニアの方を対象としています。

プロとしてのOracleアーキテクチャ入門【第2版】(12c、11g、10g 対応) 図解と実例解説で学ぶ、データベースの仕組み (Oracle現場主義)

ラクルデータベースの勉強ができるオンライン学習サイト

iStudy

ラクルのeラーニングサイトといえば、「iStudy」です。
ラクル関連のいろいろなコースが用意されています。

https://www.istudy.co.jp/products/training/list/it/database?a8=s7Jmh7cw.IM0943bcaLmnD3k0J16MwDZcaLVQ1eubuKw.IJDo4JwjbXtMI1QYQXMFuHbe5J2F7Jmgs00000020030001

f:id:souiunogaii:20200118213515j:plain

f:id:souiunogaii:20200118213502j:plain