Oracleの動的な呼び出し外部Cライブラリ関数

 カテゴリー:オラクル

2016年8月20日5時24分52秒

開発時間を短縮するためにプロジェクトとして、良いコールOracleで外部のCプログラムを開発してきました。
この記事の実際の要約と組み合わせて、オンラインいくつかの記事を検索。私が手助けをしたいです。
参考記事:のhttp://www.cnblogs.com/mathitlin99/archive/2013/09/05/3303717.html

最初の外部のダイナミックライブラリをコンパイル<スパン「=」「> libDialPlan.so

(クリックしてここに)折り畳まれたり展開

  1. gccの-fPIC -c LibDialPlan.cpp
  2. gccの-shared -o libDialPlan.so LibDialPlan.o -lstdc ++

ファイルおよびOracle TNS Listenerのファイルを変更します。
私は直接のコピーが利用可能であるかわかりません。ご質問がある場合は、等号括弧スペースの両側に注意を払ってください
tnsnames.oraファイル

(クリックしてここに)折り畳まれたり展開

  1. ORADB =
  2.   (DESCRIPTION =
  3.     (ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.69.166)(PORT = 1521))
  4.     (CONNECT_DATA =
  5.       (SERVER = DEDICATED)
  6.       (SERVICE_NAME = oradbの)
  7.     ) 
  8.   )
  9. EXTPROC_CONNECTION_DATA =
  10.   (DESCRIPTION =
  11.     (ADDRESS_LIST =
  12.     (ADDRESS =(PROTOCOL = IPC)(KEY = EXTPROC1521))
  13.   )
  14.   (CONNECT_DATA =
  15.     (SID = PLSExtProc)
  16.     (PRESENTATION = RO)
  17.   )
  18.   )
LISTENER.ORA

(クリックしてここに)折り畳まれたり展開

  1. LISTENER =
  2.   (DESCRIPTION_LIST =
  3.     (DESCRIPTION =
  4.       (ADDRESS =(PROTOCOL = IPC)(KEY = EXTPROC1521))
  5.       (ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.69.166)(PORT = 1521))
  6.     )
  7.   )
  8. ADR_BASE_LISTENER = /ホーム/オラクル/ DB /アプリ
  9. SID_LIST_LISTENER =
  10. (SID_LIST =
  11.   (SID_DESC =
  12.   (GLOBAL_DBNAME = oradbの)
  13.   (SID_NAME = oradbの)
  14.   )
  15.   (SID_DESC =
  16.   (SID_NAME = PLSExtProc)
  17.   (ORACLE_HOME = /opt/local/oracle/app/product/11.2.0/dbhome_2)
  18.   (ENVS = EXTPROC_DLLS = ANY)
  19.   (PROGRAM = EXTPROC)
  20.   ) 

変更は、リスナーの再起動後:LSNRCTL停止し、起動LSNRCTL
モニターのステータスを表示するには、次のモニタ項目を表示される必要があります。 PLSExtProc <スパン「=」「> 

(クリックしてここに)折り畳まれたり展開

  1. [ルート@ localhostの管理]#のLSNRCTL状況
  2. Linux用のLSNRCTL:バージョン11.2.0.1.0 - 生産04 - 8月 - 2016年に午後07時33分50秒
  3. 著作権(C)1991、2009、Oracleの。全著作権所有。
  4. (DESCRIPTION =(ADDRESS =(PROTOCOL = IPC)(KEY = EXTPROC1521)))に接続
  5. リスナーのステータス
  6. ------------------------
  7. 別名LISTENER
  8. Linux用のバージョンTNSLSNR:バージョン11.2.0.1.0 - 生産
  9. 日付を起動04 - 8月 - 2016年16時23分54秒
  10. 0日3時間を稼働時間。9分。55秒
  11. トレースレベルオフ
  12. ローカルOS認証:ONセキュリティ
  13. SNMP OFF
  14. リスナーパラメータファイル/opt/local/oracle/app/product/11.2.0/dbhome_2/network/admin/listener.ora
  15. リスナー・ログ・ファイル・/opt/local/oracle/app/product/11.2.0/dbhome_2/network/log/listener.log
  16. エンドポイントの概要を聞きます...
  17.   (DESCRIPTION =(ADDRESS =(PROTOCOL = IPC)(KEY = EXTPROC1521)))
  18.   (DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.69.166)(PORT = 1521)))
  19. サービスの概要...
  20. サービス "PLSExtProcは" 1つのインスタンス(複数可)を持っています。
  21.   インスタンス「PLSExtProc」、ステータスUNKNOWNには、このサービスに対する1件のハンドラ(複数可)を持っています...
  22. サービス "oradbのは、" 1つのインスタンス(複数可)を持っています。
  23.   インスタンス「oradbの」、ステータスUNKNOWNには、このサービスに対する1件のハンドラ(複数可)を持っています...
  24. コマンドが正常に完了します
  25. [ルート@ localhostの管理]#
Oracleのライブラリのオブジェクトを作成します

(クリックしてここに)折り畳まれたり展開

  1. ライブラリhytpdtbilldb.Fun_Ext_Procを作成したり、交換してください
  2.   '/opt/local/Oracle_install/Oracle_Call_External_C/libDialPlan.so' と;
機能作成します
)オンラインの記事と同様に、パラメータ1に記載のパラメータを。
私が入社した後、しかし、このパラメータは、コンパイルされていません。除去後の機能の使用には影響しません。
2)数値や文字列BINARY_INTEGER、VARCHAR2型に対応。もともと配列型パラメータにCは本当のOracle列ではなく文字列のみを通じて、必要ありませんが、されています。
3)時折私のテストのコース、で呼ばれている正常な機能に再起動する必要があります。あなたは見てのプロセスを使用することができます。

(クリックしてここに)折り畳まれたり展開

  1. 関数を作成または交換hytpdtbilldb.Air2Gsi
  2. (XのBINARY_INTEGER、Y VARCHAR2)
  3. VARCHAR2戻ります
  4. として
  5. 言語C
  6. ライブラリhytpdtbilldb.Fun_Ext_Proc 
  7. 「Air2Gsi」という名前を付けます。
  8. /

おすすめ

転載: www.cnblogs.com/buffercache/p/11446224.html
おすすめ