Blog

  • GL_USEGLU 環境変数のTips

    環境変数 GL_USEGLU の豆知識。

    CLIENT_LOCALEを UTF-8 ベースのロケールや、GB18030-2000のロケールにセットして
    Informix 4GL のフルスクリーン・アプリケーションを動かす場合、環境変数GL_USEGLUを1
    に設定しないと画面が崩れます。

    GL_USEGLUは、Informixに組み込まれているIBM GLUライブラリー ( Unicodeサポートのた
    めにIBMが開発した汎用ライブラリー)を使用するか否かを指定する環境変数です。この環
    境変数を設定してあると、Informixは、GLSライブラリーではなく、IBM GLU ライブラリーを
    使って文字操作の処理を行います。IBM GLUライブラリーを使用すると、Unicodeで決めら
    れている並べ替え順序規則などを使用できるようになります。

    Client SDKで提供されているAPIのレベルでは、Informixが以前から提供しているGLS
    ライブラリーと、IBM GLUライブラリーのどちらを使用しても最低限の機能を使用することがで
    きます。なので、GL_USEGLUは、UNICODE準拠の並べ替え規則などを必要としないので
    あれば必須ではありません。dbaccess等では正常なのに、4GLアプリだとおなしくなるとかの場合など、これが原因の場合が多いです。

    Informix 4GL ( .. その他テキストベースのフルスクリーンアプリケーション ) のフルスクリーン画面は、IBM GLUライブラリーを使用しないと、UnicodeやGB18030ベースのロケールで画面が崩れてしまいますので注意が必要です。

    環境変数はコンパイル時にも設定されている必要が有ります。4GL のフルスクリーン・アプリケーションについては、GL_USEGLU を1に設定した状態で再コンパイルする必要があります。

  • Informixでの通信Logの取得方法

    Informixでの通信Log取得方法

    1.設定方法

    環境変数 SQLIDEBUG に、

        2:<ファイル名> 

    の要領で値をセットした上でクライアントアプリケーションを動かします。
    上記で指定されたファイル名(厳密には、これに一意のidを追加したもの ) の中に
    バイナリー形式でクライアント・サーバー間の通信内容が記録されます。

    Windows の ODBC, OLEDB などのアプリケーションの場合、上記環境変数を
    システム環境変数として設定しておく必要がある場合が有ります。 ( コマンドラインの
    セッション毎に設定された環境変数をアプリケーションが見ていないようなケース )

    2.内容の見方

    この内容は、Informix Dynamic Server に含まれる、

        sqliprint ( Unix / Linux ) 
        sqliprt.exe ( Windows ) 

    で表示されます。

    Windows ですと、例えば、

        set SQLIDEBUG=2:c:/temp/debugfile 

    のように設定します。

    表示は、

        sqliprint /tmp/debugfile_21423 
        ( Unix 上での実行例。ファイル名は例です。このように末尾に数値がつきます ) 

    です。

    注意!:内容の詳しい読み方は IBM ( Informix ) 門外不出です。
    が、送信内容の違いの比較程度には使用可能。
    本件は、正式なサポートが受けれない方法なので、IBM社等へ正式のルートで
    問い合わせる事は注意が必要(普通は受け付けてくれない)。

  • 富士通のUNIXサーバ事業撤退

    2022年2月14日に富士通のサイトに掲載された資料によると、富士通はメインフレームとUNIXサーバーの各事業から撤退を決めた。2029年度販売終息・2034年度保守終了となる。

    いずれも予想していた事で有るが、個人的にはUNIXサーバーからの撤退が大きなインパクトを感じる。スパコンが 京->富岳 になる時、CPUのアーキテクチャを SPARC->ARM とした時点で遠くないとは覚悟していたが、SolarisOS で(正確には、SunOS(SolarisOSの前で、CPUも68000系)だった頃)UNIXの基礎を学んだ身としては、大きな時代の移り変わりを感じる。

    最近ではLinuxとかが中心で、SolarisOSに触れる事も少なくなったけど、何社かお客さんが残っているので、どうするか?を相談しないと・・・・

    https://pr.fujitsu.com/jp/news/2022/02/14-1.html

    https://www.fujitsu.com/jp/products/computing/servers/unix/sparc/concept/roadmap/

  • Bash の動作時の注意事項

    bash の動作時の注意事項

    京都大学のスパコンのファイルが大量(77TBらしい)に削除されたことが話題になっている。

    ”bash は、シェルスクリプトの実行中に適時シェルスクリプトを読み込みます。この挙動による副作用を認識できておらず、実行中のスクリプトが存在している状態でスクリプトの上書きによりリリースしてしまったことで、途中から修正したシェルスクリプトの再読み込みが発生”(ネット記事から引用) が原因として公開されているが、これ、以外とこの動作に対する認識が無い。

    要は、バイナリ等の実行と異なり、実行中でもスクリプトの変更が反映される場合が有る(実行時に逐次最新を読み込んで動くような動作(なので、何処まで実行されているか?によって反映されるかどうがが変わる)をする)事が異なります。

    UNIX系のOSでは、比較的常識ですが、つい忘れる。自戒を込めての投稿です。

    ※:根本的には、顧客の環境でメンテ作業(多分)を実施した時に、最後まで動作を監視していない事が問題。43時間もファイルが削除され続けた事に気づかないとか有り得ん!(やりがちですけど)

  • コロナウイルス関連の分析メモ

    コロナウイルス関連の分析メモ

    色んな数値が有ると思いますが、シンプルに傾向が見えないか?との事で作成した物。なんとなく、傾向が見えるように思えます。

    2022/8/6までのデータで更新。第7波がピークに達したように見えるが、頭打ちにようにも見える。検査も含め、医療体制他が限界で頭打ちなのか?

    直近(2022/4/18 時点情報で更新)。沖縄はピークアウト後ジワジワと増えている(第7波か?)ように見える。全国的にも下げ止まりと均質化が進んでいる。首都圏とか若干減少傾向だが、地方(今まで感染が進んでいない地域)が増えている。大阪と東京地区が均等化してきた。検査が追いついていないのでは?(検査の陽性率は依然35%前後。通常ではあり得ない!)

    以下は、2021年末頃の傾向分析。

     ①2021/12/6の週が底。ジワジワと上向きに転じているように見える。

     ②オリンピック近辺(7/19の週とか)で、患者数が増えているのに検査数が減少している。休みが多くなった事も影響しているのだと思うが、その後の感染爆発の要因の一つに見える。

    2022/1/12時点のデータで最新化。年末/年始の検査数激減後、感染爆発が始まった。(P2が直近の詳細)

  • うるう年、うるう日のチェック処理Tips

    オリンピック(夏季)の年はうるう年と認識して(東京オリンピックは1年延びたので異なりますが)対応していれば大体は大丈夫ですが、コンピュータの世界では、過去や未来の日付を扱う事が有るので、2024年に向けて、うるう年、うるう日の処理を確認するTipsをメモします。

    <そもそもの基礎知識>

    うるう年は、西暦の年を4で割れればうるう年です。ただし、以下の例外が有ります。

     a)年が100で割り切れるが400で割り切れない年はうるう年で無い。

    これは、2000年はうるう年ですが、2100年とか2200年はうるう年で無い事を示しています。知識として覚えておく必要が有ります。(常識と思っていると、意外に知らない人がいます)

    <日付項目の対象を抽出する場合>

    日付を扱っている(うるう年のチェック確認を実施する)対象を洗い出す上での留意点です。一つの手段で無く、複数で実施して漏れなく洗い出す事が肝要。

     a)ドキュメント(機能仕様書、I/F仕様書等)から洗い出す。<-完全で無い事が多いのでこれのみに頼ってはいけない。

     b)ソースコード、定義ファイル(画面や帳票、iniファイル等)等から、日付項目(と思われる)箇所を、機械的に洗い出す(検索等)。それらしい名称等で!。

     c)固定値をセットしているとか、うるう年をハードコーディングしているとかを洗い出す。

     d)うるう年の判断に使用しているライブラリや共通関数等を洗い出す。バージョンも含め。

    <有りがちなトラブル>

    有りがちな事例を何パターンか!。

     a)年を4桁で持っていれば良いが、1桁とかでしか持っていない場合に、2010を足して判断。->2022年を”2”で保持。2010を足して2012年として計算した為、うるう年と判断した。<-同じロジックが2010年代は問題無く動いていて見過ごした。

     b)ライブラリの仕様変更で判断が変わる。->例えば、VisualC++は、2005を境に仕様が変わった。

     c)1年前の日付を求めるのに、単純に年から-1を行う。うるう日を基準とすると、実在しない日になる。

    <日付計算等での確認事項>

     a)うるう日(2/29)をまたぐ日数計算が正しく行われる事。->2020/2/28~2020/3/2 4日間。2021/2/28~2021/3/2 3日間等。

     b)うるう年の2月の末日は29日で有る事。

     c)うるう年の日数は366日として処理される事。<-1年間の日数が固定で無い事。同様に、うるう年の2月は29日として処理される事も要注意。

     d)うるう年の2/29の前後判断が正しい事。<-2/28 は前日(or過去日)、3/1 は翌日(or未来日)等。

     e)うるう年の365日目、366日目、及び367日目がそれぞれ、12/30、12/31、翌年1/1 として処理される事。

     f)うるう年の2/29、3/1 の曜日がそれぞれ正しい事。<-和暦変換を実施している場合は、和暦が正しい事も!

    <入出力の処理等>

     a)システムの立ち上げが、2/29を指定して可能な事。<-実在日をチェックしている場合は、2021/2/29 等(うるう年以外(実在しない日))を指定して立ち上げが出来ない事も。

     b)日付入力で、うるう年の2/29 が入力可能で、うるう年以外の2/29 が入力不可な事。

     c)帳票や画面等にうるう年の2/29 が正しく印刷(表示)される事。

     d)Logやジャーナルに、2/29 が正しく出力され、順番も正しい事。

     e)外部I/F(データのやりとり等)で、うるう年の2/29 が受取り/送信 可能で正しく処理される事。

    <運用その他>

     a)末日締めがうるう年の2/29 で実施可能な事。

     b)バックアップ等がうるう年の2/29 に取得可能で、且つ、回復可能な事。

     c)うるう年の2/29 を含んで日跨がりの処理が正しく実施出来る事。

    <その他のメモ>

     a)汎用品のDBとかを使用する限り、うるう年の2/29 が格納出来ないとかは発生しない。但し、明確なソート順を指定していない場合、並び順が変わる事が有る物が有る。

     b)実機テストを行う場合、業務日付(起動時に指定とか)のみで無く、システム日付(マシンのシステム日付とか、BIOSの日付とか、NTPサーバが返して来る日付とか)類も変更して確認をする事。<-ジャーナル付きファイルシステムの場合、安易に日付を戻すとファイルの不整合が発生する場合が有るので、使用環境を良く理解してテストを行う事。

  • onconfig 設定サンプル

    Ver12.10 での運用を想定してonconfig の設定サンプル。通常のRDB(販売管理等のオンラインとバッチ混在)での使用を想定している。

    設定パラメータデフォルト値設定値サンプル備考
    1ROOTNAMErootdbs複数インスタンスを起動する場合は一意名となるようにする方が良い
    2ROOTPATH$INFORMIXDIR/tmp/demo_on.rootdbs/DB/sys/online_root特に理由が無ければ絶対PATHが望ましい
    3ROOTOFFSET0RAWディバイスを指定する場合は設定が必要
    4ROOTSIZE60000012000000運用時に拡張が発生しないサイズとする
    5MIRROR01設定が望ましい
    6MIRRORPATH$INFORMIXDIR/tmp/demo_on.root_mirror/DB2/sys/online_root_mマスタ領域と別ディバイスへ配置が望ましい
    7MIRROROFFSET0RAWディバイスを指定する場合は設定が必要
    8PHYSFILE500002000000物理LOGサイズ。この例では2GBを指定している
    9PLOG_OVERFLOW_PATH$INFORMIXDIR/tmp/opt/informix/tmp特に理由が無ければ絶対PATHが望ましい
    10PHYSBUFF128512物理LOGのバッファサイズ。極端に大きくしない方が望ましい(クラッシュ時のデータ保護)
    11LOGFILES618この例では3倍としている
    12LOGSIZE10000500000ロングトランザクションを考慮してサイズを決定する
    13DYNAMIC_LOGS2動的ログ割り当てを行う(安定性を重視する場合は”1”に変更が望ましい)
    14LOGBUFF64512論理LOGのバッファサイズ。極端に大きくしない方が望ましい(クラッシュ時のデータ保護)
    15LTXHWM70通常はデフォルトで問題無い
    16LTXEHWM80通常はデフォルトで問題無い
    17MSGPATH$INFORMIXDIR/tmp/online.log/opt/informix/tmp/online.log特に理由が無ければ絶対PATHが望ましい
    18CONSOLE$INFORMIXDIR/tmp/online.con/opt/informix/tmp/online.con特に理由が無ければ絶対PATHが望ましい
    19TBLTBLFIRST0通常はデフォルトのサイズ利用で問題無い
    20TBLTBLNEXT0通常はデフォルトのサイズ利用で問題無い
    21TBLSPACE_STATS1表領域統計情報の収集なので通常はONのまま
    22DBSPACETEMP  一時表をDB領域外とする場合に指定する
    23SBSPACETEMP 一時表をSB領域外とする場合に指定する
    24SBSPACENAME SB領域を使用する場合に指定する
    25SYSSBSPACENAME SB領域を使用する場合に指定する
    26ONDBSPACEDOWN2管理者が関与可能ならデフォルトのままが望ましい
    27SERVERNUM011変更が望ましい。同一ノード内で重複しない値にする
    28DBSERVERNAME mother一意の名称を指定する
    29DBSERVERALIASES fatherエリアス名を指定する(未指定でも可)
    30FULL_DISK_INIT0通常は変更しない事(変更してもイニシャライズ後に”0”に戻る)
    31NETYPEipcshm,1,50,CPUsqlhostsの設定と合わせる
    32LISTEN_TIMEOUT60通常はデフォルト。アタックが懸念される環境では小さい値にする
    33MAX_INCOMPLETE_CONNECTIONS1024通常はデフォルト。アタックが懸念される環境では設定値変更を検討する
    34FASTPOLL1通常はデフォルト(OS環境に依存するパラメータ)
    35NUMFDSERVERS4運用時にモニタリングして値を設定する
    36NS_CACHEhost=900,service=900,user=900,group=900通常はデフォルト。障害時の迅速な切り替え等が必要な場合は変更を検討する
    37MULTIPROCESSOR012コア以上時は”1”に変更する
    38VPCLASScpu,num=1,noageまずはデフォルトで始める。運用状況をモニタリングして最適値を決める
    39VP_MEMORY_CACHE_KB0まずはデフォルトで始める。運用状況をモニタリングして最適値を決める
    40SINGLE_CPU_VP0通常はデフォルトのままとする
    41AUTO_TUNE1最初はデフォルト(自動調整構成)で始める。安定稼働が特に強く求められる場合は無効を検討する
    42#VPCLASS aio,num=1  設定変更する場合はコメントを外して調整する
    43CLEANERS84有効はディスクドライブ数を指定する(多くても余り悪影響は出ない)
    44AUTO_AIOVPS onconfig.stdには存在しない。VPCLASS aio の設定をする場合に変更を検討する
    45DIRECT_IO0通常はデフォルト。OS環境によっては、変更を検討する
    46LOCKS20000500000想定されるロック数を考慮して指定する。運用状況をモニタリングして最適値を決める
    47DEF_TABLE_LOCKMODEpage row行ロックを指定する。メモリに余裕が無ければ、page が望ましい
    48RESIDENT0サーバがDB専用ならデフォルトで検討する
    49SHMBASE0x10A000000L通常はデフォルト(OS環境に依存するパラメータ)
    50SHMVIRTSIZE326561422600運用時にモニタリングして値を設定する
    51SHMADD819240960運用時にモニタリングして値を設定する
    52EXTSHMADD 81928192運用時にモニタリングして値を設定する
    53SHMTOTAL0サーバがDB専用ならデフォルトで検討する
    54SHMVIRT_ALLOCSEG 0,30,3サーバがDB専用ならデフォルトで検討する
    55SHMNOACCESS サーバがDB専用ならデフォルトで検討する
    56CKPTINTVL300まずはデフォルトで始める。”30”以下には指定しない事
    57AUTO_CKPTS onconfig.stdには存在しない。通常は変更は必要としない
    58RTO_SERVER_RESTART0通常はデフォルトのままとする(無効のまま)
    59BLOCKTIMEOUT3600通常はデフォルトのままとする
    60CONVERSION_GUARD2通常はデフォルトのままとする(特殊な用途用)
    61RESTORE_POINT_DIR$INFORMIXDIR/tmp通常はデフォルトのままとする(特殊な用途用)
    62TXTIMEOUT300通常はデフォルトのままとする(2相コミットを使用する場合は変更を検討)
    63DEADLOCK_TIMEOUT60通常はデフォルトのままとする(分散トランザクションを使用する場合は変更を検討)
    64HETERO_COMMIT0通常はデフォルトのままとする(異機種間コミットを使用する場合は変更を検討)
    65TAPEDEV/dev/tapedev/DB_LOG/log/tapedevシンボリックリンクを作成して指定する
    66TAPEBLK32出力先をHDDにする場合は変更不要
    67TAPESIZE0出力先をHDDにする場合は変更不要
    68LTAPEDEV/dev/tapedev/DB_LOG/log/ltapedevシンボリックリンクを作成して指定する
    69LTAPEBLK32出力先をHDDにする場合は変更不要
    70LTAPESIZE0出力先をHDDにする場合は変更不要
    71BAR_ACT_LOG$INFORMIXDIR/tmp/bar_act.logOn-Barを使用する場合に変更を検討
    72BAR_DEBUG_LOG$INFORMIXDIR/tmp/bar_dbug.logOn-Barを使用する場合に変更を検討
    73BAR_BEBUG0On-Barを使用する場合に変更を検討
    74BAR_MAX_BACKUP0On-Barを使用する場合に変更を検討
    75BAR_RETRY1On-Barを使用する場合に変更を検討
    76BAR_NB_XPORT_COUNT20On-Barを使用する場合に変更を検討
    77BAR_XFER_BUF_SIZE31On-Barを使用する場合に変更を検討
    78RESTARTABLE_RESTOREONOn-Barを使用する場合に変更を検討
    79BAR_PROGRESS_FREQ0On-Barを使用する場合に変更を検討
    80BAR_BSALIB_PATH On-Barを使用する場合に変更を検討
    81BACKUP_FILTER On-Barを使用する場合に変更を検討
    82RESTORE_FILTER On-Barを使用する場合に変更を検討
    83BAR_PERFORMANCE0On-Barを使用する場合に変更を検討
    84BAR_CKPTSEC_TIMEOUT15On-Barを使用する場合に変更を検討
    85DD_HASHSIZE31まずはデフォルトで始める。運用状況をモニタリングして最適値を決める
    86DD_HASHMAX10まずはデフォルトで始める。運用状況をモニタリングして最適値を決める
    87DS_HASHSIZE31まずはデフォルトで始める。運用状況をモニタリングして最適値を決める
    88DS_POOLSIZE127まずはデフォルトで始める。運用状況をモニタリングして最適値を決める
    89PC_HASHSIZE31まずはデフォルトで始める。運用状況をモニタリングして最適値を決める
    90PC_POOLSIZE127まずはデフォルトで始める。運用状況をモニタリングして最適値を決める
    91PRELOAD_DLL_FILE ユーザ定義ルーチンが有る場合は指定する
    92STMT_CACHE0SQL文のキャッシュ機能を使用する場合に変更を検討
    93STMT_CACHE_HITS0SQL文のキャッシュ機能を使用する場合に変更を検討
    94STMT_CACHE_SIZE512SQL文のキャッシュ機能を使用する場合に変更を検討
    95STMT_CACHE_NOLIMIT0SQL文のキャッシュ機能を使用する場合に変更を検討
    96STMT_CACHE_NUMPOOL1SQL文のキャッシュ機能を使用する場合に変更を検討
    97USEOSTIME0小数点以下の秒数を必要とする場合に指定する
    98STACKSIZE64ユーザ定義ルーチンが有る場合は変更を検討する
    99ALLOW_NEWLINE0通常はデフォルトのままとする(分散問合せを使用する場合は変更を検討)
    100USELASTCOMMITTEDNONEonconfig.stdには存在しない。通常は変更は必要としない
    101FILLFACTOR90通常はデフォルトのままとする(大規模テーブルの場合は変更を検討)
    102MAX_FILL_DATA_PAGES0通常はデフォルトのままとする(大規模テーブルの場合は変更を検討)
    103BTSCANNERnum=1,threshold=5000・・・・通常はデフォルトのままとする(頻繁に大量のデータ削除を行う場合は変更を検討)
    104ONLIDX_MAXMEM5120通常はデフォルトのままとする(頻繁に大量の更新処理を行う場合は変更を検討)
    105MAX_PDQPRIORITY1000DSS問合せをしない(WGではサポートされない)
    106DS_MAX_QUERIES DS関連の指定値は相互に関連する。指定する場合はマニュアルを参照の事
    107DS_TOTAL_MEMORY 同上
    108DS_MAX_SCANS1048576同上
    109DS_NONPDQ_QUERY_MEM256同上
    110DATASKIP 通常運用では指定しない(使用には注意が必要なパラメータ)
    111OPTCOMPIND2コストベースを指定。古いVerからの継承を優先する場合はルールベースへ変更を検討する
    112DIRECTIVES1有効とする(実際にオプティマイザディレクティブの機能を使用しない場合でも有効で不具合は発生しない)
    113EXT_DIRECTIVES0オフのままとする
    114OPT_GOAL-1FIRST ROWSを優先(大量検索で最初の表示を優先するとか)する場合は変更を検討する
    115IFX_FOLDVIEW0オフのままとする。特定の処理で性能改善が必要となる場合は変更を検討する
    116AUTO_REPREPARE onconfig.stdには存在しない。通常は変更は必要としない
    117AUTO_STAT_MODE onconfig.stdには存在しない。通常は変更は必要としない
    118STATCHANGE10UPDATE STATISTICS の自動モードを有効にした場合に変更を検討する
    119USTLOW_SAMPLE01UPDATE STATISTICS の実行速度を優先する。データ量が多くない場合は変更しない
    120BATCHEDREAD_TABLE1通常はデフォルトのままとする(圧縮表やページを上回る行等の場合は変更を検討)
    121BATCHEDREAD_INDEX1通常はデフォルトのままとする(変更を必要とする事はほとんど無い)
    122EXPLAIN_STAT1 通常はデフォルトのままとする(変更を必要とする事はほとんど無い)
    123#SQLTRACE””通常はデフォルトのままとする(解析等を行う場合以外では設定しない)
    124#DBCREATE_PERMISSIONinformix通常はデフォルトのままとする(細かく権限を管理する場合に変更を検討する)
    125#DB_LIBRARY_PATH ””外部モジュールを使用する場合に指定する
    126IFX_EXTEND_ROLE1通常はデフォルトのままとする(変更を必要とする事はほとんど無い)
    127SECURITY_LOCALCONNECTION””通常はデフォルトのままとする(ローカル接続の権限を管理する場合に変更を検討する)
    128UNSECURE_ONSTAT””通常はデフォルトのままとする(onstatコマンドをDBSA以外のユーザへ解放する場合に変更を検討する)
    129ADMIN_USER_MODE_WITH_DBSA””通常はデフォルトのままとする(informix以外のユーザを管理者に追加する場合に変更を検討する)
    130ADMIN_MODE_USERS””通常はデフォルトのままとする(informix以外のユーザを管理者に追加する場合に変更を検討する)
    131SSL_KEYSTORE_LABEL””通常はデフォルトのままとする(DBへの接続にSSLを使用する場合は設定が必要)
    132PLCY_POOLSIZE127通常はデフォルトのままとする。運用状況をモニタリングして最適値を決める
    133PLCY_HASHSIZE31通常はデフォルトのままとする。運用状況をモニタリングして最適値を決める
    134USRC_POOLSIZE127通常はデフォルトのままとする。運用状況をモニタリングして最適値を決める
    135USRC_HASHSIZE31通常はデフォルトのままとする。運用状況をモニタリングして最適値を決める
    136SQL_LOGICAL_CHAROFF通常はデフォルトのままとする。UTF-8などを使用する場合などでは設定を検討する
    137ENCRYPT_HDR””通常はデフォルトのままとする(HDR機能を使用する場合は”1”が望ましい)
    138ENCRYPT_SMX””通常はデフォルトのままとする(HDR機能を使用する場合は”1”が望ましい)
    139ENCRYPT_CDR0通常はデフォルトのままとする(ER機能を使用する場合は変更を検討する)
    140ENCRYPT_CIPHERS””通常はデフォルトのままとする(ER機能を使用する場合は変更を検討する)
    141ENCRYPT_MAC””通常はデフォルトのままとする(ER機能を使用する場合は変更を検討する)
    142ENCRYPT_MACFILE””通常はデフォルトのままとする(ER機能を使用する場合は変更を検討する)
    143ENCRYPT_SWITCH””通常はデフォルトのままとする(ER機能を使用する場合は変更を検討する)
    144CDR_EVALTHREADS1,2通常はデフォルトのままとする(ER機能を使用する場合は変更を検討する)
    145CDR_DSLOCKWAIT5通常はデフォルトのままとする(ER機能を使用する場合は変更を検討する)
    146CDR_QUEUEMEM4096通常はデフォルトのままとする(ER機能を使用する場合は変更を検討する)
    147CDR_NIFCOMPRESS0通常はデフォルトのままとする(ER機能を使用する場合は変更を検討する)
    148CDR_SERIAL0通常はデフォルトのままとする(ER機能を使用する場合は変更を検討する)
    149CDR_DBSPACE””通常はデフォルトのままとする(ER機能を使用する場合は変更を検討する)
    150CDR_QHDR_DBSPACE””通常はデフォルトのままとする(ER機能を使用する場合は変更を検討する)
    151CDR_QDATA_SBSPACE””通常はデフォルトのままとする(ER機能を使用する場合は変更を検討する)
    152CDR_SUPPRESS_ATSRISWARN””通常はデフォルトのままとする(ER機能を使用する場合は変更を検討する)
    153CDR_DELAY_PURGE_DTC””通常はデフォルトのままとする(ER機能を使用する場合は変更を検討する)
    154CDR_LOG_LAG_ACTIONddrblock通常はデフォルトのままとする(ER機能を使用する場合は変更を検討する)
    155CDR_LOG_STAGING_MAXSIZE0通常はデフォルトのままとする(ER機能を使用する場合は変更を検討する)
    156CDR_MAX_DYNAMIC_LOGS0通常はデフォルトのままとする(ER機能を使用する場合は変更を検討する)
    157CDR_TSINSTANCEID0通常はデフォルトのままとする(ER機能を使用する場合は変更を検討する)
    158CDR_MAX_FLUSH_SIZE50通常はデフォルトのままとする(ER機能を使用する場合は変更を検討する)
    159CDR_AUTO_DISCOVER0通常はデフォルトのままとする(ER機能を使用する場合は変更を検討する)
    160CDR_MEM0通常はデフォルトのままとする(ER機能を使用する場合は変更を検討する)
    161DRAUTO0通常はデフォルトのままとする(HDR機能を使用する場合は変更を検討する)
    162DRINTERVAL30通常はデフォルトのままとする(HDR機能を使用する場合は変更を検討する)
    163HDR_TXN_SCOPENEAR_SYNC通常はデフォルトのままとする(HDR機能を使用する場合は変更を検討する)
    164DRTIMEOUT30通常はデフォルトのままとする(HDR機能を使用する場合は変更を検討する)
    165HA_ALIAS””通常はデフォルトのままとする(HDR機能を使用する場合は設定を検討する)
    166HA_FOC_ORDERSDS,HDR,RSS通常はデフォルトのままとする(HDR機能を使用する場合は変更を検討する)
    167DRLOSTFOUND$INFORMIXDIR/etc/dr.lostfound通常はデフォルトのままとする(HDR機能を使用する場合は変更を検討する)
    168DRIDXAUTO0通常はデフォルトのままとする(HDR機能を使用する場合は変更を検討する)
    169LOG_INDEX_BUILDS””通常はデフォルトのままとする
    170SDS_ENABLE””通常はデフォルトのままとする(SD機能を使用する場合は変更を検討する)
    171SDS_TIMEOUT20通常はデフォルトのままとする(SD機能を使用する場合は変更を検討する)
    172SDS_TEMPDBS””通常はデフォルトのままとする(SD機能を使用する場合は変更を検討する)
    173SDS_PAGING””通常はデフォルトのままとする(SD機能を使用する場合は変更を検討する)
    174SDS_LOGCHECK10通常はデフォルトのままとする(SD機能を使用する場合は変更を検討する)
    175SDS_ALTERNATENONE通常はデフォルトのままとする(SD機能を使用する場合は変更を検討する)
    176SDS_FLOW_CONTROL””onconfig.stdには存在しない
    177UPDATABLE_SECONDARY0通常はデフォルトのままとする(SD機能を使用する場合は変更を検討する)
    178FAILOVER_CALLBACK””通常はデフォルトのままとする(HDR機能を使用する場合は変更を検討する)
    179FAILOVER_TX_TIMEOUT0通常はデフォルトのままとする(HDR機能を使用する場合は変更を検討する)
    180TEMPTAB_NOLOG0通常はデフォルトのままとする
    181DELAY_APPLY””通常はデフォルトのままとする(HDR機能を使用する場合は変更を検討する)
    182STOP_APPLY0通常はデフォルトのままとする(HDR機能を使用する場合は変更を検討する)
    183LOG_STAGING_DIR””通常はデフォルトのままとする(HDR機能を使用する場合は変更を検討する)
    184RSS_FLOW_CONTROL0通常はデフォルトのままとする(HDR機能を使用する場合は変更を検討する)
    185ENABLE_SNAPSHOT_COPY””通常はデフォルトのままとする
    186SMX_COMPRESS0通常はデフォルトのままとする(HDR等を使用する場合は変更を検討する)
    187SMX_PING_INTERVAL10通常はデフォルトのままとする(HDR等を使用する場合は変更を検討する)
    188SMX_PING_RETRY6通常はデフォルトのままとする(HDR等を使用する場合は変更を検討する)
    189CLUSTER_TXN_SCOPESERVER通常はデフォルトのままとする(HDR等を使用する場合は変更を検討する)
    190ON_RECVRY_THREADS14VPSの指定値により決定する
    191OFF_RECVRY_THREADS10VPSの指定値により決定する
    192DUMPDIR$INFORMIXDIR/tmp設定ファイルとは別媒体の指定が望ましい
    193DUMPSHMEM1出来るだけ変更しない運用とすること
    194DUMPGCORE0OS環境によっては”1”とする方が良い(Windowsでは無意味)
    195DUMPCORE0OS環境によっては”1”とする方が良い(Windowsでは無意味)
    196DUMPCNT1障害解析が必要となる場合は数を変更する
    197ALARMPROGRAM$INFORMIXDIR/etc/alarmprogram.sh/opt/informix/etc/log_full.sh特に理由が無ければ絶対PATHが望ましい
    198ALRM_ALL_EVENTS0ログをイベントトリガ等に使用する場合は変更を検討する
    199STORAGE_FULL_ALARM600,3システムの特性により変更を検討する
    200SYSALARMPROGRAM$INFORMIXDIR/etc/evidence.sh機能を使用する場合は絶対PATHで指定する(Windowsではそのままでは動かない)
    201RAS_PLOG_SPEED22727自動更新される(サポート用のパラメータ)
    202RAS_LLOG_SPEED0自動更新される(サポート用のパラメータ)
    203EILSEQ_COMPAT_MODE0出来るだけ変更しない運用とすること
    204QSTATS0必要時以外は指定しない事が望ましい
    205WSTATS0必要時以外は指定しない事が望ましい
    206USERMAPPINGOFFシステム全体のセキュリティポリシにより設定を検討する
    207SP_AUTOEXPAND1指定しても無条件に拡張が実行される訳では無い。安定稼働を最優先する場合は”0”にする事を検討する
    208SP_THRESHOLD0自動拡張を使用する場合は設定が望ましい
    209SP_WAITTIME30自動拡張を使用する場合は設定値の変更を検討する
    210AUTOLOCATE0onconfig.stdには存在しない
    211DEFAULTESCCHAR\出来るだけ変更しない運用とすること
    212#VPCLASS””3カ所にあるが有効なのは最初の指定のみで有る
    213MQSERVER””通常はデフォルトのままとする(MQメッセージ機能を使用する場合は設定する)
    214MQCHLLIB””通常はデフォルトのままとする(MQメッセージ機能を使用する場合は設定する)
    215MQCHLTAB””通常はデフォルトのままとする(MQメッセージ機能を使用する場合は設定する)
    216REMOTE_SERVER_CFG””システム全体のセキュリティポリシにより設定を検討する
    217REMOTE_USERS_CFG””システム全体のセキュリティポリシにより設定を検討する
    218S6_USE_REMOTE_SERVER_CFG0システム全体のセキュリティポリシにより設定を検討する
    219LOW_MEMORY_RESERVE0データの整合性を特に必要とするシステムでは設定を検討する(ロールバックが必ず実行される必要が有る等)
    220LOW_MEMORY_MGR0OSの動作を熟知している場合以外は指定しない事が望ましい
    221GSKIT_VERSION””暗号化やSSLを使用する場合は絶対パスで指定する
    222#VPCLASSjvp,num=1   3カ所にあるが有効なのは最初の指定のみで有る
    223JVPPROPFILE$INFORMIXDIR/extend/krakatoa/.jvpprops Javaを使用する場合に絶対PATHで指定する
    224JVPLOGFILE$INFORMIXDIR/tmp/jvp.log Javaを使用する場合に絶対PATHで指定する
    225JVPARGS-Dcom.ibm.tools.attach.enable=noJavaを使用する場合に指定する
    226JVPCLASSPATH$INFORMIXDIR/extend/・・・・・Javaを使用する場合に絶対PATHで指定する
    227BUFFERPOOLsize=2k,buffers=50000,lrus=8,・・・・・size=2k,buffers=250000,lrus=8,デフォルトでも良いがメモリに余裕が有ればバッファを増やす
    228AUTO_LRU_TUNING””0安定操作を優先させる場合は”0”を指定する
  • Informix Ver14.10の発表資料要約

    2019/5 時点での、14.10発表資料からの要点メモ。Ver12.10からの移行は注意が必要な内容が含まれる。若干、Linux環境下でのテスト版の動作検証結果も含めて記載する。

    1・現時点で提供されるプラットフォームが減少している。MACOS版の提供が無い。Solaris はintel版の提供が無い。SPARC版は提供される。
    2・Linux版は、カーネル 3.10.0-693 以降がサポート対象(基本的には)。但し、SUSE SLES 11 (カーネル 2.6.27)はサポート対象との記述が有るが、C-SDKのサポート対象には入っていない(誤記か?)。
    3・現時点で提供されるバイナリに、C-SDKは含まれない。今後、どうなるかは不明(元々、現状は、評価版との位置付け)。Verは4.50(IDS12.10は4.10)へバージョンアップされている。
    4・インストーラに変更がなされている。バイナリで提供される物が減少し、各エディションのライセンスインストーラが提供される。<-これは、複数のサーバ環境下では結構面倒になる。
    5・機能の個別削除や追加が容易になっている。ほとんどの場合、再インストールが不要となる。不具合パッチの提供等も同様と思われる。
    6・GLSで提供される言語に変更はない。
    7・ローリングアップデートの機能(DB領域をそのままでアップデートする)は提供されない。<-これは困るユーザが出るはず。
    8・管理ツールが Open Admin Tool -> Informix HQ へ変更となっている。全体の管理が出来るようにする予定と思われる。但し、現時点では全機能がリリースされていない。開発中。
    9・全体的にパフォーマンスの向上が図られている。特に、HDR、RSSについては向上している。分散環境下での利用は優位性がさらに高まった。
    10・DBの管理テーブル等は表面的には変更が無いが、内部のデータ管理等は変更されている可能性が高い。
    11・セキュリティ関連の向上が多い。インターネット上での利用を意識している。
    12・オンプレとクラウドの連携が容易になっている。例えば、バックアップやHDRのレプリカをクラウドへ取得するとかが容易。
    13・SQLの機能変更がある。スキーマで、日本語の使用が制限される可能性が有る。 <-日本語の定義自体は許容されている。
    14・ライセンス区分と制限が変更となっている。WGを使用しているユーザにとっては、リソースの制限が拡大している。
    15・今回の新バージョンにツール系の対応等は含まれて居ない。動向は不明。新C-SDKでのビルドバージョンが提供されるはず(2019/5/21時点では、提供されていない)。
    16・マニュアルは現時点で日本語の提供は無い。現時点では英語版のみ。<-これは、将来的にも期待出来ない可能性が高い。
    17・Ver12.10のdbexport結果を、Ver14.10でdbimport は問題無し。cp932 環境下での特殊文字等の振る舞いは、旧Verと同様。スキーマへの日本語も許容している。
    18・Ver7.50 I-SQL との接続は問題無し。特に不具合は感じられない。
  • cronの設定

    20年近く前に作成したメモ。現状でもほとんど変更が無いはずなので、健忘禄メモとして。

    cronの設定
    コマンドを自動実行してくれるcronの設定です。最近のディストリビューションでcronがインストールされないものはないと思います。ただ、ひょっとすると動いていないかもしれない(自分で止めていない限り動いていると思いますが)ので、ps -ax などでcronが動いているか確認してください。動いていない場合は

    /etc/rc.d/init.d/crond start
    で動かしてください。

    /etc/crontab
    cronのデフォルトの設定ファイルは/etc/crontabです。Vine2.5では以下のようになっています。

    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    HOME=/

    run-parts

    01 * * * * root run-parts /etc/cron.hourly
    02 4 * * * root run-parts /etc/cron.daily
    22 4 * * 0 root run-parts /etc/cron.weekly
    42 4 1 * * root run-parts /etc/cron.monthly

    最初の4行が環境設定になっています。

    SHELL
    /etc/passwordの記述に関係なく、強制的にここで定義されたシェルを使います。
    PATH
    PATHの設定です。
    MAILTO
    cronの実行結果をここで指定されたユーザー宛にメールで送ります。ユーザー名を空にするとメールを送信しません。ただし、MAILTOの記述自体をしないと、crontabファイルの所有者にメールを送ります(デフォルトではroot)。
    HOME
    cronを実行する際のホームディレクトリの設定です。

    run-parts以下がcronが実行するタスクになります。

    書式は、

    分 時 日 月 曜日 (ユーザー) コマンド

    です。(ユーザー)は通常必要ありません。

    01 * * * * root run-parts /etc/cron.hourly
    上記は、毎時1分にrootユーザー権限で「run-parts /etc/cron.hourly」を実行します。run-partsスクリプトは指定されたディレクトリ以下を全て実行するコマンドです。/etc/cron.~というディレクトリを見てみるといくつかのスクリプトがあると思います。

    タスクの登録
    自分で新たにタスクを登録するには、/etc/crontabに書いてもいいのですが、それだとrootでしか登録ができません(/etc/crontabの所有者がrootなので)。なので実際には別のファイルにタスクを書きます(何度も書きますが、/etc/crontabに直接書いてしまっても構いません)。

    タスクを記述するファイルはVine2.5の場合、「/var/spool/cron/ユーザー名」です。rootの場合、「/var/spool/cron/root」になります。emacs等のエディタでファイルを新規作成しても構いませんが、専用のコマンド「crontab」を使った方が楽だと(私は)思います。

    $ crontab -e
    とすると実行したユーザー用のファイルを新規作成して、編集できるようになります。デフォルトではviが起動します。

    記述する書式は、先ほども書きましたが、

    分 時 日 月 曜日 コマンド
    です。


    0~59で指定します。(ワイルドカード)も使用可能です。 時 0~23で指定します。(ワイルドカード)も使用可能です。

    1~31で指定します。(ワイルドカード)も使用可能です。 月 1~12で指定します。(ワイルドカード)も使用可能です。また、月の名前の最初の3文字で指定することもできます。jun、julなど。
    曜日
    0~7で指定します。(ワイルドカード)も使用可能です。0と7が日曜日で6が土曜日です。また、sun等の名前で指定することもできます。 コマンド cronが実行するコマンドです。当然実行可能なものでなければいけません。 日付、時間の部分は範囲指定が可能です。例えば1時、2時、3時なら、時間のフィールドに「1,2,3」と書く代わりに「1-3」と書けます。また、何分おき(あるいは何時間おき)という場合は「/」の後に書きます。2時間おきなら「*/2」です。「1,4,7,10」は「1-10/3」と書くこともできます。

    10分おきに特定のコマンドを実行するには、

    0,10,20,30,40,50 * * * * コマンド
    とします。またこれは、

    */10 * * * * コマンド
    と書くこともできます。

    注意として、書くフィールドは必ず左側から指定するようにしましょう。例えば、毎日1時にコマンドを実行しようとして

    • 1 * * * コマンド
      なんて書いてしまうと、毎日1時0分から1時59分まで1分おきにコマンドが実行されてしまいます。こういう場合は

    0 1 * * * コマンド
    などと「分」の部分も指定しましょう。これで毎日1時0分にコマンドが実行されます。

    1時間おきなら、

    0 */1 * * * コマンド
    としたいところですが、単に

    0 * * * * コマンド
    でも結果は同じです。

    cronは実行結果をメールで送ってきます。これが邪魔だと思ったら、「MAILTO=」を追加します。こうすると全ての実行結果が送られないようになります。特定の実行結果のみメールの送信を止めたい場合は、「コマンド > /dev/null 2>&1」としてください。

    crontab -e でタスクを登録したら、

    $ crontab -l
    としてちゃんと登録されているか確認しましょう。ついでに

    $ crontab -r
    とすると全てのタスクが削除されます。

    cronは1分おきに設定ファイルを監視しているのでタスクを登録してもcronの再起動をする必要はありません。ただし、監視は1分おきなので、「1時34分30秒」に「1時35分」に実行するタスクを登録してもcronは実行してくれません。これは「1時35分」に新たなタスクが登録されたとcronが認識するためです。

    もし、タスクが実行されなかったら、ログファイルを眺めてください。ログは「/var/log/cron」に出力されています。

  • 老化年齢の記事メモ

    老化を意識せざるをえない年齢になっているけど、米スタンフォード大学の研究結果が何カ所かでニュース化されていた。これによると、老化は一定の速度で進む訳ではない。34才、60才、78才の時、ピークを迎えるとの事(=この年齢前後で急激に老化が進むとの事か?)。タンパク質の分析による研究結果では。

    不惑(40才)、還暦(61才)、喜寿(77才) 等、昔の人の区切りとした年齢は人間の生理的な老化とよくリンクしているのかも?。厄年(大厄が42才(男性)33才(女性)、小厄が61才(男女とも))とも近い。

    下記のリンク先は記事の一つ。

    https://project.nikkeibp.co.jp/behealth/atcl/news/19/00106/?P=1