Ubuntu Linux からOracleDBへ Instant Client 接続方法

  • 1
    いいね
  • 0
    コメント

Instant Client Downloads for Linux x86-64ダウンロード

Instant Client Downloads for Linux x86-64
Download instantclient-basic-linux.x64-12.2.0.1.0.zip

解凍してフォルダ移動

#解凍
unzip instantclient-basic-linux.x64-12.2.0.1.0.zip

#ディレクトリを作って移動
mkdir /opt/oracle
mv instantclient_12_2 /opt/oracle/

#リンクを作成
ln -s libclntsh.so.12.1 libclntsh.so
ln -s libocci.so.12.1 libocci.so

環境変数の設定

export LD_LIBRARY_PATH=/opt/oracle/instantclient_12_2:$LD_LIBRARY_PATH
export PATH=/opt/oracle/instantclient_12_2:$PATH

PAServer-19.0起動

RADStudio/Tokyo/ja/Linux_アプリケーション開発

./PAServer-19.0/paserver

RAD Studio 10.2 Tokyoを起動

新規プロジェクト →その他→Delphi→WebBroker→Webサーバーアプリケーション
2017-04-241619.png
Linuxにチェック
2017-04-241620.png
スタンドアロンコンソールアプリケーションを選択

TWebModule1が作られていますので デザイン画面から
TFDConnection, TFDPhysOracleDriverLink, TFDQuery, TFDStanStorageJSONLinkを配置します。
2017-04-241625.png

予め用意したAWS(RDS) Oracle SE Oneのインスタンス内にtable1テーブルを用意したので
FDQuery1に設定する
2017-04-241631.png

REST JSONで返すコードを書く

procedure TWebModule1.WebModule1DefaultHandlerAction(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
  ms_:  TMemoryStream;
begin
  FDQuery1.Active := True;
  ms_ := TMemoryStream.Create;
  FDQuery1.SaveToStream(ms_, TFDStorageFormat.sfJSON);
  ms_.Position  := 0;
  Response.ContentStream  := ms_;
end;

procedure TWebModule1.WebModuleCreate(Sender: TObject);
begin
  FDPhysOracleDriverLink1.VendorLib   := '/opt/oracle/instantclient_12_2/libclntsh.so';
  FDConnection1.Connected := True;
end;

実行

2017-04-241638.png

失敗の場合

プロジェクトxxxx は例外クラス EFDException (メッセージ '[FireDAC][Phys][Ora]-314. Cannot load vendor library [libclntsh.so]. Hint: check it is in the PATH or application EXE directories, and has x64 bitness.')を送出しました。

参考URL

https://community.embarcadero.com/blogs/entry/ubuntu-linux-oracle-se-one-tfdconnection-japan