2017年7月17日月曜日

バックアップファイルのチェックポイント時間

久しぶりのエントリとなってしまいました。
先日、業務でバックアップファイルからのリカバリをした際、全体バックアップのファイルの時間がどこになっているのかわからず、作業が止まってしまったことがありました。

少しおさらいしてみましょう。
バックアップは、データベースの破損をしたときにリカバリ(修復)するために取ります。
データベースのバックアップには、全体バックアップと増分バックアップ、差分バックアップがあります。

全体バックアップは、文字通りデータベースのデータファイルをバックアップしたものです。
増分バックアップは、全体バックアップとの増分のみをバックアップしたものです。
差分バックアップは、全体バックアップとの差分をバックアップしたものです。
こういった説明だとわかりづらくなってしまいますが、つまりは、増分バックアップと差分バックアップの違いは、
 増分:前回バックアップ以降のデータをバックアップ
 差分:全体バックアップ以降のデータをバックアップ
となります。

ここでは、全体バックアップと増分バックアップについて語ります。
なぜ増分を取るかといいますと、全体バックアップの取得には時間がかかってしまうため、以前取った全体バックアップとの差分を取って、
全体バックアップ+増分バックアップで、直近の状態のバックアップとします。
ここで一つ問題なのが、増分バックアップばかり取り続けてしまうと、全体バックアップと大量の増分バックアップを保存しなければならず、
管理が面倒になってしまいます。そのため、定期的に全体バックアップを取得する必要があります。
データベースの量がそれほど大きくないのであれば、一週間に一度バックアップというのでも良いのでしょうが、バックアップに取れる時間がそれほどないような場合、それも難しくなってしまいます。

oracleの場合、増分バックアップを全体バックアップに適用させることにより、増分バックアップの取得時点(もしくはそれまでの任意の地点)まで全体バックアップの時間を進めることができます。
何が嬉しいかといいますと、全体バックアップを定期的に取らずとも、増分バックアップ取得のみで、直近のバックアップ取得時点までの全体バックアップを保持することができるのです。
マニュアル:https://docs.oracle.com/cd/E16338_01/backup.112/b56269/rcmquick.htm#sthref136


こうなってきますと、現在の全体バックアップがいつ時点のポイントのバックアップであるかを確認する術が欲しくなります。
そこで、全体バックアップ取得、増分バックアップ取得、増分バックアップ適用後の状態を確認してみました。
まず、全体バックアップ取得時のバックアップリストです。

======
[oracle@tama01 ~]$ rman target /
Recovery Manager: Release 11.2.0.1.0 - Production on Tue Jul 11 20:09:24 2017

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

connected to target database: BALLOON (DBID=2896125069)

RMAN> list copy;

using target database control file instead of recovery catalog
specification does not match any archived log in the repository
List of Datafile Copies
=======================

Key     File S Completion Time     Ckp SCN    Ckp Time        
------- ---- - ------------------- ---------- -------------------
36      1    A 2017/07/11 20:04:13 1155397    2017/07/11 20:01:44
        Name: /u01/app/oracle/product/11.2.0/dbhome_1/dbs/lv0_49_11
        Tag: TAG20170711T200144

37      2    A 2017/07/11 20:06:15 1155468    2017/07/11 20:04:22
        Name: /u01/app/oracle/product/11.2.0/dbhome_1/dbs/lv0_50_11
        Tag: TAG20170711T200144

38      3    A 2017/07/11 20:06:40 1155512    2017/07/11 20:06:21
        Name: /u01/app/oracle/product/11.2.0/dbhome_1/dbs/lv0_51_11
        Tag: TAG20170711T200144

41      4    A 2017/07/11 20:07:09 1155531    2017/07/11 20:07:07
        Name: /u01/app/oracle/product/11.2.0/dbhome_1/dbs/lv0_54_11
        Tag: TAG20170711T200144

39      5    A 2017/07/11 20:06:56 1155523    2017/07/11 20:06:47
        Name: /u01/app/oracle/product/11.2.0/dbhome_1/dbs/lv0_52_11
        Tag: TAG20170711T200144

