【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接続できるようにする手順を紹介します
本記事では、下記の内容を解説します。
- Linuxサーバ用のOracle Instant Client をダウンロードしてインストールする手順
- Oracle Instant Clientインストール後に必要な設定
- CentOS8サーバからSQL*PlusでOracleデータベースへ接続
- オラクルデータベースのおススメの勉強法の紹介
この記事を書いている私は、某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ファイルをダウンロードしておきます。
https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html
ダウンロードするのは以下3ファイル
- oracle-instantclient19.6-basic-19.6.0.0.0-1.x86_64.rpm
- oracle-instantclient19.6-sqlplus-19.6.0.0.0-1.x86_64.rpm
- oracle-instantclient19.6-devel-19.6.0.0.0-1.x86_64.rpm
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 時間前の 2020年03月21日 14時09分35秒 に実施しました。 依存関係が解決しました。 ======================================================================================================================== パッケージ アーキテクチャー バージョン リポジトリー サイズ ======================================================================================================================== インストール: 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 時間前の 2020年03月21日 14時09分35秒 に実施しました。 依存関係が解決しました。 ======================================================================================================================== パッケージ アーキテクチャー バージョン リポジトリー サイズ ======================================================================================================================== インストール: 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 時間前の 2020年03月21日 14時09分35秒 に実施しました。 依存関係が解決しました。 ======================================================================================================================== パッケージ アーキテクチャー バージョン リポジトリー サイズ ======================================================================================================================== インストール: 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 が見つからない」とのことなので、追加でインストールします
参考リンク
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 土 3月 21 14:47:26 2020 Version 19.6.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. 最終正常ログイン時間: 土 3月 21 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接続ができるようにするまでの手順を紹介しました
- Linuxサーバ用のOracle Instant Client のRPMファイルをダウンロードしてインストール
- 共有ライブラリの追加
/etc/ld.so.conf.d/oracle-instantclient.conf
- libnsl のインストール
- tnsnames.oraファイルの作成
/usr/lib/oracle/19.6/client64/lib/network/admin/tnsnames.ora
- 環境変数 NLS_LANG の設定
- 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」です。
オラクル関連のいろいろなコースが用意されています。