オラクルの日付型を 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
PL/SQL内からDBサーバのホスト名とか取得する方法
select sys_context('USERENV','SERVER_HOST') from dual
他にもいろいろとれるみたい
http://oracle.se-free.com/dml/13_sys_context.html
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をちゃんと作らないとダメってことかな?