【ubuntu20.04LTS】Djangoで外部OracleDBに接続

 既存システムのOracleDBからデータ読み込んで、帳票を作成したいということがありました。


状況整理

・既存システムはWindowsServer上で動作している

・ubuntu上のDjangoに追加機能として構築する必要がある

・一覧表示、検索機能が必須

・社内イントラネット内のみでの公開

・Oracleのバージョンは12.1

・既存システムDBへはSELECTでの参照のみ

・既存システムDBのER図なし

・既存システムはパッケージソフトをカスタマイズしたソフト

 ←カスタマイズ元にもう一回カスタマイズを依頼した方が良いのでは?

対応

①そもそもDjangoのバックエンドから、何のAPIも用意されていない外部OracelDBにアクセスすることなんてなかったので、できるか確認

②cx_Oracleで頑張る

③POST時やGET時の動作、URL遷移は頑張る

今回の内容

対応①のどうやってアクセスするかを書き残しておきます。

参考にしたサイトはこちらです。

write ahead log ロールフォワード用 WSLのUbuntuにsqlplus(Oracle client)を入れる

①クライアントをダウンロード

Oracleからクライアントをダウンロードします。

アカウントが必要ですので、ご注意ください。

②alienとlibaio1をインストール

sudo apt -y install alien
sudo apt -y install libaio1

③クライアントをインストール

sudo alien oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
sudo alien oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
sudo alien oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm

sudo dpkg -i oracle-instantclient12.1-basic_12.1.0.2.0-2_amd64.deb
sudo dpkg -i oracle-instantclient12.1-devel_12.1.0.2.0-2_amd64.deb
sudo dpkg -i oracle-instantclient12.1-sqlplus_12.1.0.2.0-2_amd64.deb

④プロファイルの設定

プロファイルを開く

sudo nano /profile

下記を書き込む

----------

export LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib
export NLS_LANG=Japanese_Japan.UTF8
export PATH=$PATH:/usr/lib/oracle/12.1/client64/bin

----------

再起動して読み込み

source .profile

⑤prelinkをする

sudo apt-get install prelink
sudo execstack -s /usr/lib/oracle/12.1/client64/bin/sqlplus

エコーで確認

echo $LD_LIBRARY_PATH

下記で出てくればおっけー

/usr/lib/oracle/12.1/client64/lib

⑥本番環境での追加設定

共有ライブラリのパス設定

sudo echo /usr/lib/oracle/12.1/client64/lib > /etc/ld.so.conf.d/oracle.conf
sudo ldconfig


以上です。

これで、DjangoからOracleDB12へ接続できます。







コメント