オラクルの日付型を to_char した時の変換ルールの件

DBをバージョンアップしたらこんなんなった><

9i:
select to_char(sysdate,'mon') from dual; → may
11g:
select to_char(sysdate,'mon') from dual; → 5月


下記に 10g より nls_data_language の設定が関係するとの記述あり。
http://www.shift-the-oracle.com/sql/functions/to_date.html

ちなみに上記リンクに書かれてあるよう、第3引数に nls_data_language を指定することで変換ルールを指定することができる。

11g:
select to_char(sysdate,'mon','NLS_DATE_LANGUAGE=ENGLISH') from dual; → may

で、面倒なんでパラメータファイルでNLS_DATE_LANGUAGE指定したけど有効にならない。
ラクルに聞いたら

DBのキャラクタセットJA16EUC、NLS_LANGがJapanese_Japan.JA16EUCをご利用する前提であれば、セッションレベルの対応以外には、有効な回避策はございませんでした。

との事。ちなみに「セッションレベルの対応」とはこれ。

alter session set nls_date_language='ENGLISH';

ネットワーク利用の有効化

Oracle11gにしたら、mod_plsqlで使用してる utl_http.begin_request で以下エラーがでるようになった。

ORA-24247: アクセス制御リスト(ACL)によりネットワーク・アクセスが拒否されました

詳しくは以下に書かれてるが、ストアドからネットワーク接続するためにはあらかじめ権限を付与しなければならなくなったとのこと
http://d.hatena.ne.jp/seraphy/20111225

システムユーザで下記処理を行うことで解決。

BEGIN
	DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(
		acl => 'test1.xml',
		description => 'test1 ACL',
		principal => 'スキーマ名1',
		is_grant => true,
		privilege => 'connect'
	);
	DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(
		acl => 'test1.xml',
		principal => 'スキーマ名2',
		is_grant => true,
		privilege => 'connect'
	);
	DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(
		acl => 'test1.xml',
		host => '172.16.1.26'
	);
END;
/

削除は以下のとおり

BEGIN
	DBMS_NETWORK_ACL_ADMIN.DROP_ACL(acl => 'test1.xml');
END;
/

設定状態の確認は以下を参照。

  • dba_network_acls
  • dba_network_acl_privileges

htmlをエクセル表示させた時に勝手に数値変換させない方法

下記の手順でmime-type指定するとhtmlがエクセル形式で吐かれる。
http://www.abe-tatsuya.com/web_prog/perl_cgi/output2xls.php

この時tableタグを使って以下のように出力すると

<table><tr><td>0123</td></tr></table>

123となり数値変換されてしまう

mso-number-format:\@;っていうのをstyle属性に指定すると文字列のまま表示される。

<table><tr><td style="mso-number-format:\@;">0123</td></tr></table>

新規windowを画面いっぱいに開くやつ

レガシーWebアプリで必要になりがちなんで汎用化してみた。
jQueryがあれば $.OpenFullWindow() 、なければ OpenFullWindow() で実行可能。
画面表示の有効範囲分のサイズで開く(window.adjustWidth)。微調整はadjustWidthパラメータで可能。

実行例

OpenFullWindow({
    url : 'http://www.yahoo.co.jp,
    resizable : 0,
    adjustWidth : -56,
    adjustHeight : -56
});

scコマンドでサービス登録

windows】サービス登録コマンド sc
http://www.softel.co.jp/blogs/tech/archives/246

cmd.exe /k start hoge.bat

java.exe xxx.jar

やらで試したけどエラー1053になってしまう。

ここ(http://dsas.blog.klab.org/archives/51254911.html)の記事に

cmd.exe はサービスプログラムではないため sc start コマンドでサービスとして開始しようとしてもサービスサービスコントローラとの応酬に失敗し上記のエラーとなりますが

ってあるんで、サービス用のexeをちゃんと作らないとダメってことかな?