てぃーだブログ › Unofficial oninit blog

【PR】

  

Posted by TI-DA at

2023年12月02日

バージョンアップについて - 「チェックポイント」

以前のバージョンから最新(最近)のバージョンに移行する際、Informixの機能向上(一部「見直し」もあり)によりこれまでのパラメーター設定の考え方が通用しなくなってきているケースがいくつかあります。

簡単ですが、その一例として「チェックポイント」に関わるぱらめーたの変更について紹介します。

「チェックポイント」は、INFORMIXが「ライトバック( write back)」のキャッシュを一定の条件で物理ディスクに完全に同期させる処理のことです。

V10までは、チェックポイント処理の間は新たなディスク書き込み系の処理(SQL INSERT/UPDATE/DELETEを含む)がブロックされ(待たされる)ていました。チェックポイントが実行される際に物理ディスクに同期される対象となるデータ量をできるだけ減らすために、閾値 ( min_dirty, max_dirty)をできるだけ小さくしたり、定期的に強制的に実行されるチェックポイントの間隔を長めにしたり、という調整が必要でした。V9.21からは、SQL INSERT/UPDATE/DELETEなどのトランザクションのロールフォワード処理で復元可能なディスク書き込み(のダーティページ)についてはチェックポイント処理でのバッファプールから物理ディスクへの書き出しを省略することによりチェックポイント時の処理対象データ量を削減しチェックポイント中のブロック時間を短縮する実装(「ファジー・チェックポイント」)が導入されました。

しかしこれまでの方法ではチェックポイント処理によるブロックはある程度発生してしまう他、ファジー・チェックポイント処理の結果としてクラッシュリカバリーの所要時間が増える(従来であれば物理ログからのリカバリーだけで良かったケースでも論理ログを使用したロールフォワードリカバリーが必要になるなど)という問題がありました。

INFORMIX V11.10からは、従来のチェックポイントの実装を根本的に見直し物理ログ(バッファプールに書き込まれたページ変更の結果を物理ディスク内の特定の領域にリアルタイムに記録するしくみ)を活用してチェックポイント処理中にブロック時間がほとんど発生しないような実装になりました。

この新しい実装( 自動チェックポイント)では、チェックポイントの間隔などをINFORMIXが自動的に決定・調整します。ONCONFIGの"AUTO_CKPTS" ( またはその他いくつかの自動調整パラメータをまとめて制御する"AUTO_TUNE")というパラメーターを設定することにより新しいチェックポイントの実装が有効になります。"onstat -g ckp"の出力を確認すると、自動チェックポイントが有効かがわかります。出力の冒頭部分の"AUTO_CKPTS"がOnになっていれば有効です。

$ onstat -g ckp

IBM Informix Dynamic Server Version 12.10.FCxxYYY -- On-Line -- Up 00:00:14 -- zzzzzzzz Kbytes

AUTO_CKPTS=On RTO_SERVER_RESTART=Off

自動チェックポイントを使用するためには論理ログや物理ログのサイズが十分に確保されている必要があります。どの程度のサイズがあれば十分かは、バッファプールのサイズ、論理ログファイルが100%使用状態になるまでにかかる所要時間など多くの要素により左右されますが、これらのリソースが不足気味の場合、上記"onstat -g ckp"の出力末尾にガイドが表示されます。

以下の出力例では、「物理ログを最低 716800KBまで拡張しないとチェックポイント処理中にトランザクションがブロックされる可能性がある」旨のガイドが出力されています。
Based on the current workload, the physical log might be too small
to accommodate the time it takes to flush the buffer pool during
checkpoint processing. The server might block transactions during checkpoints.
If the server blocks transactions, increase the physical log size to
at least 716800 KB.  



2022年04月17日

JDBC driver

最近、最新版のJDBCドライバーを入手しようとして結構探したことがあったのでメモ。

JDBC 4.50などの新しいドライバーの入手先はマニュアルに記載されています。

https://www.ibm.com/docs/en/informix-servers/14.10?topic=started-obtain-jdbc-driver

