お問い合わせ
03-5979-2701
PowerGres
不具合情報

PowerGres Plus 障害情報一覧 (2006 年 8 月)

初出
2006 年 8 月 17 日
最終更新
2006 年 8 月 17 日
====================================================================
2006年8月17日現在、判明している PowerGres Plus の障害情報の一覧です。
なお、文中で触れられている修正予定パッチのうち、以下のパッチは
2006年8月17日にリリースしています。

  Linux版 V1.0  PGPLUS10-11
  Linux版 V1.1  PGPLUS11-08
  Linux版 V2.0  PGPLUS20-06
  Windows版 V2.0 PGPLUS20-04

====================================================================
【管理番号】
 PG49795

【概要】
 カーソルを使用しているトランザクションで、カーソルが参照している
テーブルに対してTRUNCATEが実行できる、または、TRUNCATEが復帰しない。

【現象】
 以下の条件のとき、TRUNCATEコマンドの実行は本来エラーとなるべきであるが、
次のいずれかの現象が発生する。
現象1) TRUNCATEコマンドがエラーとならず、実行される。
現象2) TRUNCATEコマンドが復帰しない。

条件
1) トランザクションブロック内でカーソルを用いてテーブルの参照を行っている。
   かつ、
2) 同一トランザクションブロック内でTRUNCATEコマンドを当該テーブルに対し実行
   する。

【原因】
 TRUNCATEコマンドの実行時に、処理対象のテーブルが参照中であるかどうかの
確認を行っていなかった。

【回避方法】
 なし。

【発生環境】
 Linux版 V2.0
 Windows版 V2.0

【修正予定】
 次期パッチで修正予定。
  Linux版 V2.0  PGPLUS20-06
  Windows版 V2.0 PGPLUS20-04



================================================================================
【管理番号】
 PG37494

【概要】
 カーソルのオープン中に当該テーブルを削除すると、内部エラーにより
トランザクションが異常終了する。

【現象】
 以下の条件のとき内部エラーが発生し、トランザクションの現在の処理または
以降の処理が異常終了する場合がある。また、トランザクションが処理を行って
いるテーブルに定義されているインデックスが閉塞状態となる場合がある。

1) 以下のいずれかの条件に該当するトランザクションが存在する。
  1-1) カーソルによってテーブルを参照している。または、
  1-2) READ_COMMITTED隔離性レベルにおいて、他のトランザクションと同時に
       同一テーブルの同一行に対して更新系コマンドを実行している。(更新
       系コマンドとは、UPDATEまたはDELETEまたはSELECT FOR UPDATE。)
       または、
  1-3) 外部キー制約が定義されたテーブルに対し、行の挿入または更新を
       行っている。または、
  1-4) 外部キー制約の被参照テーブルに対し、行の更新または削除を行って
       いる。または、
  1-5) トリガが定義されたテーブルに対し、そのトリガが実行される処理を
       実行している。または、
  1-6) テーブルに対する参照または更新または削除を行うコマンドを実行して
       おり、かつ、そのコマンド内で以下のいずれかに該当する関数を使用し
       ている。
       1-6-1) 関数内部で複数のコマンドを実行するSQL関数。
       1-6-2) PL/pgSQL関数。
       1-6-3) SPI_cursor_open()またはSPI_exec()またはSPI_execp()を
              使用するSPI関数。
かつ、
2) 条件1-1)に該当する場合は当該トランザクションまたは他トランザクション
   から、また、条件1-2)から条件1-6)に該当する場合は、他トランザクション
   から、条件1)のトランザクションが処理を行っているテーブルに対し、以下
   のいずれかの処理(テーブルに関するシステムカタログの更新が発生する処理)
   を実行する。
   2-1) テーブルの削除
   2-2) インデックスの削除
   2-3) 親テーブルの削除
   2-4) インデックスの定義
   2-5) ANALYZEコマンド
   2-6) 子テーブルの定義
   2-7) 子テーブルの削除
   2-8) GRANTコマンド
   2-9) REVOKEコマンド
   2-10) pg_classまたはpg_attributeシステムカタログの当該テーブルに関連
         する行の更新または削除
   2-11) pg_attributeシステムカタログへの当該テーブルに関連する行の挿入
   2-12) ALTER TABLEコマンド
   2-13) CREATE TRIGGERコマンド
   2-14) DROP TRIGGERコマンド
   2-15) ALTER TRIGGERコマンド
   2-16) CREATE RULEコマンド
   2-17) DROP RULEコマンド
   2-18) 当該テーブルに定義された外部キーの被参照テーブルの削除
   2-19) VACUUM ANALYZEコマンド、または、VACUUM FULLコマンド

