Oracleでハマる

やりたい処理は、PL/SQLから任意の外部コマンドを呼べるようにすること。
これをトリガーに仕込んで、更新がかかるたびに、あるプログラムを叩きたかったのだ。
普通に(と、思ったんだ)考えると、
PL/SQLからは外部コマンドの呼び出しはサポートしていないので、
PL/SQLから外部コマンドを呼び出せるパッケージを呼んで、そのパッケージが外部コマンドを叩く。
ようにするんだろうな、と、考えた。
Google大先生に問い合わせたり、知ってたのを総合するとやり方は次の3つ。

  1. プロシージャをjavaで書いてloadjavaでOracleに登録する
  2. 外部プロシージャ呼び出しを使ってDLLに処理させる
  3. DBMS_PIPEを使ってもできるらしい(?)

とりあえず、一つ目を試してみる。が、何度頑張ってもloadjavaで失敗する。
UTF8からUCS2に変換できません。
とか言ってloadjavaが落ちる。
ダメ元でjavaのソースをUTF8で保存してコンパイルしなおしてみたが、予想通り、これもダメ。
Google先生に泣きつくと、どうやらOracleのNLS_CHAR_SETとクライアントの環境変数NLS_LANGの不整合時に出ることがある、とまでは分かったものの、どう設定すれば良いのか、イマイチわからない。
他の環境だとうまくいくのか?明日は違うDBで試してみよう。