人気ブログランキング |


Oracle Database Gateway for ODBC

Oracle Database Gateway for ODBCをoracle11gに設定してSqlserver2005と接続してみる。
設定するPCはVista Ultimate
あらかじめODBCのシステムDSN「mssql」を定義しておく。sqlserverの接続データベースはpubs。

(1)initXXX.oraファイルの編集
C:\app\nakagawa_takashi\product\11.1.0\db_1\hs\adminにinitmssql.oraを作成。中身は

HS_FDS_CONNECT_INFO = mssql

(2)listener.oraに以下のように編集

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = nora01)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = nora01)(PORT = 1522))

)
)
SID_LIST_LISTENER=
(SID_LIST=
(sid_desc=
(sid_name=mssql)
(ORACLE_HOME=C:\app\nakagawa_takashi\product\11.1.0\db_1)
(program=dg4odbc)
)
)

(3)tnsnames.oraに以下の内容を追加
mssql=
(description=
(address=(protocol=tcp)(host=nora01)(port=1522))
(connect_data=(sid=mssql))
(hs=ok)
)

ここでオラクル、オラクルリスナーを再起動。

sqlplusを立ち上げる。
(4)データベースリンク作成。接続ユーザーとパスワードは適宜。

create database link mssql connect to xxx idnetified by xxx using 'mssql';

(5)select文発行

select * from authors@mssql;

行1でエラーが発生しました。:
ORA-28500:
OracleからOracle以外のシステムへの接続で次のメッセージが戻されました:
[Microsoft][SQL Native
Client]他のコマンドの結果のために、接続がビジー状態になっています。
ORA-02063: 先行のエラー・メッセージを参照してください2 lines(MSSQL)。

いろいろ調べたり、試したりしたところスキーマを指定する必要があるみたい。

select * from dbo.authors@mssql;

ところが、

select au_id from dbo.authors@mssql;

だと

行1でエラーが発生しました。:
RA-00904: "AU_ID": 無効な識別子です

どうもカラム名はケースセンシティブなようだ。

select "au_id" from dbo.authors@mssql;

これで通った。

まずはここまで。
# by nora1962 | 2009-09-11 00:57 | PC

黒豆を煮る

黒豆を炊いてみた。(圧力鍋,T-FALのファシール)
1)黒豆 200g
2)水 1L
3)水800cc
4)砂糖 150g
5)醤油 大さじ1.5さじ
6)塩 小さじ 1/3

・黒豆を水1Lに浸して一晩おき、ざるにあげる
・水800ccに調味料全部入れて砂糖が溶けるまであっためる
・黒豆を入れて、中子をを入れて強火にかける
・蒸気が上がったら弱火にして、20分煮る。火を止めて余熱で蝶理

砂糖控えめです。炊けたらタッパーなどに移して冷蔵庫に保存。薄味で冷たいお豆は食べあきません。
# by nora1962 | 2009-07-28 06:24 | 料理

ブラマンジェ

先日のパンナコッタのレシピを元にお手軽ブラマンジェ。

・牛乳 500cc
・生クリーム 400cc
・砂糖 120g
・粉ゼラチン 10g
・水 大さじ4
・アマレット 大さじ3

作り方はパンナコッタと一緒です。
アマレットは杏の核から作ったアーモンド風味のリキュールです。
手に入らないときはアーモンドエッセンス数滴で代用します。
# by nora1962 | 2009-07-09 04:33

鯛のあら煮

ひきつづき、スーパー活力なべを使って。

・鯛のあら
・水100cc
・酒100cc
・めんつゆ50cc

鯛のあらはざるにとって、熱湯をかける。
冷水で汚れをとる。
鍋にあらを重ならないように並べて、水、酒、めんつゆを入れる。
強火で加熱。蒸気がでるようになったら弱火にして加圧15分。
自然冷却。

骨まで食べれてうまいうまい。
# by nora1962 | 2009-07-08 01:35

圧力鍋でさばの味噌煮

圧力鍋(スーパー活力なべ)でのレシピ
・鯖の2枚おろし
・水 1カップ
・酒 1/2カップ
・めんつゆ 50cc
・砂糖 大さじ2
・味噌 大さじ2
・しょうが ひとかけ

1)鯖の2枚おろしはざるに置いて、熱湯をかける。
2)水、酒、めんつゆ、砂糖を一煮立ちさせて、鯖をいれる
3)しょうがの輪切りを加えて、蓋をしめる
4)加圧20分、自然冷却
5)蓋を開けて、味噌を加えて軽く煮立たせる

圧力鍋はあるとやっぱり便利。上記のレシピなどでは骨まで食べられる。
実は自宅に圧力鍋が4つもあるのだ。
T-FAL セーバー 6L
T-FAL ファシール 4.5L
スーパー活力なべ 3L
ワンダーシェフ マクサス 5L

マクサスを除いてすでにメーカー廃番品。
セーバーのみステンレス一枚なのだが、なべ底が平坦でない。そのためこの鍋のみで炒めたりするのはどうも不便だ。そのかわり容量がでかいので、豆を煮るときなどは余裕がある。しかしそろそろお役ごめんかな。
買ったときも手ごろな値段だった(5千円ぐらい)
ファシールは本体ステンレス、底面ステンレス、アルミ、ステンレスの3重張り。これは底面が平坦だ。
容量も適度かなと思えていた。
スーパー活力なべは加圧水準に引かれた。2.44気圧。日本で販売されている圧力鍋としてはトップクラス。
調理時間を短くするのにはこれかなと。容量も手ごろなやつが欲しかったせいもある。
マクサスはセーバーの後釜にしようかなと考えている。まだ実戦経験はない。
# by nora1962 | 2009-07-03 04:25 | 料理

