ページの先頭行へ戻る
Symfoware Server V11.1.0 RDB運用ガイド
FUJITSU Software

5.2.1 データベーススペースをローデバイスに割り付けている場合のリカバリ

データベーススペースを、ローデバイスに割り付けている場合のリカバリ操作は、以下の手順で行います。

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

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

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

  4. スクのリカバ

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

  6. データースペースが属するロググループの確認

  7. アク禁止の設定

  8. DSIバリ

注意

一時表および一時表のインデックスのDSIについては、上記の6、7、8の操作は不要です。
DSI名が“_TEMP”で始まる名前の場合、一時表、または、一時表のインデックスのDSIと判断できます。

在庫管理DBに属する在庫表DSI1、製品名IXDSI1、在庫表DSI2、製品名IXDSI2が、以下のように配置されている場合を例にとって、検出方法と確認方法を説明します。

DBS名: データベーススペース名

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

データベースのアクセス中に媒体障害が発生した場合、Symfoware/RDBは、以下のメッセージを出力します。このメッセージから、媒体障害が発生したデータベース名、データベーススペース名およびデータベーススペースが割り付けられているローデバイス名を確認してください。

RHEL5の場合

この例では、媒体障害が発生したローデバイスは、/dev_symfoware/raw10だと特定することができます。

rdb: ERROR: qdg13039u:データベーススペースのデバイスに異常を
  検出しました DB名='在庫管理DB' DBS名='DBSP_1' デバイス名=
  '/dev_symfoware/raw10' 物理ブロック番号='99' 原因コード='1'
  調査コード='2 0 ' (システム名=rdbsys1) 
