Troubleshooting
Problem
HADR システムで TAKEOVER 後、新プライマリー・データベースで表へのアクセスが以下のように SQL1477N で失敗することがあります。なお、読み取り専用スタンバイ (ROS) が構成されている場合、TAKEOVER 前にスタンバイ・データベースでの表アクセスが SQL1477N で失敗します。
SQL1477N 表 "DB2INST1.T1" で、表スペース "2" 内のオブジェクト "5" にはアクセスできません。
Symptom
SQL1477N が返るとき、新プライマリーまたは読み取り専用スタンバイの db2diag.log には以下のような ADM5570W が記録されます。
2020-06-29-13.17.33.049788+540 E1743A784 LEVEL: Warning
PID : 23986672 TID : 20674 PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : HADB
APPHDL : 0-84 APPID: *LOCAL.db2inst1.200629041721
AUTHID : DB2INST1 HOSTNAME: hadr02
EDUID : 20674 EDUNAME: db2agent (HADB) 0
FUNCTION: DB2 UDB, data management, sqldSetupSQLCA, probe:3
MESSAGE : ADM5570W Access was attempted on an unavailable object with id "5"
in tablespace "2" for table "DB2INST1.T1". If the object is a table
it will have to be dropped. If the object is a partition it will
have to be detached. If the object is a non-partitioned index the
index will have to be dropped.
Cause
HADR プライマリーで、スタンバイが再生できない以下のような操作が行われた場合、該当の表はスタンバイで無効化され、その後のアクセスは SQL1477N で拒否されます。
- NONRECOVERABLE オプションを指定した LOAD の実行 (HADR で LOAD オプションを省略すると NONRECOVERABLE として扱われます。)
例:db2 "load from data.del of del insert into T1"
- 表に対して NOT LOGGED INITIALLY (NLI) が指定されたとき
例:db2 "alter table T1 activate not logged initially"
Environment
HADR による高可用性を使用しているデータベース
Diagnosing The Problem
スタンバイで無効化された表は以下の手順で判別できます。
a) 読み取り専用スタンバイを構成している場合、ADMINTABINFO 管理ビューで削除ペンディングの表を一覧できます。
読み取り専用スタンバイを構成していない場合でも、TAKEOVER 後に新プライマリーで同じ SQL を実行して一覧できます。
db2 connect to <standby_database>
db2 "select tabschema, tabname from sysibmadm.admintabinfo where available='N'"
b) 読み取り専用スタンバイを構成していない場合、スタンバイの db2diag.log から ADM5571W を参照します。
たとえば、直近一カ月で無効化された表は以下のコマンドで一覧できます。
db2diag -g msg:=ADM5571W -H 1M
Resolving The Problem
表の無効化を防ぐため、原因となる操作を行わないようにしてください。
- LOAD 実行時に COPY YES TO <path> でスタンバイからもアクセス可能なパスを指定する
詳細はマニュアルの以下のページを参照してください。
高可用性災害時リカバリー用のデータベース構成 (HADR)
LOAD 実行時の事故を防ぐため、DB2_LOAD_COPY_NO_OVERRIDE レジストリー変数の使用も検討してください。
たとえば、db2set DB2_LOAD_COPY_NO_OVERRIDE="copy yes to /share/load/data" のように設定すると、LOAD で COPY オプションを省略した場合にレジストリー変数で指定された COPY オプションが使用されます。 - NOT LOGGED INITIALL (NLI) を実行しない
表に対する NLI を実行しないよう注意してください。データベース構成パラメーター BLOCKNONLOGGED を YES に設定すると、NLI のようにログされない操作は SQL0628N で実行できなくなります。
無効化された表は以下のいずれかの方法で回復できます。
- HADR システムの再統合 (データベース全体のバックアップとリストア)
表が無効化されていないデータベースのバックアップを使用して HADR ペアを再統合します。
詳細は以下の Technote の (b) を参照してください。
[Db2] HADR スタンバイの復旧方法 - LOAD REPLACE による単一表の回復
表が無効化されていないプライマリー・データベースで表データの EXPORT と LOAD REPLACE を行って回復します。
注1:LOAD COPY TO <path> でスタンバイからもアクセス可能なパスを指定します。
注2:MDC 表、圧縮辞書を持つ表、XML 列を持つ表はこの手法で回復できません。
例db2 connect to <healthy_primary_database> db2 "export to data.ixf of ixf select * from <table_name>" db2 "load from data.ixf of ixf replace into <table_name> copy yes to /share/load/data"
- 表スペース・リストアによる表の回復
以下のページの「スタンバイ・データベースのエラー状態の表スペースを再初期化する手順」が利用可能なバージョンの場合、表スペースのリストアにより表データを回復できます。
HADR スタンバイ・データベースでの表スペース・エラーのリカバリー
例- プライマリーで対象の表スペースにダミー表を作成します。
db2 "create table dummy1 (c1 int) in <tablespace_name>"
- プライマリーでダミー表へ COPY YES TO /dev/null の LOAD を行います。
(この結果、スタンバイで該当表スペースがリストア・ペンディングになります)db2 "load from data of del replace into dummy1 copy yes to /dev/null"
- スタンバイ・データベースを非活動化します。
db2 deactivate db <standby_database>
- プライマリーで表スペースのバックアップを取得します。
db2 flush bufferpool all db2 "backup db <primary_database> tablespace <tablespace_name> online to <path_to_backup>"
- スタンバイでバックアップをリストアし、活動化します。
db2 "restore db <standby_database> tablespace (<tablespace_name>) from <path_to_backup> taken at <backup_timestamp>" db2 "activate db <standby_database>"
- (オプション) プライマリーでダミー表を削除します。
db2 "drop table dummy1"
- プライマリーで対象の表スペースにダミー表を作成します。
Document Location
Worldwide
[{"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":"a8m500000008PlvAAE","label":"HADR-\u003ELog shipping and Replay"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]
Was this topic helpful?
Document Information
Modified date:
15 August 2023
UID
ibm16502883