Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

(QA) Db2 for i テーブル作成時、SQL7905 ジャーナル処理されていない の警告

Posted at

Q. Db2 for i テーブル作成時、SQL7905の警告がでる

Q.
Db2 for iにCREATE TABLE でテーブルを作成しました。テーブルは正常に作成されましたが、以下のエラーが出ました。これは何ですか?

■実行したCREATE TABLE

CREATE TABLE GOMALIB.EMPSAMP
(EMPNO INTEGER GENERATED ALWAYS AS IDENTITY,
NAME CHAR(30),
SALARY DECIMAL(10,2),
DEPTNO SMALLINT,
LEVEL CHAR(30),
HIRETYPE VARCHAR(30) NOT NULL DEFAULT 'New Employee',
HIREDATE DATE NOT NULL WITH DEFAULT) ;

※上記はレッドブック記載のFINAL TABLEのサンプルSQLです。ただしライブラリー(スキーマ)名 GOMALIBを追加して実行しています。

この時のエラーを確認すると下記のようでした
image.png

エラー(警告)を再掲すると、

01567 ベンダー・コード: 7905 メッセージ: [SQL7905] GOMALIBにテーブルEMPSAMPが作成されましたが,ジャーナル処理されていません。 原因−−テーブルEMPSAMPがGOMALIBに作成されましたが,このテーブルはジャーナル処理されていません。QDFTJRNデータ域によりジャーナル処理を開始してはいけないことが示されたか,省略時のジャーナルが存在しなかったか,または省略時のジャーナルが存在したがジャーナル処理を開始できなかったかのいずれかです。省略時のジャーナルが損傷しているか,ジャーナル項目を受け入れることができないか,あるいは存在しない可能性があります。テーブルのSQL名はEMPSAMPで,テーブルのシステム名はEMPSAMPです。分散テーブルの場合には,すべてのシステムでジャーナル処理を開始することができませんでした。ノード・グループの各システムに,省略時のジャーナルは存在していなければならず,ジャーナル項目を受け入れることができなければなりません。回復手順−−テーブルは作成されましたが,テーブルがジャーナル処理されるまで,テーブルEMPSAMPに対してCOMMIT(*CHG), COMMIT(*CS), COMMIT(*RS), COMMIT(*RR), COMMIT(*UR),およびCOMMIT(*ALL)は使用できません。省略時のジャーナルが存在しない場合には,このジャーナルを作成(CRTJRNコマンド)して,ジャーナル処理を開始(STRJRNPFコマンド)してください。ジャーナルにエラーがある場合には,ジャーナルに対して問題を訂正してください。テーブルが分散テーブルの場合には,ノード・グループのすべてのシステムで問題を訂正し,ジャーナル処理を開始(STRJRNPFコマンド)してください。

となっています。

警告の原因

上記のエラーは、テーブルを作成したDb2 for i のスキーマ(ライブラリー)がCRTLIBコマンドで作成されていたためでした。古いIBM i バージョンでCRTLIBコマンドで作成されたライブラリーを新しいIBM i 7.6などに復元した場合でも上記のような警告が出ます。この警告の意味はCREATE TABLEしたテーブルにはジャーナル(DBログ)取得が自動開始されていないことを指しています。

対応方法

方法は主に2つあります。

方法①:上記のテーブルにSTRJRNPFコマンドでジャーナルを開始する

前提として、ジャーナルレシーバーやジャーナルなどが作成済みである、という事があります。作成されていない場合はこれらも作成してから、STRJRNPFコマンドを作成したテーブルに対し開始します。

方法②:ライブラリー(スキーマ)をCREATE SCHEMAコマンドで作成する

根本的にはテーブルを作成するライブラリーをCREATE SCHEMA で作成しなおす(新規作成する)のが理想です。このようにすれば以降作成されるテーブルにもジャーナル処理が自動開始され、SQL7905の警告は出なくなります。

作成されたライブラリー(スキーマ)の確認

上記の方法②で作成したライブラリーの中身を見てみます。CREATE SCHEMAで作成した後、上記のサンプルSQLでテーブルを1つ追加した状態が下記です。
image.png

1行目、2行目がCREATE SCHEMA実行時、同時に作成されたジャーナルレシーバーとジャーナルです。
3行目がCREATE TABLEで作成したテーブルです。

以下はDb2 for i のDBMSが使用する統計情報のテーブルなどで、、
2ページ目(下図)までいろいろ自動作成されています。
image.png

0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?