投稿者「as」のアーカイブ

OracleからPostgreSQLへのデータ移行 – 2.バイナリデータ

OracleからPostgreSQLへのデータ移行 – 1.型指定 であらかたデータ移行はできましたが、次に問題になったのがバイナリデータでした。

最初にORA-24345エラーが発生。これについては ORA-24345 が発生するならこのディレクティブを1にしろ、と書かれているLONGTRUNCOK 1を設定することで解消しました。オンラインドキュメントではLONGTRUNKOK になっていますが、configファイルでは LONGTRUNCOK です。

そしてblobカラムに格納されていたデータが、一見移行できているように見えて途中で途切れているなどの問題が発生しました。

LONGREADLENに十分なサイズを指定することで解消しますが、余り大きくすると今度はOutOfMemoryが発生してしまいます。

OutOfMemoryを防ぐにはDATA_LIMITを小さくすれば良いのですが、そうするとデータ移行に時間がかかるようになります。

これらを踏まえて、1レコードあたりのデータサイズが大きなテーブルとそれ以外のテーブルについて出力を分けることにしました。

1レコードあたりのデータサイズの大きなテーブルをカンマ区切りでリストアップ。configファイルを二つ作り、一方には先のテーブル名をEXCLUDE に指定。もう一方には ALLOW に指定します。

ALLOW に指定した方のconfigではLONGREADLENを大きくとり、DATA_LIMITを小さくします。

これで通常のデータについては移行を手早く、サイズの大きなデータについてもエラーを回避し確実に移行できるようになりました。

OracleからPostgreSQLへのデータ移行 – 1.型指定

弊社でもOracleからPostgreSQLへの移行作業を行うことがあり、データ移行には定番でしょうが ora2pg を使用しています。

基本的にドキュメントのとおりに実行知ればデータ移行が完了してしまう優れものですが、いくつかハマったポイントもあるので書いてみたいと思います。

ちなみにLinuxで動作させる方が多いかと思いますが、ActivePerl をインストールすればWindowsでも問題もなく動作します。

ActivePerlのインストール後にパッケージマネージャでdmakeをインストールし、ora2pgのソースコードを適当なフォルダに展開、コマンドプロンプトからperl .\Makefile.pl して dmake installで終わりでした。

Oracleクライアントのインストールの手間を考えるとWindows環境で実行する方が簡単かもしれません。

さてora2pgでのデータ移行ですが、とりあえず接続先情報以外はconfigをそのまま使用して移行してみたのですが自動で行われた型指定とプログラムの動作に問題が生じました。

例えば、NUMBER(4,0)等がsmallintで移行されてしまいます。これが.NET Framework2の頃に作成された、SELECT結果を DataTable に格納、そのまま DataGridView にバインドしているようなプログラムで問題になりました。intを想定していたものが PostgreSQL+smallintだとshortになっており、DataErrorイベントが発生することに。

これをデータベース側で回避するとした場合、ora2pgのコンフィグファイルで変換する型を指定することになります。DATA_TYPE項目ですね。

Oracleの型:PostgreSQLの型, Oracleの型2:PostgreSQLの型2… のように指定するだけですが2つほどポイントが。

一つは、精度指定のカンマをバックスラッシュでエスケープすることです。これは公式ドキュメントのDATA_TYPEの項目にもしっかり書かれているのですが、読み飛ばしていたため、スクリプトで型変換リストを作成した際にハマってしまいました。

二つ目は、精度指定で小数点以下桁数が0の場合にはカンマ以降が不要という点です。公式ドキュメントの例に DATA_TYPE NUMBER(*\,0):bigint という記述があり、これを参考に NUMBER(4\, 0):integer と書いたのですが numeric(4) に変換されてしまいました。

最初、指定が反映されない理由分からず悩みましたが、実はNUMBER(4):integer のようにカンマ以降が不要でした。

数値データの取得後、プログラム上での扱いについては他にも小数点以下が全て0の場合に10 になるか 10.00 になるかといった問題も発生しました。これについては弊社ではプログラム側で対応しました。

モスバーガーの新作ライスバーガー

会社の前にモスバーガーがあるのですが、今朝何気なく見たらのぼりが新しくなっていました。

ライスバーガー 海老天ぷら。

それもはや「天むすび」では、と思いながらモスバーガーのサイトを見に行くと、天丼がモチーフらしいですね。でも海苔もついており、結んでないけど天むすびでした。

まぁどちらにしてもアレルギーで海老は食べられないのですが。

パイナップルアメ

ボンタンアメはご存じだと思います。和製グミといった食感のソフトキャンディーですね。

先日自宅近くの、でもあまり行かないスーパーに寄ってお菓子売り場を物色していると、ボンタンアメの横に「ボンタンアメの姉妹品です」と書かれたモノを見つけました。兵六餅ではなく。

パイナップルアメ。なかなか美味しい。見かけたらまた買いたいです。

新商品かと思ったのですが、少し調べてみたところ、結構前から販売されている模様。知りませんでした。

くろがね堅パン、くろがね羊羹

今日、佐賀に行った方にお土産として小城羊羹をねだってみるという会話のなかで

くろがね堅パン、くろがね羊羹を食べたことがない社員がいることが発覚。