List of Control File Copies
===========================

Key     S Completion Time     Ckp SCN    Ckp Time        
------- - ------------------- ---------- -------------------
40      A 2017/07/11 20:07:04 1155529    2017/07/11 20:07:02
        Name: /u01/app/oracle/product/11.2.0/dbhome_1/dbs/lv0_53_11
        Tag: TAG20170711T200144


RMAN> exit
======

このうち、「Ckp Time」がバックアップファイルの時間、「Completion Time」はバックアップを取得した時間です。

■参考マニュアル
https://docs.oracle.com/cd/E16338_01/backup.112/b56270/rcmsynta027.htm#CHDGGGHG

データを更新して、増分バックアップを取ってみましょう。
=======
[oracle@tama01 ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Tue Jul 11 20:10:06 2017

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

SQL> conn XXXXX/XXXXXX;
Connected.
SQL> select count(*) from oak;

  COUNT(*)
----------
      1001

SQL> insert into oak values('OAKTABLE');

1 row created.

SQL> commit;

Commit complete.

SQL> select count(*) from oak;

  COUNT(*)
----------
      1002
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP and Real Application Testing options

[oracle@tama01 ~]$ rman target /
Recovery Manager: Release 11.2.0.1.0 - Production on Tue Jul 11 20:09:24 2017

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

connected to target database: BALLOON (DBID=2896125069)

RMAN> backup incremetal level 1 database;

Starting backup at 2017/07/11 20:13:55
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=44 device type=DISK
channel ORA_DISK_1: starting incremental level 1 datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u01/app/oracle/oradata/balloon/system01.dbf
input datafile file number=00002 name=/u01/app/oracle/oradata/balloon/sysaux01.dbf
input datafile file number=00003 name=/u01/app/oracle/oradata/balloon/undotbs01.dbf
input datafile file number=00005 name=/u01/app/oracle/oradata/balloon/rman01.dbf
input datafile file number=00004 name=/u01/app/oracle/oradata/balloon/users01.dbf
channel ORA_DISK_1: starting piece 1 at 2017/07/11 20:13:58
channel ORA_DISK_1: finished piece 1 at 2017/07/11 20:14:05
piece handle=/u01/app/oracle/flash_recovery_area/BALLOON/backupset/2017_07_11/o1_mf_nnnd1_TAG20170711T201357_dp9dqqx3_.bkp tag=TAG20170711T201357 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:07
channel ORA_DISK_1: starting incremental level 1 datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
including current SPFILE in backup set
channel ORA_DISK_1: starting piece 1 at 2017/07/11 20:14:07
channel ORA_DISK_1: finished piece 1 at 2017/07/11 20:14:10
piece handle=/u01/app/oracle/flash_recovery_area/BALLOON/backupset/2017_07_11/o1_mf_ncsn1_TAG20170711T201357_dp9dqz4w_.bkp tag=TAG20170711T201357 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
Finished backup at 2017/07/11 20:14:10

======
この状態で、Lv0の時間はどうでしょうか。

======
RMAN> list copy;

specification does not match any archived log in the repository
List of Datafile Copies
=======================

Key     File S Completion Time     Ckp SCN    Ckp Time        
------- ---- - ------------------- ---------- -------------------
36      1    A 2017/07/11 20:04:13 1155397    2017/07/11 20:01:44
        Name: /u01/app/oracle/product/11.2.0/dbhome_1/dbs/lv0_49_11
        Tag: TAG20170711T200144

37      2    A 2017/07/11 20:06:15 1155468    2017/07/11 20:04:22
        Name: /u01/app/oracle/product/11.2.0/dbhome_1/dbs/lv0_50_11
        Tag: TAG20170711T200144

38      3    A 2017/07/11 20:06:40 1155512    2017/07/11 20:06:21
        Name: /u01/app/oracle/product/11.2.0/dbhome_1/dbs/lv0_51_11
        Tag: TAG20170711T200144

41      4    A 2017/07/11 20:07:09 1155531    2017/07/11 20:07:07
        Name: /u01/app/oracle/product/11.2.0/dbhome_1/dbs/lv0_54_11
        Tag: TAG20170711T200144

39      5    A 2017/07/11 20:06:56 1155523    2017/07/11 20:06:47
        Name: /u01/app/oracle/product/11.2.0/dbhome_1/dbs/lv0_52_11
        Tag: TAG20170711T200144

List of Control File Copies
===========================

Key     S Completion Time     Ckp SCN    Ckp Time        
------- - ------------------- ---------- -------------------
40      A 2017/07/11 20:07:04 1155529    2017/07/11 20:07:02
        Name: /u01/app/oracle/product/11.2.0/dbhome_1/dbs/lv0_53_11
        Tag: TAG20170711T200144
======
特に変わってはいません。

では、増分更新をしてみましょう。
======
RMAN> recover copy of database;

Starting recover at 2017/07/11 20:17:02
using channel ORA_DISK_1
channel ORA_DISK_1: starting incremental datafile backup set restore
channel ORA_DISK_1: specifying datafile copies to recover
recovering datafile copy file number=00001 name=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/lv0_49_11
recovering datafile copy file number=00002 name=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/lv0_50_11
recovering datafile copy file number=00003 name=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/lv0_51_11
recovering datafile copy file number=00004 name=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/lv0_54_11
recovering datafile copy file number=00005 name=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/lv0_52_11
channel ORA_DISK_1: reading from backup piece /u01/app/oracle/flash_recovery_area/BALLOON/backupset/2017_07_11/o1_mf_nnnd1_TAG20170711T201357_dp9dqqx3_.bkp
channel ORA_DISK_1: piece handle=/u01/app/oracle/flash_recovery_area/BALLOON/backupset/2017_07_11/o1_mf_nnnd1_TAG20170711T201357_dp9dqqx3_.bkp tag=TAG20170711T201357
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
Finished recover at 2017/07/11 20:17:04

RMAN> list copy;

specification does not match any archived log in the repository
List of Datafile Copies
=======================

Key     File S Completion Time     Ckp SCN    Ckp Time        
------- ---- - ------------------- ---------- -------------------
45      1    A 2017/07/11 20:17:03 1155895    2017/07/11 20:13:58
        Name: /u01/app/oracle/product/11.2.0/dbhome_1/dbs/lv0_49_11
        Tag: TAG20170711T200144

46      2    A 2017/07/11 20:17:03 1155895    2017/07/11 20:13:58
        Name: /u01/app/oracle/product/11.2.0/dbhome_1/dbs/lv0_50_11
        Tag: TAG20170711T200144

44      3    A 2017/07/11 20:17:03 1155895    2017/07/11 20:13:58
        Name: /u01/app/oracle/product/11.2.0/dbhome_1/dbs/lv0_51_11
        Tag: TAG20170711T200144

43      4    A 2017/07/11 20:17:03 1155895    2017/07/11 20:13:58
        Name: /u01/app/oracle/product/11.2.0/dbhome_1/dbs/lv0_54_11
        Tag: TAG20170711T200144

42      5    A 2017/07/11 20:17:03 1155895    2017/07/11 20:13:58
        Name: /u01/app/oracle/product/11.2.0/dbhome_1/dbs/lv0_52_11
        Tag: TAG20170711T200144

List of Control File Copies
===========================

Key     S Completion Time     Ckp SCN    Ckp Time        
------- - ------------------- ---------- -------------------
40      A 2017/07/11 20:07:04 1155529    2017/07/11 20:07:02
        Name: /u01/app/oracle/product/11.2.0/dbhome_1/dbs/lv0_53_11
        Tag: TAG20170711T200144

======
時間が動きましたね。
バックアップファイルもデータファイルも、一度更新を適用してしまうと元に戻すことはできません。
バックアップ運用を進めていくうえでも、今の状態で想定しているポイントにバックアップできるのかをチェックする必要がありますので、
rmanのリスト機能も読めるようになっておきたいですね。

0 件のコメント:

コメントを投稿