Question & Answer
Question
バックアップを取得しようとすると以下のエラー・メッセージが表示され、バックアップを取得できません。 エラーの原因と対処方法を教えてください。
SQL2048N オブジェクト "db2rhist.asc" のアクセス中にエラーが発生しました。理由コード:"2"
Cause
バックアップを実行すると Db2 は回復履歴ファイル (db2rhist.asc) の更新を行います。この時、他のプロセスが回復履歴ファイルを更新できないようにセマフォの取得を試みますが、そのセマフォが既に存在していた場合、上記のエラーが返されバックアップが行えないことがあります。
Db2 Linux/Unix 版は、回復履歴ファイルの i-node 番号を基にセマフォのキーを生成します。Db2 内で使用するキーが重複することは通常ほぼありませんが、他のアプリケーションが偶然同じキーを使用してセマフォを使用している場合などにキーが重複し、上記のようなエラーが発生することがあります。
Db2 Linux/Unix 版は、回復履歴ファイルの i-node 番号を基にセマフォのキーを生成します。Db2 内で使用するキーが重複することは通常ほぼありませんが、他のアプリケーションが偶然同じキーを使用してセマフォを使用している場合などにキーが重複し、上記のようなエラーが発生することがあります。
Answer
このエラーが発生した場合は以下の手順で回復履歴ファイルをリネームし、"db2 list history all for DB名" を実行してください。回復履歴ファイルが再作成されることにより i-node 番号が変更され、新たなキーでセマフォの取得を試みるのでバックアップが行えるようになります。
運用上の考慮点
特にありません。
関連情報
データベース・ディレクトリーおよびファイル
LIST HISTORY コマンド
- db2rhist.asc ファイルのディレクトリへ移動します。
※ 該当のデータベース・パスです。$ cd /home/db2inst1/db2inst1/NODE0000/SQL00001/
- db2rhist.asc, db2rhist.bak が存在することを確認します。
$ ls db2rhist.*
- db2rhist.asc, db2rhist.bak をリネームします。
$ mv db2rhist.asc db2rhist.old.asc $ mv db2rhist.bak db2rhist.old.bak
- 回復履歴ファイルを再作成します。
$ db2 list history all for データベース名
- db2rhist.asc, db2rhist.bak が再作成されていることを確認します。
$ ls -l db2rhist.*
- 再度バックアップを実行します。
運用上の考慮点
特にありません。
関連情報
データベース・ディレクトリーおよびファイル
LIST HISTORY コマンド
[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m500000008PmaAAE","label":"Recovery-\u003EBackup"}],"ARM Case Number":"","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF010","label":"HP-UX"},{"code":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"}],"Version":"All Versions"}]
Was this topic helpful?
Document Information
Modified date:
25 August 2023
UID
swg21595371