自宅に常備している私は驚愕しました。

北九州の会社としては由々しき問題です。

オフィスグリコの横に並べておくべきかもしれません。

活動量計

体組成計により、筋肉量が少ない等うれしくないことがわかったワケですが、他にも気になることがあります。

体組成計で計測した結果をスマートフォンに取り込んでアプリで見るわけですが、この「ヘルスプラネット」、使う際に自分の身長や年齢といったプロフィールを登録する必要があります。

で、その中に「身体活動レベル」という項目があり、選択肢が「高い」「普通」「低い」なんですね。そしてこの「身体活動レベル」の選択によって「体重キープの目安」カロリーが表示が変わります。

ほぼ一日机に向かってますから「高い」はない。ので「普通」か「低い」なワケですがここが問題で「体重キープの目安」カロリーが330kcalほど違ってきます。食後のデザートにロールケーキを一切れ食べても安心できるかどうか。

仕事は座りっぱなしとはいえ、毎日飼い犬の散歩でそこそこの速度で数km歩くしそんなに低くもないのでは。と思いつつ下手に安心して余分なカロリーを摂るようになっても困ります。

そんなわけで活動量計「カロリズム AM161」も買ってしまいました。メーカーの思うつぼです。

1週間ほど身につけた結果。活動量、というか消費カロリー非常に低かったです。話になりません。仕事の合間におやつ食べている場合ではないです。

北九州マラソンも近いし、私もランニングでも始めるべきでしょうか。

 

 

体組成計で計った結果は正しいのか

体組成計を買った結果、体重その他もろもろが数値で突きつけられるようになったわけですが、ある程度わかっていた事とはいえ、どうにも痩せすぎ感が。

体脂肪率が低めな点は良いとしても、筋肉、骨量も少なめと表示されると良い気がしません。そして本当に少ないのか気になります。

というわけで、どうにか他の方法で確認したいと思って考えついたのが握力計です。筋力が十分なら筋肉量が少なめに計測されても言い訳が立ちそうな気がしたわけです。

背筋力計の方がより大きな筋肉の筋力を計ることができそうですが、そこそこ良いお値段がします。その点握力計はピンキリで比較的お安い。

早速注文して計ってみました。

結果。利き手はかろうじて平均値、反対は平均値よりも10kg近く低い結果に。どうやら体組成計は正しいようです…

体組成計

長く使っていた体重計のパネルが割れてしまい、体重計を買い換えることになりました。
ちょうどポイントが貯まっていたので少し高機能なモノを買ってみました。

タニタの体組成計 RD-906

計測結果をスマートフォンに転送でき、アプリでグラフ表示できます。

で、体重、体脂肪率はもちろん、筋肉量や基礎代謝、骨量まで判定されるんですね。体重、体脂肪率はこれまでと変化もなく気にならなかったのですが、筋肉量や骨量が「少なめ」表示され少しばかり凹みました。

釣りに行ってへばらないよう、筋力維持程度の運動はしているつもりだったのですが。

それでも数値で判定されると改善しようという気になるので悪くはないですね。

過信禁物油断大敵

いつものように週末夜釣りに行きまして、普段と違う河川の河口まで足を伸ばして見ました。

河口に着くと、先客が多くグーグルマップで目星をつけていたポイントは空いていませんでした。

少し上流側に移動して河川敷に降りようとしましたが、あいにく階段が見当たりません。道路から河川敷までは2m強。石積み斜面で凹凸もあるため、まあ降りられそう。
柵を跨いで石に足をかけると、夜露のためか少し滑ります。

両手に荷物を持ったままでは斜面に対して向き合う姿勢で降りられないため、複数回登り降りしなければ、と思いながらライトで下を照らすと、中程より少し下、脇に少々幅のある足場が見えます。

前向きに降りて、滑ったら逆に踏み込んであそこの足場で踏ん張れば大丈夫だろうと考えて両手に荷物を持ったまま降りたのですが、案の定滑りまして。

予定どおりさらに一歩前に出て予定の足場に着地。と思ったら足場は実はただの枯れ草でそのまま転け落ちてしまいました。

幸い下が草だったことと、脇に抱えていたバッグがクッションになり、ズボンが少々汚れただけで怪我もなくすみましたが、これが磯だったりテトラだったら大変なところでした。

年齢の割にそこそこ足腰丈夫だとか考えて横着になっていました。油断大敵、安全第一ですね。

釣り小物

ここのところ、セイゴ・メイタ狙いの夜釣りによく行きます。
あまり面倒なことを考えずに、のんびりやれるのが良いですね。

セイゴ狙いといってもあまり小さいものは食べるところも少ないのでリリースしますが、口が大きく、ガバッと飲み込む感じで喰ってくる上に夜釣りですからどうしても針を飲まれてしまいます。

そこで活躍するのが針外し。ベルモントのメイク針外しを愛用しています。

分かりにくいかもしれませんが、先端脇にあるスリットにハリスを通して魚の口に差し込むと横向きの部分に針がかかって外れます。そして程よく先端の太さがあり、外れた針先が隠れてくれるので外れた針が再度刺さってしまうことがありません。

外し方の図解はGoogle画像検索で。

おすすめです。