ラベル oracle の投稿を表示しています。 すべての投稿を表示
ラベル oracle の投稿を表示しています。 すべての投稿を表示

2015年7月8日水曜日

mod_owaでORA-06512

DBのリストをHTP.PRINTで出力して遊んでいたらバッファーが小さいって以下のエラーが。

PL/SQL: numeric or value error: character string buffer too small ORA-06512: at "SYS.HTP"

出力する文字の数に制限があるのかなと思ったが、以下のパラメータをmod_owa.confに書き加える事で回避できた。

OwaCharsize 4

マルチバイトの文字を扱う場合にバッファが溢れるってことなのかな?デフォルトでは1がセットされているらしい。

2015年6月23日火曜日

PL/SQLでX-FORWARDED-FORヘッダを読む

Oracle ASの前段にリバースプロキシを入れる予定があったので調査。

HTTPヘッダのRemote-Addrは以下のようにすれば取得できるが、リバースプロキシ環境ではプロキシサーバのIPが入ってしまう。

owa_util.get_cgi_env('REMOTE-ADDR')

試しに以下のようになってみたが、空だった。ログ上はX-Forwarded-Forがヘッダになるのに。

owa_util.get_cgi_env('X-FORWARDED-FOR')

Oracleコミュニティのサイトを調べてみると、dads.confの該当するLocationディレクトリブに以下を追加すれば良いらしい。

PlsqlCGIEnvironmentList X-FORWARDED-FOR

うちの環境ではこれで取得できた。

2015年3月24日火曜日

csv ファイルをoracleに取り込む

sqlldrコマンドとCSVファイルを使って読み込むわけだが、コントロールファイルでcsvを定義するのでサンプルを残しておく。

---- 以下サンプル「flash_card.ctl」----
LOAD DATA
INFILE "flash_card.csv"
APPEND
INTO TABLE TIKTAK.FLASH_CARD
FIELDS TERMINATED BY ','
TRAILING NULLCOLS
(
ENGLISH_WORD,
JAPANESE_WORD,
TRIAL,
SUCCESS,
FAKE1,
FAKE2,
FAKE3,
NO sequence(MAX)
)
----

上記を使って読み込むコマンドは以下の通り。
sqlldr userid="ユーザ名/パスワード" control='flash_card.ctl'