パンナコッタ

簡単なパンナコッタの作り方(4~5人分)
・牛乳 500cc
・生クリーム 400cc
・砂糖 120g
・粉ゼラチン 10g
・水 大さじ4
・バニラエッセンス 数滴
・ラム酒 大さじ2

1)耐熱容器(電子レンジOKのもの)に水に入れて、粉ゼラチンを振り入れてふやかしておく。
2)牛乳に砂糖を加えて火にかける。溶けたら火を止める。(砂糖が溶ければいいのでぬるめがいい)
3)生クリーム、バニラエッセンス、ラム酒を加え混ぜる
4)ふやかしておいたゼラチンを電子レンジ弱で加熱して溶かす(沸騰させないこと)。
  とけたら、3)に加える
5)十分温度が下がっていたら、型に流しいれる
6)冷蔵庫に入れて2時間程度冷やす。

かなり、柔らかめのレシピなので型からはずすのはお勧めしません。
普通のレシピは牛乳を高温にして、ふやかしたゼラチンを溶かすものが多いのですが、これだと牛乳
の温度が下がるまで結構時間がかかってしまいます。氷水につけて冷やすとかでてきますね。
今回のレシピはゼラチンをレンジで溶かしてしまうことでこの時間を短縮しました。

上記レシピはプレーンなものですが、お気に入りのフルーツソースを上乗せしてもいいでしょう。
# by nora1962 | 2009-07-03 02:22 | 菓子

ruby dbi とRDBMS

rubyとdbiで勉強して(あそんで)いる、このごろ。

require 'dbi'
dbh = DBI.connect("dbi:pg:test:localhost","user","password")
row = dbh.select_one( "select * from hoge" )
row.each{|col|
puts col.class
}
でDB側とrubyとでデータ型の関連を調べてみた。
postgvresqlは
int → fixnum
decimal → bigdecmal
varchar → string
float → float
double → float
rubyのfloatはdoubleと同精度。
postgresqlのdecimalがbigdecimalに紐付けられているのは好感がもてる。

mysqlも同様な結果。

ところがoracleは
number(10,2)をFLOATで返してくる。これはまずいんじゃないかな。
ODBC経由にするとnumber型がすべてBigdecimal型で返ってくる。
ORACLEのFLOAT、REALはいずれもstring型。

mssqlもODBC経由なら
int → Fixnum
decimal → bigdecimal
float,real → float

やっぱりORACLEが一番くせが強いかな?
# by nora1962 | 2009-04-14 05:56 | PC

rubyのsplitではまる

仕事でEXCELから出力したタブ区切りのファイルをWEBシステムにアップロードするというやつをやった。
ところが、出力ファイルの行末のタブの数が行によって違っていて、エラーになって取り込めない。
ruby使って以下のようにやってみた。
io = open(ARGV[0])
line=nil
while line=io.gets
  line.chomp!
  s = line.split(/\t/)
  print line
  print( "\t" * ( ARGV[1] - s.length ) )
  puts
end
ところがこれじゃうまく動かない。タブの数が余計に出力される。
なぜだかわからず、結構悩んでしまった。

これはsplitの仕様のせい。
"A\tB".split → [ "A", "B" ]
"A\t\tB".split → [ "A","", "B" ]
だが
"A\t\t".split → [ "A" ]
となってしまうのが原因。空文字と区切り文字が後続する部分は切り捨てられてしまう。

念のためPerl5.8で試したみたところ同様の動作を行ってた。
うーん、個人的には"A\t\t".split → [ "A" ,"",""]になってくれたほうがうれしい気がするのだが。

今回は
io = open(ARGV[0])
line=nil
while line=io.gets
  line.chomp!
  s = line.split(/\t/)
  print s,join("\t")
  print( "\t" * ( ARGV[1] - s.length ) )
  puts
end

で逃げた。
# by nora1962 | 2009-04-14 05:03 | PC

rubyで[BUG] Segmentation fault その後

ruby-pg-0.7.9.2008.10.13をVISTA環境でコンパイルするとDBIで使用できずに、[BUG] Segmentation faultが表示されて落ちる件のその後。

環境はVISTA SP1、VISUAL C++ 2008。

ためしにもう一台もっているPC( XP Pro )でVISUAL C++ 6.0でコンパイルしたpg.soを
「C:\ruby\lib\ruby\site_ruby\1.8\i386-msvcrt」にコピーしてみた。

ビンゴ!

DBIが動く。
ちなみにVISUAL C++ 2005でコンパイルしたpg.soではだめだった。

しかしVISUAL C++ 6.0 もうサポート終了だし、VISTAにインストールしようとすると「互換性」なんちゃらかちゃっらのメッセージが出てくる。正常にインストールできないみたいだ。

Ruby本体をOneClickInstaller版使っているのが悪いのかね。

しかし、Ruby本体をVisual C++ 2008でコンパイルする気にはさすがにならない。
とりあえず、Rubyの学習が目的なので現状でよしとする。
# by nora1962 | 2009-03-29 01:33 | PC

DBD-pgをインストール

windows vista activeperl 5.8.9の環境でpostgresqlにDBI接続したいのだが、DBD-pgがなかなか見つからなかった。
ようやく見つかったので一応メモ。
http://trouchelle.com/perl/ppmrepview.pl
から見つけた。
ppm rep add trouchelle.com http://trouchelle.com/ppm/
でレポジトリを追加して
ppmからDBD-pgをインストール
(ppm install DBD-pg してもいいんだけれど)
# by nora1962 | 2009-03-26 00:49