また、内部エラー発生時に出力されるメッセージを以下に示す。

[V10L10またはV11L10]
ERROR:  INTERNAL ERROR in storage.c:xxx. Error occurred in edmi_CloseStorage 
(code=501001)
または
ERROR:  INTERNAL ERROR in bufmg.c:xxx. Error occurred in edmi_HeapReleaseData 
(code=501002)

[V20L10]
ERROR:  Resources are insufficient in storage.c:xxx. Error occurred in 
edmi_CloseStorage (code=501001)
または
ERROR:  Resources are insufficient in bufmgr.c:xxx. Error occurred in 
edmi_HeapReleaseData (code=501002)

注:
xxxはソースの行番号を示す数値であり、パッチ版数等により異なる。また、
Windows版では、メッセージ中のソースファイル名はフルパスで表記される。


【原因】
 トランザクションが処理を行っているテーブルを不当にクローズする場合が
あった。

【回避方法】
 なし。

【発生環境】
 Linux版 V1.0、V1.1、V2.0
 Windows版 V1.0、V2.0

【修正予定】
 次期パッチで修正予定。
  Linux版 V1.0  PGPLUS10-11
  Linux版 V1.1  PGPLUS11-08
  Linux版 V2.0  PGPLUS20-06
  Windows版 V1.0 PGPLUS10-07
  Windows版 V2.0 PGPLUS20-04



================================================================================
【管理番号】
 PG37487

【概要】
 データベースの削除と接続を同時に実行した場合、削除処理でエラーが発生し、
その後のデータベースの削除や接続後のコマンド処理が実行できない場合がある。

【現象】
現象1)
 データベースの削除と当該データベースへの接続処理を同時に実行した場合、
以下のようなメッセージが出力され、削除処理が失敗し、当該データベース内の
テーブルまたはインデックスが閉塞状態となる場合がある。

「ERROR:  Relation is being used.(DB=データベース名, Schema=スキーマ名,
  Relation=テーブル名)」

 また閉塞状態の結果、その後の当該データベースの削除処理または当該
データベースに接続した後のコマンドの実行において、以下のメッセージが
出力され、処理が実行できなくなる場合がある。

「ERROR:  Relation is prohibited access.(DB=データベース名、Relation=テーブル名)
  Please recover relation or database as instructed server messages.
  See the manual of pgx_prgmsg command.」

現象2)
 データベースの作成処理と当該作成処理のテンプレートとなるデータベースへの
接続処理を同時に実行した場合、本来エラーとなるはずの作成処理がエラーと
ならずに実行される場合がある。

 また、テンプレートとなるデータベースに接続しているクライアントが
更新処理を行っているときに作成処理が行われると、作成されるデータベースが
論理的に不整合な状態となる場合がある。

現象3)
 データベースの名前変更処理と当該データベースへの接続処理を同時に
実行した場合、データベースの名前が変更される前の古い名前のデータベースに
対して接続が可能になる場合がある。

【原因】
 データベースの接続処理とデータベースの削除・作成・名前変更処理
との間の排他が正しく行われていなかった。

【回避方法】
 なし。

【発生環境】
 Linux版 V1.0 (PGPLUS10-06以降の修正パッチを適用している場合)
 Linux版 V1.1 (PGPLUS10-03以降の修正パッチを適用している場合)
 Linux版 V2.0  
 Windows版 V1.0 
 Windows版 V2.0 

【修正予定】
 次期パッチで修正予定。
  Linux版 V1.0  PGPLUS10-11
  Linux版 V1.1  PGPLUS11-08
  Linux版 V2.0  PGPLUS20-06
  Windows版 V1.0 PGPLUS10-07
  Windows版 V2.0 PGPLUS20-04



================================================================================
【管理番号】
 PG49010

【概要】
 ロールバック中にメモリ不足またはテンポラリログ域の入出力異常が発生した
ときに、システムダウンまたはデータ破壊が発生する。

【現象】
 以下の条件(1)かつ(2)かつ(3)のときに、発生時に(c)の現象が発生する。
その後の破壊したデータ資源へのアクセス時に(a)または(b)のいずれか、または
全ての現象が発生することがある。
 また、以下の条件(1)かつ(2)かつ(3)かつ(4)のときに、(a)または(b)または(c)の
現象が発生することがある。

