ページの先頭行へ戻る
Interstage Business Application Server 運用ガイド(高信頼性ログ編)
FUJITSU Software

10.2 ユーザログテーブルのリカバリ

データベースの媒体に入出力障害が発生した場合、システムメッセージ“qdg13039u”が出力されます。この場合のリカバリは、メディアリカバリによって行います。

媒体障害が発生した場合の、障害の検出からリカバリまでの手順を説明します。

運用ごとのリカバリ操作の手順や操作例の詳細は、“10.2.1 媒体障害からのリカバリ”以降で説明します。

  1. システムメッセージの確認および影響範囲の特定

  2. データベーススペース内のDSIの確認

  3. 障害ディスク上のデータベーススペースの切離し

  4. 障害ディスクのリカバリ

  5. 切り離したデータベーススペースの接続

  6. リカバリ対象エントリの確認

  7. DSIのリカバリ


ユーザログ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で指定したディレクトリの以下のファイルに出力します。ディスク間欠障害が検出されたディスクを交換する場合は、これらのファイルの情報から障害ディスクを特定します。

データベースのアクセス中に媒体障害が発生した場合、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で指定したディレクトリの以下のファイルに出力します。ディスク間欠障害が検出されたディスクを交換する場合は、これらのファイルの情報から障害ディスクを特定します。

データベースのアクセス中に媒体障害が発生した場合、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で指定したディレクトリの以下のファイルに出力します。ディスク間欠障害が検出されたディスクを交換する場合は、これらのファイルの情報から障害ディスクを特定します。

■データベーススペース内の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状態のエントリの通番と比較して、以下のようになります。

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を解除するには、以下の手順を実行してください。

  1. ユーザログテーブルの利用を一時中断し、そのほかの全エントリに格納されたユーザログをrdbcycexpコマンドを使用してエクスポートします。

  2. rdbfmtコマンドのmidオプションを使用してユーザログテーブルを再初期化したあと、ユーザログテーブルの利用を再開してください。

    rdbcycexpコマンドおよびrdbfmtコマンドの詳細は、“Interstage Business Application Server リファレンス”を参照してください。