こちらのURLから入手できるそうです。
https://mvnrepository.com/artifact/com.ibm.informix/jdbc

こんな感じで見つかりました。

(1) Versionを選び(2022/03/31現在の最新バージョンは 4.50.7.1 )、バージョン番号(リンク)をクリックする。
(2) 切り替わったページの”Repositories”の欄にある”Central”をクリックする。
(3) Central Repositoryページの、”URL”欄に記載のURLをクリックする。
(4) “com/” → “ibm/“ → “informix/“ → “jdbc/“ → バージョン(例えば “4.50.7.1/“)
  



2020年09月15日

HCL OneDB

今日、こんな製品情報を目にしました。

https://www.hcltechsw.com/wps/portal/products/onedb/home

https://help.hcltechsw.com/onedb/1.0.0.0/1infocenter/c_gettingstarted.html

DB管理者の名前があれだったり、DB-Access という名前の検索ツールがあったり、レプリケーションの名前がERだったり、コマンドラインの監視ツールが "onstat" だったり、調べると面白そうな気がします。

  


Posted by oninit at 19:53Comments(0)つぶやき

2020年04月03日

DBACCESS_COLUMNS

Informixの現行バージョン V14.10 ( V12.10 だと xC12 以後 )で、DBACCESS_COLUMNSという環境変数が使えるようになっているそうです。

dbaccessコマンドで SQLを実行しそれをリダイレクトして他のプログラムで処理したいときに役に立ちそうです。

dbaccessは、SQL実行結果の出力行の長さによって、列を横並びにしたり、それだと画面をはみ出しそうになると縦並びにしたり調整してくれます。
ただ、この調整はこれまで環境変数などでの制御ができなかったため、dbaccessの出力をパイプなどでシェルスクリプトや他の文字列処理コマンドに渡して処理するのが困難な場合がありました。

この環境変数を設定すると、dbaccess は、値に設定された桁数(半角1文字単位かな?)までは縦並び調整しないでSQL実行結果を出力するようになるみたいですね。

[tatsuom@goemon ~]$ dbaccess stores_demo sample.sql

Database selected.




customer_num 101
fname Ludwig
lname Pauli
company All Sports Supp
lies
address1 213 Erstwild Co
urt
address2
city Sunnyvale
state CA
zipcode 94086
phone 408-789-8075

1 row(s) retrieved.


Database closed.

[tatsuom@goemon ~]$ export DBACCESS_COLUMNS=1024
[tatsuom@goemon ~]$ dbaccess stores_demo sample.sql

Database selected.



customer_num fname lname company address1 address2 city state zipcode phone

101 Ludwig Pauli All Sports Supplies 213 Erstwild Court Sunnyvale CA 94086 408-789-8075

1 row(s) retrieved.


Database closed.
  


2019年03月25日

Informix version 14.10

最近 ( 2019/03月)の話しになりますが、Informixが久しぶりにメジャーバージョンアップしました。

最新版は version 14.10.xC1 ( 64bit 版なら x=F )です。

すでにマニュアルなども公開されており、いわゆる新機能はそちらを見ていただければとおもいます。

https://www.ibm.com/support/knowledgecenter/SSGU8G_14.1.0/com.ibm.po.doc/new_features_ce.htm

こちらでは、すぐにわかる大きな変化点をいくつかご紹介します。

1. MAC OS ( Intel x64 ) 版がふくまれていません
  今後どうなるかわかりませんが、GAのタイミングでは提供されていません。
2. Developer Editionのバイナリと、各エディション (EE, AEEなど )用のライセンスインストーラが提供されています。
3. Open Admin Toolにかわり、新しい管理ツールが同梱されています
  "informixhq"という名前の新しいツールが同梱されるようになりました。
  各インスタンス毎にinfomrixhqのエージェントを起動しておき、それぞれのエージェント
  を informixhqのサーバーが管理するような仕組みになっています。管理者は、informixhq
のサーバーに ブラウザーからアクセスして、モニタリングや管理を行います。


最後に更新してからしばらく時間が空いてしまいましたので、途中のバージョン 12.10各リリース
での新機能を含め近いうちにご紹介できればと思います。

  


