システムを構築する際、データベースサーバー本体を立てるだけでなく、「別のアプリケーションサーバーからDBに接続する」という構成はバックエンド開発において日常茶飯事です。
現在取り組んでいるモダナイズ(近代化)の学習でも、新旧サーバー間での接続確認が欠かせません。今回は、CentOS 9環境にOracle Instant Clientを導入し、リモートのOracle 11gへ接続するための実験記録をまとめます。
1. 接続環境の準備:Instant Clientのダウンロード
まずは接続元となるCentOS 9に、軽量なクライアントパッケージである「Instant Client」を導入します。
接続先のバージョンに合わせ、以下の2つのRPMファイルを公式サイトから入手しました。
Basicパッケージ: 接続に最低限必要なライブラリ群
SQL*Plusパッケージ: コマンドラインからSQLを実行するためのツール
2. 依存ライブラリのインストール
CentOS 9(Stream 9など)の標準状態では、Oracleクライアントが動作するために必要な古いライブラリが不足していることがあります。これがないと実行時にエラーが出るため、あらかじめ導入しておきます。
sudo dnf install -y libaio libnsl
3. クライアントのインストール
ダウンロードしたRPMファイルを、sudoを使ってインストールします。
sudo rpm -ivh ./oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
sudo rpm -ivh ./oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm
インストール先を確認すると、以下のディレクトリに配置されていました。
/usr/lib/oracle/11.2/client64
4. 環境変数の設定(ここが重要!)
インストールしただけでは sqlplus コマンドは使えません。OSにライブラリの位置を教えるための設定が必要です。
私は .bash_profile (または .bashrc)に以下の設定を追加しました。
# ライブラリへのパス
export LD_LIBRARY_PATH="/usr/lib/oracle/11.2/client64/lib"
# 日本語環境の設定(文字化け防止)
export NLS_LANG=JAPANESE_JAPAN.UTF8
# コマンド実行パスの追加
export PATH=$PATH:/usr/lib/oracle/11.2/client64/bin
設定を反映(source ~/.bash_profile)させ、sqlplus と打って起動画面が出れば、クライアント自体の準備はOKです。
5. 接続テスト:tnsnames.oraの作成
次に、どのサーバーに接続するかという「宛先リスト」を作成します。
ホームディレクトリ($HOME)直下に、tnsnames.ora というファイルを作成し、接続先の情報を記述しました。
MY_DB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DBサーバーのIP)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = サービス名)
)
)
さらに、このファイルの場所を教えるために TNS_ADMIN 環境変数を設定します。
export TNS_ADMIN=$HOME
いざ、リモート接続!
最後に、以下のコマンドで接続を確認します。
sqlplus ユーザー名/パスワード@MY_DB
無事に接続できた瞬間は、サーバー間の「道」がつながった実感があり、バックエンド構築の醍醐味を感じました。
6. 実験を終えて
今回の実験を通じて、以下の気づきがありました。
依存関係の罠:
libaioなどの不足は、初心者だと原因特定に時間がかかるポイントだと感じました。クライアントの役割: アプリケーションサーバーを構築する見習いエンジニアにとって、このクライアント設定は「最初の一歩」として非常に重要です。
モダナイズ案件では、新しいDBに切り替える際、こうしたクライアント側の設定変更もセットで発生します。今回の手順を自分の基本スキルとして定着させていきたいです。
0 件のコメント:
コメントを投稿