データベースの媒体に入出力障害が発生した場合、システムメッセージ“qdg13039u”が出力されます。この場合のリカバリは、メディアリカバリによって行います。
媒体障害が発生した場合の、障害の検出からリカバリまでの手順を説明します。
運用ごとのリカバリ操作の手順や操作例の詳細は、“10.2.1 媒体障害からのリカバリ”以降で説明します。
ユーザログDBに属するユーザログDSI1、ユーザログDSI2が、以下のように配置されている場合を例として、検出方法と確認方法を説明します。なお、エントリ1~3の数字は、エントリ通番を表しています。
ユーザログDBに属するユーザログDSI1、ユーザログDSI2が、以下のように配置されている場合を例として、検出方法と確認方法を説明します。なお、エントリ1~2の数字は、エントリ通番を表しています。
ユーザログDBに属するユーザログDSI1、ユーザログDSI2が、以下のように配置されている場合を例として、検出方法と確認方法を説明します。なお、エントリ1~2の数字は、エントリ通番を表しています。
■システムメッセージの確認および影響範囲の特定
データベースのアクセス中に媒体障害が発生した場合、Symfoware/RDBは、以下のメッセージを出力します。
このメッセージから、媒体障害が発生したデータベース名、データベーススペース名、およびデータベーススペースが割り付けられているローデバイス名を確認してください。
この例では、媒体障害が発生したディスクは、/dev/rdsk/c3t1d0だと特定することができます。
rdb: ERROR: qdg13039u:データベーススペースのデバイスに異常を 検出しました DB名='ユーザログDB' DBS名='DBSP_1' デバイス名= '/dev/rdsk/c3t1d0s3' 物理ブロック番号='99' 原因コード='1' 調査コード='2 0 ' (システム名=rdbsys1) |
メッセージに出力されたデバイス名と、事前に作成しておいたディスク上のデータベーススペース情報一覧から、破壊されている可能性があるデータベーススペースを特定してください。
この例での、ディスク上のデータベーススペース情報一覧を以下に示します。
ディスク上のデータベーススペース情報一覧
ユーザログDB.DBSP_1 /dev/rdsk/c3t1d0s3 ユーザログDB.DBSP_2 /dev/rdsk/c3t1d0s4 ユーザログDB.DBSP_3 /dev/rdsk/c3t2d0s3 ユーザログDB.DBSP_4 /dev/rdsk/c3t2d0s4 ユーザログDB.DBSP_5 /dev/rdsk/c3t3d0s3 ユーザログDB.DBSP_6 /dev/rdsk/c3t3d0s4 |
媒体障害が発生したディスクが/dev/rdsk/c3t1d0であることから、この例で破壊されている可能性があるデータベーススペースは、DBSP_1とDBSP_2であることが特定できます。
また、Symfoware/RDBでは、ディスク間欠障害の検査を行っています。ディスク間欠障害を検出した場合、CE保守情報をRDB構成パラメタファイルのRDBCOREで指定したディレクトリの以下のファイルに出力します。ディスク間欠障害が検出されたディスクを交換する場合は、これらのファイルの情報から障害ディスクを特定します。
pagedump_内部時間情報
pageinf_内部時間情報
データベースのアクセス中に媒体障害が発生した場合、Symfoware/RDBは、以下のメッセージを出力します。
このメッセージから、媒体障害が発生したデータベース名、データベーススペース名、およびデータベーススペースが割り付けられているローデバイス名を確認してください。
この例では、媒体障害が発生したローデバイスは、/dev_symfoware/raw10だと特定することができます。
rdb: ERROR: qdg13039u:データベーススペースのデバイスに異常を 検出しました DB名='ユーザログDB' DBS名='DBSP_1' デバイス名= '/dev_symfoware/raw10' 物理ブロック番号='99' 原因コード='1' 調査コード='2 0 ' (システム名=rdbsys1) |
メッセージに出力されたデバイス名と、事前に作成しておいたディスク上のデータベーススペース情報一覧およびls -l /dev_symfowareコマンドの結果から、破壊されている可能性があるデータベーススペースを特定してください。
この例での、ディスク上のデータベーススペース情報一覧およびls -l /dev_symfowareコマンドの結果を以下に示します。
ディスク上のデータベーススペース情報一覧
ユーザログDB.DBSP_1 /dev_symfoware/raw10 ユーザログDB.DBSP_2 /dev_symfoware/raw11 ユーザログDB.DBSP_3 /dev_symfoware/raw12 ユーザログDB.DBSP_4 /dev_symfoware/raw13 |
ls -l /dev_symfowareコマンドの結果
lrwxrwxrwx 1 root root 10 12月 28 09:31 raw1 -> /dev/disk/by-path/pci-0000:00:10.0-scsi-0:0:0:0-part1 lrwxrwxrwx 1 root root 10 12月 28 09:31 raw2 -> / dev/disk/by-path/pci-0000:00:10.0-scsi-0:0:0:0-part2 lrwxrwxrwx 1 root root 10 12月 28 09:31 raw3 -> / dev/disk/by-path/pci-0000:00:10.0-scsi-0:0:0:0-part3 lrwxrwxrwx 1 root root 10 12月 28 09:31 raw4 -> / dev/disk/by-path/pci-0000:00:10.0-scsi-0:0:0:0-part4 lrwxrwxrwx 1 root root 10 12月 28 09:31 raw5 -> / dev/disk/by-path/pci-0000:00:10.0-scsi-0:0:0:0-part5 lrwxrwxrwx 1 root root 10 12月 28 09:31 raw6 -> / dev/disk/by-path/pci-0000:00:10.0-scsi-0:0:0:0-part6 lrwxrwxrwx 1 root root 10 12月 28 09:31 raw7 -> / dev/disk/by-path/pci-0000:00:10.0-scsi-0:0:0:0-part7 lrwxrwxrwx 1 root root 10 12月 28 09:31 raw8 -> / dev/disk/by-path/pci-0000:00:10.0-scsi-0:0:0:0-part8 lrwxrwxrwx 1 root root 10 12月 28 09:31 raw9 -> / dev/disk/by-path/pci-0000:00:10.0-scsi-0:0:0:0-part9 lrwxrwxrwx 1 root root 10 12月 28 09:31 raw10 -> / dev/disk/by-path/pci-0000:00:10.0-scsi-0:0:0:1-part1 lrwxrwxrwx 1 root root 10 12月 28 09:31 raw11 -> / dev/disk/by-path/pci-0000:00:10.0-scsi-0:0:0:1-part2 lrwxrwxrwx 1 root root 10 12月 28 09:31 raw12 -> / dev/disk/by-path/pci-0000:00:10.0-scsi-0:0:0:2-part1 lrwxrwxrwx 1 root root 10 12月 28 09:31 raw13 -> / dev/disk/by-path/pci-0000:00:10.0-scsi-0:0:0:2-part2 |
媒体障害が発生したディスクがローデバイスであることから、この例で破壊されている可能性があるデータベーススペースは、DBSP_1とDBSP_2であることが特定できます。
また、Symfoware/RDBでは、ディスク間欠障害の検査を行っています。ディスク間欠障害を検出した場合、CE保守情報をRDB構成パラメタファイルのRDBCOREで指定したディレクトリの以下のファイルに出力します。ディスク間欠障害が検出されたディスクを交換する場合は、これらのファイルの情報から障害ディスクを特定します。
pagedump_内部時間情報
pageinf_内部時間情報
データベースのアクセス中に媒体障害が発生した場合、Symfoware/RDBは、以下のメッセージを出力します。
このメッセージから、媒体障害が発生したデータベース名、データベーススペース名、およびデータベーススペースが割り付けられているデバイス名(ファイルの絶対パス名)を確認してください。
出力されるデバイス名(ファイルの絶対パス名)と、事前に作成しておいたディスク上のデータベーススペース情報一覧から、破壊されている可能性があるデータベーススペースを特定してください。
この例では、破壊されている可能性があるデータベーススペースは、DBSP_1とDBSP_2であることが特定できます。
qdg13039u: データベーススペースのデバイスに異常を検出しました DB名='ユーザログDB' DBS名='DBSP_1' デバイス名='E:\SFWD\RDB\USR\DBSP\DBSP_1' 物理ブロック番号='99' 原因コード='1' 調査コード='2 0 ' (システム名=rdbsys1) qdg03650u: 入出力障害のためデータベースをアクセス禁止状態にしました DB名= 'ユーザログDB' DSI名= 'ユーザログDSI1' ページ番号='10' DBS名='DBSP_1' 物理ブ ロック番号='99' (システム名=rdbsys1) |
ユーザログDB.DBSP_1 E:\SFWD\RDB\USR\DBSP\DBSP_1 ユーザログDB.DBSP_2 E:\SFWD\RDB\USR\DBSP\DBSP_2 ユーザログDB.DBSP_3 F:\SFWD\RDB\USR\DBSP\DBSP_3 ユーザログDB.DBSP_4 F:\SFWD\RDB\USR\DBSP\DBSP_4 |
また、Symfoware/RDBでは、ディスク間欠障害の検査を行っています。ディスク間欠障害を検出した場合、CE保守情報をRDB構成パラメタファイルのRDBCOREで指定したディレクトリの以下のファイルに出力します。ディスク間欠障害が検出されたディスクを交換する場合は、これらのファイルの情報から障害ディスクを特定します。
pagedump_内部時間情報
pageinf_内部時間情報
■データベーススペース内のDSIの確認
媒体障害が発生したディスク(c3t1d0)上に存在する、データベーススペース、DBSP_1およびDBSP_2内のDSIを確認します。
媒体障害が発生したディスク(/dev/sda)上に存在する、データベーススペース、DBSP_1およびDBSP_2内のDSIを確認します。
媒体障害が発生したディスク(Eドライブ)上に存在する、データベーススペース、DBSP_1およびDBSP_2内のDSIを確認します。
rdbinfコマンドのデータベーススペース名指定を行うことにより、そのデータベーススペース内のDSI名を特定することができます。このとき、そのDSIに設定されている運用情報(State)の確認を行ってください。rdbinfコマンドによる確認は、媒体障害が発生したディスク上に存在するすべてのデータベーススペースに対して行ってください。
この例では、DBSP_1内には、ユーザログDSI1があることがわかります。運用情報には、“INH/PAT”および“---/---”が設定されていることがわかります。
同様の処理を行い、DBSP_2内のDSI名も確認してください。
$ rdbinf -p ユーザログDB.DBSP_1 -a RDBII rdbinf DATE:2005/10/14 TIME:16/30/31 Directory : /var/opt/FSUNrdb2b/rdbsys1/rdbdir/DIR_FILE1 Database : ユーザログDB DBspace : DBSP_1 Cond State Cause Used Free Size NON ---/--- --- 100% 0% 2097152 DSI : ユーザログDSI1 TYPE Cond State Cause Size DATA NON INH/PAT HER 1048576 |
$ rdbinf -p ユーザログDB.DBSP_1 -a RDBII rdbinf DATE:2005/10/14 TIME:16/30/31 Directory : /var/opt/FJSVrdb2b/rdbsys1/rdbdir/DIR_FILE1 Database : ユーザログDB DBspace : DBSP_1 Cond State Cause Used Free Size NON ---/--- --- 100% 0% 2097152 DSI : ユーザログDSI1 TYPE Cond State Cause Size DATA NON INH/PAT HER 1048576 |
> rdbinf -p ユーザログDB.DBSP_1 -a RDBII rdbinf DATE:2005/10/14 TIME:16/30/31 Directory : D:\SFWD\RDB\USR\DIR\DIR_FILE1 Database : ユーザログDB DBspace : DBSP_1 Cond State Cause Used Free Size NON ---/--- --- 100% 0% 2097152 DSI : ユーザログDSI1 TYPE Cond State Cause Size DATA NON INH/PAT HER 1048576 |
■障害ディスク上のデータベーススペースの切離し
データベーススペースは、ディスク上に作成したローデバイスに割り付けられています。媒体障害からのリカバリを行うためにはディスクを交換します。交換作業を行う間、そのディスク上に作成したローデバイスに割り付けられたすべてのデータベーススペースに対するアクセスを抑止する必要があります。そのため、Symfoware/RDBから一時的にそれらのデータベーススペースを切り離します。切り離されたすべてのデータベーススペースには、アクセス禁止状態が設定されます。データベーススペースの切離しは、rdbexspcコマンドのmdetachオプションにより行います。
なお、rdbexspcコマンドは媒体障害が発生したディスク上のすべてのデータベーススペースに対して行ってください。
$ rdbexspc -mdetach -p ユーザログDB.DBSP_1 $ rdbexspc -mdetach -p ユーザログDB.DBSP_2 |
媒体障害からのリカバリを行うためにはディスクを交換します。交換作業を行う間、そのディスク上に作成したファイルに割り付けられたすべてのデータベーススペースに対するアクセスを抑止する必要があります。そのため、Symfoware/RDBから一時的にそれらのデータベーススペースを切り離します。切り離されたすべてのデータベーススペースには、アクセス禁止状態が設定されます。データベーススペースの切離しは、rdbexspcコマンドのmdetachオプションにより行います。
> rdbexspc -mdetach -p ユーザログDB.DBSP_1 > rdbexspc -mdetach -p ユーザログDB.DBSP_2 |
■障害ディスクのリカバリ
ボリュームの構成情報の復元は、fmthardコマンドにより行います。fmthardコマンドに指定するファイル名は、prtvtocコマンドでボリュームの構成情報を取得したファイル名を指定してください。
以下に例を示します。この例では、媒体障害が発生したディスク(c3t1d0)のボリューム構成情報の復元を行っています。
$ fmthard -s c3t1d0_vtoc.txt /dev/rdsk/c3t1d0s2 |
参照
ローデバイスの作成については、“2.2.2 ローデバイスの作成(Solaris、Linux)”を参照してください。
富士通CEによるディスクの交換を行ったあと、Symfoware/RDBのリカバリ操作を行う前に、ボリュームの構成情報をリカバリしてください。
ボリュームの構成情報のリカバリは、事前に作成しておいたudevのブロックデバイスとディスクパーティションの情報に従って、partedコマンドを使用しパーティションを再作成してください。
参照
ローデバイスの作成については、“2.2.2 ローデバイスの作成(Solaris、Linux)”を参照してください。
富士通技術員によるディスクの交換を行ったあと、Symfoware/RDBのリカバリ操作を行う前に、ディレクトリ構成を復元してください。
この例では、媒体障害が発生したディスクのディレクトリ構成のリカバリを行っています。
> mkdir E:\SFWD\RDB\USR\DBSP |
■切り離したデータベーススペースの接続
ディスク交換前に切り離したデータベーススペースを、Symfoware/RDBに接続します。このとき、Symfoware/RDBはデータ保全のため、ディスク上に割り当てられているすべてのデータベーススペース上に存在するDSIと当該データベーススペースとの交点(エクステント)に対して、アクセス禁止状態を設定します。ついで、障害ディスク上のデータベーススペースの切離し時に設定した、当該データベーススペースに対するアクセス禁止状態を解除します。これによって、データベーススペースはリカバリされ、DSIの当該データベーススペース上に存在していた部分だけが、アプリケーションからのアクセスが禁止された状態となります。
データベーススペースの接続は、rdbexspcコマンドのmattachオプションによって行います。
なお、rdbexspcコマンドはデータベーススペースの切離し時に指定したすべてのデータベーススペース名に対して行ってください。
$ rdbexspc -mattach -p ユーザログDB.DBSP_1 $ rdbexspc -mattach -p ユーザログDB.DBSP_2 |
> rdbexspc -mattach -p ユーザログDB.DBSP_1 > rdbexspc -mattach -p ユーザログDB.DBSP_2 |
■リカバリ対象エントリの確認
ユーザログテーブル(CYCLIC構造のDSI)のエントリ情報の確認には、rdbinfコマンドのcオプションを利用します。
この例では、ユーザログDSI1のエントリ通番1がアクセス禁止状態であることがわかります。
同様の処理を行い、ユーザログDSI2も確認してください。
$ rdbinf -i ユーザログDB.ユーザログDSI1 -c RDBII rdbinf DATE:2004/11/11 TIME:12/00/00 Directory : /var/opt/FSUNrdb2b/rdbsys1/rdbdir/DIR_FILE1 Database : ユーザログDB DSI : ユーザログDSI1 DBspace : DBSP_1 No State Used Size 1 INH 104857600 104857600 DBspace : DBSP_3 No State Used Size 2 FULL 104857600 104857600 DBspace : DBSP_5 No State Used Size 3 USING 4857600 104857600 |
$ rdbinf -i ユーザログDB.ユーザログDSI1 -c RDBII rdbinf DATE: 2005/11/11 TIME:12/00/00 Directory : /var/opt/FJSVrdb2b/rdbsys1/rdbdir/DIR_FILE1 Database : ユーザログDB DSI : ユーザログDSI1 DBspace : DBSP_1 No State Used Size 1 INH 104857600 104857600 DBspace : DBSP_3 No State Used Size 2 FULL 104857600 104857600 DBspace : DBSP_5 No State Used Size 3 USING 4857600 104857600 |
> rdbinf -i ユーザログDB.ユーザログDSI1 -c RDBII rdbinf DATE: 2005/11/11 TIME:12/00/00 Directory : D:\SFWD\RDB\USR\DIR\DIR_FILE1 Database : ユーザログDB DSI : ユーザログDSI1 DBspace : DBSP_1 No State Used Size 1 INH 104857600 104857600 DBspace : DBSP_3 No State Used Size 2 FULL 104857600 104857600 DBspace : DBSP_5 No State Used Size 3 USING 4857600 104857600 |
リカバリ対象のエントリがEMPTYの場合でも、リカバリ後の状態はFULLになります。
エントリのリカバリによって、リカバリ対象のエントリ通番がUSING状態のエントリの通番と比較して、以下のようになります。
大きい場合:EMPTY
小さい場合:FULL
USING状態のエントリが存在しない場合は、FULLとなります。
■DSIのリカバリ
CYCLIC構造のDSIのリカバリはrdbrcvコマンドのCオプションを利用します。
この例では、ユーザログDSI1のリカバリを行っています。
同様の処理を行い、ユーザログDSI2もリカバリしてください。
$ rdbrcv -C -i ユーザログDB.ユーザログDSI1 -e 1 -w /home/rdb1/work |
> rdbrcv -C -i ユーザログDB.ユーザログDSI1 -e 1 -w D:\TEMP |
注意
rdbrcvコマンドは、リカバリに必要なアーカイブログが不足している場合、対象エントリのINHを解除できません。エントリのINHを解除するには、以下の手順を実行してください。
ユーザログテーブルの利用を一時中断し、そのほかの全エントリに格納されたユーザログをrdbcycexpコマンドを使用してエクスポートします。
rdbfmtコマンドのmidオプションを使用してユーザログテーブルを再初期化したあと、ユーザログテーブルの利用を再開してください。
rdbcycexpコマンドおよびrdbfmtコマンドの詳細は、“Interstage Business Application Server リファレンス”を参照してください。