ushidayの日記

主に「IBMi」のメモに・・・

DB2トランザクション・ログがフル (SQL0964C)

IBM i上のDB2から、Windows上のDB2 Express Cにデータをコピーする際に、あるテーブルの全レコードを"DELETE"したら、たまたま件数が多かった(12万件程度)のもあって、「SQL0964C データベースのトランザクション・ログがいっぱいです。 SQLSTATE=57011」というエラーが返された。
対象法として、

  1. トランザクションを細かくする
  2. ログ容量を増やす

が有る。「1」の方法はコピーを作る上では面倒なので、「2」のログサイズを増やしておいた。増やし方は以下の通り。

    • 「コントロールセンター」を開き、該当するデータベースを右クリック。
    • 「データベース・ロギングの構成」を選ぶ。
    • 「ロギング・サイズ」の項目で、”1次ログ・ファイルの数”、”2次ログ・ファイルの数”、”各ログ・ファイルのサイズ”のページ数(ページ当たり4K)を増やす。
    • 増やした後は、データベースを再起動する。
      • 1次ログ・ファイル(初期値13)・・・データベース起動時に確保される。ログファイル。
      • 2次ログ・ファイル(初期値4?)・・・1次ログで不足した際に、1つずつ確保されるログファイル。
      • ファイルサイズ(初期値1024)・・・ログファイルのページ数(1ページ4K)

2次ファイルを多用するとパフォーマンス的には、1次ファイルより悪い。

db2 get db cfg for | grep LOG」でコマンドラインでも確認可能

Zend StudioでZFプロジェクトが作成出来なくなった

ある日、Zend Studioで「Zend Framewrokプロジェクト」を新規作成しても中身が空っぽだった。
コマンドラインから「zf show version」を実行すると以下のスタック

C:\Program Files\Zend\Zend Studio i5 - 7.2.1\plugins\org.zend.php.framework.resource_7.2.0.v20100324-1300\resources\ZendFramework-1\bin>zf show version

Warning: include_once(NetBeansCommandsProvider.php): failed to open stream: No such file or directory in C:\Program Files\Zend\ZendServer\share\ZendFramework\ZendFramework-1.10.6\library\Zend\Loader.php on line 146

Warning: include_once(): Failed opening 'NetBeansCommandsProvider.php' for inclusion ....

「NetBeansCommandsProvider.php」が見つからないと...。はて?そう言えば、NetBeansで、Zend Frameworkのプロバイダ登録したのを思い出した。
~/.zf.iniを確かめると以下の通り

php.includepath = "...."
basicloader.classes.0 = "NetBeansCommandsProvider"

あーこれだ。
「NetBeansCommandsProvider」を削除にするか、「%ZEND_STUDIO_HOME%\plugins\org.zend.php.debug.debugger.win32.x86_5.3.7.v20100625\resources\php5\php.ini」の”include_path”に「C:\Program Files\NetBeans\7.0\php\zend」を追加してパスを通すかで対応した。

SQLRPGプリコンパイラの不思議

久々に備忘録。

滅多なことでは、SQLRPGを使わないのですが、少しハマったので備忘録を。

例えばこんな感じのD仕様書で

D result          DS                  dim(ITEM_Row_Max)               
D                                     LIKEREC(ITEMR :*INPUT)                  

こんな感じのC仕様書だった場合

exec SQL set Result sets Array :result  for :count Rows  ; 

CRTSQLRPGIを実行すると、SQLのプリコンパイルで以下のようなエラー

SQL5011  30     108   桁  60  ホスト構造配列 RESULT が定義されていないか,または使用できない。

LIKERECをEXTNAMEで外部参照しても同じ結果です。


以下は、V5R4 ILE-RPG解説書のLIKERECから引用。

LIKEREC は、2 番目の任意指定パラメーターを使用できます。このパラメーターはレコードのどのフィールドをデータ構造に入れるかを指定します。これには以下のものが含まれます。

    • *ALL 外部レコードのすべてのフィールドが抜き出されます。
    • *INPUT すべての入力可能フィールドが抜き出されます。(これはデフォルトです。)
    • *OUTPUT すべての出力可能フィールドが抜き出されます。
    • *KEY キー・フィールドが、キーがDDS のK 指定に定義されている順番に抜き出されます。