[発生条件]
  (1)以下のいずれかのV/L patchを適用している。
   ・V10L10 Linux版 patch 第9版〜第10版、V11L10 Linux版 patch 第6版〜第7版
   ・V20L10 Linux版 patch 第5版
   ・V10L10 Windows版 patch 第5版〜第6版、V20L10 Windows版 patch 第2版〜第3版
  かつ、
  (2) 更新を行ったトランザクションでROLLBACKコマンドを実行する、または、
      更新を行ったトランザクションでSQLコマンドを実行しエラーとなる。かつ、
  (3) (2)を契機として動作するロールバック処理において、
      メモリ不足が発生(※1)、または、テンポラリログ域の入出力異常が発生(※2)し、
      ロールバック処理が失敗する。
  または、
  上記(1)、(2)、(3)
  かつ、
  (4) その後、2つ以上のトランザクションで(2)と同じ事象が発生する。

[現象]
  (a) アプリケーションからのコネクションが切断される。
  (b) PostgreSQL Plus システムがダウンする。
  (c) データベースの内容を破壊する。

(※1)発生条件(3)において、メモリ不足が発生した場合は、以下のqdg12102uの
  メッセージを出力する。
  qdg12102u
  PostgreSQL Plus サーバ空間内ローカルメモリ不足が発
  生しました

(※2)発生条件(3)において、テンポラリログの入出力障害が発生した場合は、
    以下のqdg12442uのメッセージを出力する。
  qdg12442u
  テンポラリログファイル(BIログ域)の入出力障害が発生
  しました errno=d*
  [パラメタの意味]
    d*: エラー番号

【原因】
 ロールバックの処理において、ロールバックが失敗(メモリ不足、
テンポラリログのI/Oエラー発生)したときの、データベースのアクセス禁止状態の
設定処理、および、ロールバックが使用するメモリの解放処理に誤りがあった。

【回避方法】
 ロールバック処理中のメモリ不足は、事前に十分なメモリを確保する(動作環境
ファイルedmf.confのSAA_PER_CONNECTIONパラメータを大きくする)設定を
行うことにより、回避することができる。
 また、テンポラリログ域の入出力異常は、ハードウェアの要因であるため、
回避することはできない。

【発生環境】
 Linux版 V1.0 (PGPLUS10-09以降の修正パッチを適用している場合)
 Linux版 V1.1 (PGPLUS10-06以降の修正パッチを適用している場合)
 Linux版 V2.0 (PGPLUS10-05の修正パッチを適用している場合)
 Windows版 V1.0 (PGPLUS10-05以降の修正パッチを適用している場合)
 Windows版 V2.0 (PGPLUS10-02以降の修正パッチを適用している場合)

【修正予定】
 次期パッチで修正予定。
  Linux版 V1.0  PGPLUS10-11
  Linux版 V1.1  PGPLUS11-08
  Linux版 V2.0  PGPLUS20-06
  Windows版 V1.0 PGPLUS10-07
  Windows版 V2.0 PGPLUS20-04



================================================================================
【管理番号】
 PG49854

【概要】
 システムを停止せずに、DB追加・削除などの処理を1000回以上実行すると、
SAAメモリ不足が発生し、業務が継続できなくなる。

【現象】
 以下のいずれかの処理を、システムを停止せずに、1000回以上実行すると、
    Memory(SAA) exhausted
または、
    qdg12102u PostgreSQL Plus サーバ空間内ローカルメモリ不足が発生しました
のメッセージが出力され、各種コマンド、SQL の処理がエラーとなり、業務の継続が
できなくなることがある。

1) CREATE TABLE コマンドを実行する。または、
2) CREATE INDEX コマンドを実行する。または、
3) SELECT INTO コマンドを実行する。または、
4) インデックスのついたテーブルに対して、DROP TABLE コマンドを実行する。または、
5) DROP INDEX コマンドを実行する。または、
6) CLUSTER コマンドを実行する。または、
7) データベースの追加を行う。または、
8) データベースの削除を行う。または、
9) pgx_dmpall コマンドを実行する。または、
10) pgx_tables, pgx_indexes, pgx_sequences, pgx_dbspaces
    システムテーブルに対して検索を行うコマンドを実行する。

【原因】
 表およびインデックスを作成する場合に、使用したメモリを回収していない箇所が
あった。また、インデックスに関する情報を参照したときに、使用したメモリを
回収しない場合があった。

【回避方法】
 発生条件のうち、1)〜8)までに関しては、定期的なインスタンスの再起動を
実施する。1)〜8)までの処理の実行頻度が高い場合には、定期的なインスタンスの
再起動を行う。

 発生条件の9)と10)に関しては、事前にすべてのインデックスにアクセスする
処理を行なうことで回避できる。