rdb: ERROR: qdg03650u:入出力障害のためデータベースをアクセス 
  禁止状態にしました DB名='在庫管理DB' DSI名='在庫表DSI1'
  ページ番号='10' DBS名='DBSP_1' 物理ブ ロック番号='99'
  (システム名=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_内部時間情報

RHEL6の場合

この例では、媒体障害が発生したローデバイスは、/dev_symfoware/raw10だと特定することができます。

rdb: ERROR: qdg13039u:データベーススペースのデバイスに異常を
  検出しました DB名='在庫管理DB' DBS名='DBSP_1' デバイス名=
  '/dev_symfoware/raw10' 物理ブロック番号='99' 原因コード='1'
  調査コード='2 0 ' (システム名=rdbsys1) 
rdb: ERROR: qdg03650u:入出力障害のためデータベースをアクセス 
  禁止状態にしました DB名='在庫管理DB' DSI名='在庫表DSI1'
  ページ番号='10' DBS名='DBSP_1' 物理ブ ロック番号='99'
  (システム名=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月 20 11:30 raw1 -> /dev/disk/by-id/scsi-3600508e000000000a49181f95a10550e-part1
lrwxrwxrwx 1 root root 10 12月 20 11:30 raw2 -> /dev/disk/by-id/scsi-3600508e000000000a49181f95a10550e-part2
lrwxrwxrwx 1 root root 10 12月 20 11:30 raw3 -> /dev/disk/by-id/scsi-3600508e000000000a49181f95a10550e-part3
lrwxrwxrwx 1 root root 10 12月 20 11:30 raw4 -> /dev/disk/by-id/scsi-3600508e000000000a49181f95a10550e-part4
lrwxrwxrwx 1 root root 10 12月 20 11:30 raw5 -> /dev/disk/by-id/scsi-3600508e000000000a49181f95a10550e-part5
lrwxrwxrwx 1 root root 10 12月 20 11:30 raw6 -> /dev/disk/by-id/scsi-3600508e000000000a49181f95a10550e-part6
lrwxrwxrwx 1 root root 10 12月 20 11:30 raw7 -> /dev/disk/by-id/scsi-3600508e000000000a49181f95a10550e-part7
lrwxrwxrwx 1 root root 10 12月 20 11:30 raw8 -> /dev/disk/by-id/scsi-3600508e000000000a49181f95a10550e-part8
lrwxrwxrwx 1 root root 10 12月 20 11:30 raw9 -> /dev/disk/by-id/scsi-3600508e000000000a49181f95a10550e-part9
lrwxrwxrwx 1 root root 10 12月 20 11:30 raw10 -> /dev/disk/by-id/scsi-36005b5d0006a0000006a01e000bf0000-part1
lrwxrwxrwx 1 root root 10 12月 20 11:30 raw11 -> /dev/disk/by-id/scsi-36005b5d0006a0000006a01e000c60000-part2
lrwxrwxrwx 1 root root 10 12月 20 11:30 raw12 -> /dev/disk/by-id/scsi-3600600e000000000a49181f95a10550e-part1
lrwxrwxrwx 1 root root 10 12月 20 11:30 raw13 -> /dev/disk/by-id/scsi-3600600e000000000a49181f95a10550e-part2

媒体障害が発生したディスクがローデバイスであることから、この例で破壊されている可能性があるデータベーススペースは、DBSP_1とDBSP_2であることが特定できます。

また、Symfoware/RDBでは、ディスク間欠障害の検査を行っています。ディスク間欠障害を検出した場合、CE保守情報をRDB構成パラメタファイルのRDBCOREで指定したディレクトリの以下のファイルに出力します。ディスク間欠障害が検出されたディスクを交換する場合は、これらのファイルの情報から障害ディスクを特定します。

  • pagedump_内部時間情報

  • pageinf_内部時間情報

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

媒体障害が発生したディスク(/dev/sda)上に存在する、データベーススペース、DBSP_1およびDBSP_2内のDSIを確認します。

rdbinfコマンドのデータベーススペース名指定を行うことにより、そのデータベーススペース内のDSI名を特定することができます。このとき、そのDSIに設定されている運用情報(State)の確認を行ってください。rdbinfコマンドによる確認は、媒体障害が発生したディスク上に存在するすべてのデータベーススペースに対して行ってください。

この例では、DBSP_1内には、在庫表DSI1および製品名IXDSI1があることがわかります。運用情報には、“INH/PAT”および“---/---”が設定されていることがわかります。

同様の処理を行い、DBSP_2内のDSI名も確認してください。

$ rdbinf -p 在庫管理DB.DBSP_1 -a

  RDBII rdbinf DATE:2007/04/14 TIME:16/30/31

    Directory : /home/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

    DSI : 製品名IXDSI1

    TYPE   Cond  State    Cause  Size
    INDEX  NON   ---/---  ---    540070
    BASE   NON   ---/---  ---    508506 

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

データベーススペースは、ディスク上に作成したローデバイスに割り付けられています。媒体障害からのリカバリを行うためにはディスクを交換します。交換作業を行う間、そのディスク上に作成したローデバイスに割り付けられたすべてのデータベーススペースに対するアクセスを抑止する必要があります。そのため、Symfoware/RDBから一時的にそれらのデータベーススペースを切り離します。切り離されたすべてのデータベーススペースには、アクセス禁止状態が設定されます。データベーススペースの切離しは、rdbexspcコマンドのmdetachオプションにより行います。

なお、rdbexspcコマンドは媒体障害が発生したディスク上のすべてのデータベーススペースに対して行ってください。

$ rdbexspc -mdetach -p 在庫管理DB.DBSP_1
$ rdbexspc -mdetach -p 在庫管理DB.DBSP_2

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

富士通CEによるディスクの交換を行ったあと、Symfoware/RDBのリカバリ操作を行う前に、ボリュームの構成情報をリカバリしてください。

ボリュームの構成情報のリカバリは、事前に作成しておいたudevのブロックデバイスとディスクパーティションの情報に従って、partedコマンドを使用しパーティションを再作成してください。

参照

ローデバイスの作成については“セットアップガイド”を参照してください。

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

ディスク交換前に切り離したデータベーススペースを、Symfoware/RDBに接続します。このとき、Symfoware/RDBはデータ保全のため、ディスク上に割り当てられているすべてのデータベーススペース上に存在するDSIと当該データベーススペースとの交点(エクステント)に対して、アクセス禁止状態を設定します。ついで、障害ディスク上のデータベーススペースの切離し時に設定した、当該データベーススペースに対するアクセス禁止状態を解除します。これにより、データベーススペースはリカバリされ、DSIの当該データベーススペース上に存在していた部分のみが、アプリケーションからのアクセスが禁止された状態となります。

データベーススペースの接続は、rdbexspcコマンドのmattachオプションにより行います。

なお、rdbexspcコマンドはデータベーススペースの切離し時に指定したすべてのデータベーススペース名に対して行ってください。

$ rdbexspc -mattach -p 在庫管理DB.DBSP_1
$ rdbexspc -mattach -p 在庫管理DB.DBSP_2

一時表および一時表のインデックスのDSIについては、以降の操作は不要です。

6) データベーススペースが属するロググループの確認

アーカイブログをバックアップする運用を行っている場合は、媒体障害が発生したディスク上に存在する、データベーススペース、DBSP_1およびDBSP_2が属するロググループ名を確認します。

rdbprtコマンドのデータベーススペース名指定を行うことにより、そのデータベーススペースが属するロググループ名を特定することができます。このとき、データベーススペースの情報として表示されるロググループ名(Loggroup)の確認を行ってください。rdbprtコマンドによる確認は、媒体障害が発生したディスク上に存在するすべてのデータベーススペースに対して行ってください。

この例では、DBSP_1の属するグループは“grp1”であることがわかります。

同様の処理を行い、DBSP_2が属するロググループ名も確認してください。

$ rdbprt -d 在庫管理DB -m DEF -

DBSPACE(DBSP_1)

No.1   Database space name .... DBSP_1
  Database name   ..... 在庫管理DB
  Raw device name ..... /dev_symfoware/raw10
  Device kind     ..... RAWDEVICE
  Allocate size   ..... 20480(k byte)
  Creator         ..... UCHINO
  Created date    ..... Thu Apr 12 13:04:15 2007
  Loggroup        ..... grp1
  

  DSI information

  No.1   DSI name ..... 在庫表DSI1

    Usage type    ..... BASE
    Schema name   ..... 在庫スキーマ
    Table name    ..... 在庫表
    DSO name      ..... 在庫表DSO1
    Allocate size ..... 2048(K byte)

  No.2   DSI name ..... 製品名IXDSI1

    Usage type    ..... INDEX 
    Schema name   ..... 在庫スキーマ
    Table name    ..... 在庫表
    DSO name      ..... 在庫表IXDSO1
    Allocate size ..... 50(K byte)

7) アクセス禁止の設定