Posted by oninit at 01:56Comments(0)Informixの情報源

2016年11月23日

Informixへのうるう秒(閏秒, leap second, leap seconds)の影響について

来年の元旦は、閏秒があるようです。

Informix とうるう秒の関連について、資料を探してみました。

http://www-01.ibm.com/support/docview.wss?uid=swg21696762
こちら、内部処理も含め具体的な説明がまとまってます。英語ですけど。

http://www.ibm.com/support/knowledgecenter/ja/SSGU8G_12.1.0/com.ibm.sqls.doc/ids_sqs_1494.htm
こちらは、Informixのオンラインマニュアルにある"utc_current"の説明です。DATETIME, INTERVALの各型に関わる算術演算ではOSがうるう秒をサポートしている場合にはうるう秒の調整を行うそうですが、具体的にどうなるのか調べてみたいところです。

http://www.ibm.com/support/knowledgecenter/ja/SSGU8G_12.1.0/com.ibm.sqls.doc/ids_sqs_1542.htm
おなじくTO_CHAR関数(Informix)の説明です。冒頭の英語の資料にもありますが、INFORMIXのDATETIMEなどのデータ形式では、秒はうるう秒が入ることを考慮して、0-59ではなく0-61までの値を許容するようになっているそうです。

ちなみに、DB2に関して英語の資料では、こんな内容の説明をしています...
http://www-01.ibm.com/support/docview.wss?uid=swg21697119
日本語の資料では、上記の説明を踏まえ、それでも出てきちゃった事象を追記してくれてます。
http://www-01.ibm.com/support/docview.wss?uid=swg21589759

以下の説明
「a) Point-in-Time (PIT) を指定したロールフォワードで、戻した 1 秒を指定できない」
はDB2やDBMS製品単体に限らず影響を考えておかないと、な内容ですね。

  


2016年01月20日

Informix V12.10.xC6

昨年末、Informix V12.10のインテリム・リリース V12.10.xC6が出荷開始されました。

その時点では、Mac OSX版が含まれておらず、Mac版としては V12.10.FC5が最新でした。
今年に入って(1/15ごろ?)Mac版の V12.10.FC6が公開されたようです。

http://www-01.ibm.com/support/knowledgecenter/api/content/nl/en-us/SSGU8G_12.1.0/com.ibm.relnotes.doc/notes/ifx_1210xc6/mach/ids_machine_notes_12.10.macosx64.html

マシンノートに記載されている最新OS対応状況へのリンク先が、まだ更新追いついていないようですが、10.10/10.11が正式なサポート対象になっているのか気になります。

私は気にせず使っていますが、Mac OSX上でひとつ気をつけた方が良さそうなことがあります。

Informixをインストールしたままの状態だと、「システムで使用可能な共有メモリーが足りない」とか言われてoninitがこけたりします。

そんなときは、上記リンク先のマシンノートにもあるとおり、こんな感じのコマンドを実行すれば良さげです。

( root で.... だと思う )
sysctl -w kern.sysv.shmmax=4398046511104

  


2015年12月12日

IP v6サポートの無効化

CentOS7上で INFORMIX 12.10.FC6をセットアップしていたのですが、soctcpのポートがバインドされるアドレスがIP v6のアドレスになっていて、IP v4のアドレス指定で接続出来ない、という状況に陥りました。

本質的な原因はこれから調べようと思いますが、マニュアルにこんな時の回避策の説明がありました。

http://www-01.ibm.com/support/knowledgecenter/SSGU8G_12.1.0/com.ibm.admin.doc/ids_admin_0198.htm?lang=ja

ユーザー informixでログインして、

touch $INFORMIXDIR/etc/IFX_DISABLE_IPV6

( INFORMIXがインストールされているディレクトリの etc サブディレクトリに、IFX_DISABLE_IPV6という名前の空のファイルを作る)

を実行すると、INFORMIXはポートを IP v6アドレスにバインドしなくなるようです。

個別のインスタンスのみに適用したい場合には、同じ名前の環境変数を設定することもできるそうです。