【発生環境】
 Linux版 V1.0 (PGPLUS10-06以降の修正パッチを適用している場合)
 Linux版 V1.1 (PGPLUS10-03以降の修正パッチを適用している場合)
 Linux版 V2.0
 Windows版 V2.0

【修正予定】
 次期パッチで修正予定。
  Linux版 V1.0  PGPLUS10-11
  Linux版 V1.1  PGPLUS11-08
  Linux版 V2.0  PGPLUS20-06
  Windows版 V2.0 PGPLUS20-04



================================================================================
【管理番号】
 PG48636

【概要】
 同一トランザクション内で、大量 delete / update 後の insert / update が
遅いことがある。

【現象】
 以下の条件のときに、insert、update、enabele_direct_copyパラメータをoffに
設定したcopyなどの、データ追加や更新を行なうSQL(下記(a−2)(b))の
性能が劣化する場合がある。
(1)下記(a−*)または(b)を実行する、かつ、
 (a−1)delete、またはupdateを実行する、かつ、
 (a−2)(a−1)の処理を行なったトランザクション内で(a−1)の処理を
      行なったテーブルに対して、insert、update、copyなどのテーブルへの
      データ追加や更新を行なうSQLを実行する。
 (b)updateを実行する、
(2)(a−2)または(b)においてテーブルの容量が増加する(※)。かつ、
    (※)システムテーブルpgx_tablesを参照することで確認可能。
(3)(a−*)または(b)における処理データ量の総和がデータベースバッファ
   サイズを超える。

なお、ファンクション内の処理は同一のトランザクションとして処理されるため
(a−*)の処理をファンクション内で実施している場合にも本条件に合致する。

【原因】
 テーブルへのデータ追加や更新を行なう際にデータベースの空き領域を
検索する処理に誤りがあり、冗長なディスクへのI/Oが発生する場合があった。

【回避方法】
 以下のいずれかの方法をとる。
 ‐ 条件(a−1)でテーブルの全件deleteを行なっている場合には、
  truncateを代替利用する。
 ‐ 該当するテーブルに対して、以下の操作により事前に必要な領域を割り当てる。
  1.copy “テーブル” to “出力ファイル”;
  2.truncate “テーブル”;
  3.set enable_direct_copy=on;
  4.set direct_copy_data_size=“必要サイズ”(MB単位);
  5.copy “テーブル” from “1.の出力ファイル”;
 ‐ 他にトランザクションが存在しない条件下(バッチ処理等)で
  (a−1)と(a−2)の処理を別のトランザクションとして実行する。

【発生環境】
 Linux版 V1.0
 Linux版 V1.1
 Linux版 V2.0
 Windows版 V2.0

【修正予定】
 次期パッチで修正予定。
  Linux版 V1.0  PGPLUS10-11
  Linux版 V1.1  PGPLUS11-08
  Linux版 V2.0  PGPLUS20-06
  Windows版 V2.0 PGPLUS20-04



================================================================================
【管理番号】
 PG50353

【概要】
 コマンドpgx_rcvall、コマンドオプション-pの実行時に、syslogに異常を通知する
メッセージ(qdg70013e)を出力する。

【現象】
 以下の条件のとき、syslogに不要な異常のメッセージqdg70013e(※1)が出力される。
1. pgx_rcvallコマンドを実行する

 また、以下の条件のとき、syslogに不要な異常のメッセージqdg70013e(※1)が
出力される場合がある。

2. PostgreSQL Plus Administratorまたはpgx_dmpallコマンドを利用して、
 データベースのバックアップを行う、または
3. PostgreSQL Plus Administratorを利用してデータベース作成する、または
4. パラメタenable_direct_copyを有効に設定し、copyコマンドを実行する、または
5. create indexコマンドを実行する、または
6. reindexコマンドを実行する

(※1)
qdg70013e
OSのシステムコールが異常復帰しました
 システムコール=s* 引数=(t*) 返り値=u* errno=v*
[メッセージの意味]
  OSのシステムコールが異常復帰しました。
[パラメタの意味]
  s*: システムコール
  t*: 引数
  u*: システムコールの返り値
  v*: システムコールのエラー番号
[システムの処理]
  処理を中止します。
[利用者の処置]
  システムコールのエラー番号により異常原因を調査し、原因を取り除いてから再実行
してください。

【原因】
 I/Oシステムコールのロギング機能追加時の、メッセージの出力方法に誤りが
あった。

【回避方法】
 なし。

【発生環境】
 Linux版 V2.0 (PGPLUS10-05の修正パッチを適用している場合)

【修正予定】
 次期パッチで修正予定。
  Linux版 V2.0  PGPLUS20-06



====== ここまで ==============================================================