メディアリカバリの実行時には、リカバリ対象のDSIがアクセス禁止状態になっていなければなりません。リカバリ対象のDSIのうち、運用情報(State)に“INH/DSI”が設定されていない場合は、メディアリカバリを実行する前に、表のDSIおよびインデックスのDSIに対して、アクセス禁止の設定を行ってください。ただし、表のDSIがリカバリ対象の場合に、それに関連するインデックスのDSI(XML構造以外)は、アクセス禁止にする必要はありません。

アクセス禁止の設定は、rdbinhコマンドによりDSI単位に行います。アクセス禁止の設定により、指定したDSIに格納されているデータに対しては、アクセスができなくなります。

$ rdbinh -i 在庫管理DB.在庫表DSI1 
$ rdbinh -i 在庫管理DB.在庫表DSI2  

rdbinhコマンドによるアクセス禁止の設定を、リカバリ対象外のDSIに誤って行った場合は、rdbpmtコマンドで解除してください。

DSIのリカバリ処理において、rdbrcvコマンドのpオプションによるデータベーススペース指定のリカバリを行う場合は、アクセス禁止の設定は不要です。

8) DSIのリカバリ

媒体障害が発生したディスク上に存在したすべてのDSIを、rdbrcvコマンドによりリカバリします。

スケーラブルログ運用を行っている場合でアーカイブログ退避データを指定する場合は、“6) データベーススペースが属するロググループの確認”で特定したロググループに属するアーカイブログ退避データを指定してください。

また、複数のDSIを一括してリカバリする場合は、同一ロググループに属するDSIを指定してください。

この例では、データベーススペース名、DBSP_1内の在庫表DSI1および製品名IXDSI1およびDBSP_2内の在庫表DSI2および製品名IXDSI2のリカバリを行っています。

$ rdbrcv -F -i 在庫管理DB.在庫表DSI1
         -f stock1@/backup/rdb 
         -a grp1_arc01@/backup/rdb 
         -w /home/rdb1/work
$ rdbrcv -F -i 在庫管理DB.在庫表DSI2
         -f stock2@/backup/rdb
         -a grp2_arc02@/backup/rdb
         -w /home/rdb1/work