2 Replies Latest reply: Nov 7, 2012 11:35 PM by 973146 RSS

    外部プロシージャのエラーについて

    973146
      初めて投稿します。よろしくお願いします。

      外部プロシージャで、soファイルを呼び出したいのですが、
      以下のようなエラーが出てきてしまい、原因がわかりません。

      ORA-06521: PL/SQL: 関数のマップ中にエラーが発生しました。
      ORA-06522: /opt/app/oracle/product/11.2.0/db/lib/libHello.so: undefined symbol: libHello
      ORA-06512: "スキーマ名.TEST_HELLO", 行1
      ORA-06512: 行1

      ○環境
      Linuxサーバ
      Oracle11g
      C言語

      デフォルト構成を使用しようと思っているので、listener.oraとtnsnames.oraの設定はしておりません。
      他の設定やソースは以下のとおりです。

      ○extproc.oraの設定
      SET EXTPROC_DLLS=
      SET LD_LIBRARY_PATH=/opt/app/oracle/product/11.2.0/db/lib

      ○ライブラリを呼び出すプロシージャ
      CREATE OR REPLACE PROCEDURE スキーマ名.TEST_HELLO
      IS LANGUAGE C
      NAME "libHello"
      LIBRARY HELLOLIB;

      ○ライブラリ
      CREATE OR REPLACE LIBRARY スキーマ名.HELLOLIB
      AS '$ORACLE_HOME/lib/libHello.so'
      /

      ○libHelloの内容
      int hello()
      {
      return 0;
      }

      ORACLE_HOMEは、「/opt/app/oracle/product/11.2.0/db」です。

      必要情報の過不足があればご指摘ください。

      linuxもC言語も初心者なのですが、必要に迫られてトライしているところです。。。
      アドバイス等いただけましたら、幸いです。
      よろしくお願いします。