Oracle クエリから外部 C 関数を呼び出そうとしたときにこのエラーが発生したことはありますか? Oracle 10g を使用していますが、ライブラリ内の 2 つの関数のいずれかを呼び出そうとするたびに、このエラーが発生します。機能する関数はすべて自己完結型であり、OCI* 関数への呼び出しはありませんが、他の関数への呼び出しは毎回正常に戻ります。
失敗した C コードを呼び出すために使用されるストアド プロシージャは次のとおりです。
CREATE OR REPLACE PROCEDURE index_procedure(text in clob, tokens in out nocopy clob, location_needed in boolean)
as language c
name "c_index_proc"
library lexer_lib
with context
parameters
(
context,
text,
tokens,
location_needed
);
どんな助けでも大歓迎です。このエラー メッセージで私が見つけたすべてのことは、取るべき行動は次のとおりです。 Oracle カスタマー サポートに連絡してください。
編集: トークン clob で OCILobTrim (長さを 0 に切り詰めるため) を呼び出した後、libclntsh の奥深くに segfault があることがわかっているところまで絞り込みました。このプロシージャを呼び出すために使用したコードを次に示します。
declare text CLOB; tokens CLOB;
begin
dbms_lob.createtemporary(tokens, TRUE);
dbms_lob.append(tokens, 'token');
dbms_lob.createtemporary(text, TRUE);
dbms_lob.append(text, '<BODY>Test Document</BODY>');
index_procedure(text, tokens, FALSE);
dbms_output.put_line(tokens);
end;
/
この設定に問題があり、OCILobTrim の問題を引き起こしている可能性がありますか?