上記によるとデフォルトは「*INPUT」との事。
自分の認識「READ/UPDATE = *INPUT」「WRITE = *OUTPUT」「KLIST = *KEY」*ALLは使わない。
こんな感じです。でも不思議とD仕様書を以下の様に、LIKERECの第二引数を省略するとSQLのプリコンパイルが出きるんですよ。これって何?確かにINPUTもするし、Result SetsでOUTもするけど、その関係で...?でも省略は*INPUTのハズ。どうにも解らない。誰か詳しい人教えて下さい。

D result          DS                  dim(ITEM_Row_Max)               
D                                     LIKEREC(ITEMR)                  

db2cli.iniじゃなくて構成アシスタントで出来る

以前書いたこの記事で、トランザクション分離レベルの指定をdb2cli.iniでなんて書いてあったのですが、構成アシスタントの「CLI設定」で簡単に出来たので今更ながら補足です。

  • 構成アシスタントを開く
  • 設定したいインスタンスの横を右クリックで「CLI設定」を選択

  • 設定タブを選択

  • <追加>ボタンをクリック
  • 一覧から「TXNIsolation」パラメータを選択

  • 適宜分離レベルを選択
  • <適用>ボタンをクリック

以上です。簡単ですね。

今年のShizuDevはJavaScriptで行きます

久々のブログ更新です。
今年のShizuDev(静岡Developers勉強会)は、JavaScriptの読書会を行います。
栄えある第1回は、富士のコミュニティFで開催です。自分は今回も"つけナポリタン"の店を開拓しますw。
課題図書は『JavaScript: The Good Parts』です。普段JavaScriptのキモを抑えずに、使ってしまっている自分がいたりします。(まぁそんなに使ってはいないのですが...。:-P)
今ホットなHTML5などにも繋がるので、初心にかえりJSを学び直す、良い機会かと思います。
相変わらずスピーカーは、参加者で持ち回りですが、自分を含めよく解っていない人も、結構いたりするので、気軽に参加して下さい。
積極的にスピーカーをやって頂くというのもモチロン大歓迎です。
ぜひShizuDevグループにもご参加下さい。→ 静岡Developers勉強会 Google グループ

JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス

JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス

開催要項

  • 日 時 : 2011年2月12日(土) 13:00〜17:30
  • 場 所 :富士市民活動センター・コミュニティF ( http://com-f.net/index.html )
  • 地 図 : http://goo.gl/maps/LUkv
  • 定 員 : 15名
  • 費 用 : 1,000円 (学生・未成年無料)
  • 持ち物 : パソコン、課題図書
  • 課題図書: JavaScript: The Good Parts (ISBN-10: 4873113911)※各自事前購入
  • 環境  : JavaScriptのコーディング用エディタ及び動作確認用webブラウザ
  • 範 囲 : 1〜3章
  • 担 当 : おおかわさん
  • 懇親会 : 会場未定 18:00〜 (※締切は開催日前日の17:00迄)
  • 懇親会費: 一般 4,000 円、学生・未成年 2,000 円 程度の予定
  • 申し込み: http://bit.ly/ShizuDevJS01Entry

主な交通手段

  • JR・吉原→岳南鉄道(5分程度)→吉原本町
  • JR・富士駅→バス→吉原中央駅
  • JR新幹線・新富士駅→バス→吉原中央駅

Haskell読書会を振り返って

一年に渡るShizuoka Developpers勉強会のHaskell読書会が、先週の土曜日に最終章を迎えました。
新たな仲間が出来、Haskellという新たな言語に出会い、一年を振り返ると、感慨深いものがあります。
運営にあたっては、自分の力不足を、勉強会メンバーに助けられた事も多々あり、この場を借りお礼をさせて頂きます。
来年度は、Java Scriptの読書会を行う事になりました。もしかしたら?台湾合宿?何て話も出たりw。課題図書は、Java Script Good Partsです。
来年のShizuDevも、初心者でも全然オッケーな、気軽に楽しめる勉強会を目指して行きたいと思っています。
サイトのリニューアルや新たなグループの立ち上げも年内には準備する予定です。
来年もShizuDev宜しくお願いします。

Zend Server for i5 CE で複数のインスタンスを動かす

随分ご無沙汰のブログですが久々にアップです...。
「Zend Server for i5 CEでphp.iniの設定変えて別インスタンスを起動する事って、出来なくなったのかね?」なんていう、Twitterでのやりとりがありました。「Zend Server(※以下ZS)ではどうよ?」という興味から少し調べてみました。
そもそも、Zend Core(※以下ZC)でさえやった事がなかったのですが、ZC時代は、IHS(IBM HTTP Server)に対してリバースプロキシをしていたのですが、ZSになりIHSに対して直接FasgCGIモジュールとして動作するようになりました。ZC時代はアパッチを含んでいたので、そのデーモンを別途起動するだけなんでしょうと勝手に推測。
ZSは「IHSのインスタンス新たに作って、設定ファイルコピればいいんじゃね?」と思ったので検証しました。試す場合には自己責任でお願いします。
前提としては、ドキュメントルートを共用する場合を想定して、行いました。

動作環境
    • IBMi V5R4M0
    • Zend Server for i5 CE 5.0.2 (PHP 5.3)

IHSインスタンスの作成

IHSのインスタンスを作成するには、IHSの管理画面にアクセスします。管理画面は、STRTCPSVR *HTTP の*ADMINインスタンスが起動されている必要があります。手順は以下の通りです。

■手順のイメージ





インスタンスが出来上がると下の図のようになります。

php.iniの設定

既存のphp.iniをコピーして、新たに作成したインスタンス(この場合はZENDSVR2)用のphp.iniを作成します。

cp -prh /usr/local/zenssvr/etc /usr/local/zendsvr/etc2


HTTPの設定

既存のconfディレクトリをコピーして、httpd.confとfastcgi.conf設定を新たに作成したインスタンス用に変更します。

cp -prh /www/zendsvr/conf /www/zendsvr/conf2

httpd.confのリッスンポートを変更します。デフォルトは10088です。

fastcgi.confの「SetEnv="PHPRC=xxxxx"」で設定されている。php.iniを読み取るリソースディレクトリの設定を変更します。これは先のphp.iniをコピーしたディレクトリになります。この場合は、"/usr/local/zendsvr/etc2"になります。FastCGIについてあまり詳しくないのですが、Apacheの"PHPIniDir"の指定で任意のファイル名を指定できるのとは違い、php.iniのファイル名は決まっている?様です。FastCGIについて...

IHSインスタンスの起動

IHSインスタンスを起動します。これは管理画面でも出来て起動パラメータを指定できるのですが、うまくいきませんでした。自分のログインしたユーザーがCCSID5026だったからかもしれません。後日5035で検証してみます。
※追記 5035だと起動できました。CCSIDには注意しましょう。ちなみに構成やポートの表示は空気読んでくれません。
とりあえず、5250でSTRTCPSVR *HTTP インスタンス名 -f /www/zendsvr/conf2/httpd.confで、IHSインスタンスを起動する事が出来ます。

ジョブの実行状態確認した様子 

動作確認

こんな感じで、別インスタンスで起動しました。ZENDSVRサブシステム(i5コマンドやその他機能)の検証はとれていないので、課題としてその辺りを検証する必要がありますね。

IHSの管理画面について

IHSの管理画面は強制的に、アプリケーションディレクトリconfを見ている様で、ポートや設定は下記の図の様に正しく使えなくなります。そもそも何でconf決め打ちなんだろ?これだと管理画面として使えないので、ドキュメントルート共用したいだけなら、リンク貼ったほうが管理画面はそのまま使えて良いかなとも思うし。ただこの管理画面の設定表示は、includeとかするとエラー扱いになったりで個人的感想としては、「もう一歩なんだけどなぁ」と言った感じです。