UJP - 技術情報

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

     

Oracleのコールドバックアップを試してみる  〜アーカイブログからの復旧〜

Oracleのコールドバックアップを試してみる

〜アーカイブログからの復旧〜


0.更新履歴

  • 2001.10.14 新規作成

1.はじめに

 このドキュメントでは,Oracle8i R8.1.7 Personal Editionを使い,Oracleのオープンバックアップを実行して取得したバックアップで,リカバリを行ってみる.

 オープンバックアップとは,データベース稼動中にバックアップを行うものである.

2.今回の作業の計画

 今回のバックアップ&リカバリでは,次のような順序で確認してみる.

  • データベースは,NOARCHIVELOGモードで稼働している.
  • 新規に表領域BK_TESTを作成する.
  • BK_TESTに表を作成して,データを登録する.
  • オンラインバックアップモードにする.
  • BK_TEST表領域を,別のファイルに複写する.
  • 複写後,再度データを登録する.
  • Oracleを停止して,表領域BK_TESTをOSから消す.
  • バックアップしたデータファイルBK_TESTを戻す.
  • リカバリを実行する.
  • データがどこまで復旧しているか確認する.

 NOARCHIVELOGモードに設定する方法は,ドキュメント「REDOログの仕組み」を参照のこと.

3.テスト用表領域を作成する.

  • コマンドプロンプトを起動する.
  • 次のように,SQL*Plusで接続して,テーブルスペースBK_TESTを作成する.

C:\>sqlplus system/manager

SQL*Plus: Release 8.1.7.0.0 - Production on 日 Oct 14 02:47:15 2001

(c) Copyright 2000 Oracle Corporation.  All rights reserved.


Personal Oracle8i Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production
に接続されました。
SQL> create tablespace "BK_TEST"
  2  datafile 'D:\oracle\oradata\recover\bk_test.dbf'
  3  size 5m
  4  ;

表領域が作成されました。

SQL>

  • 表領域bk_testに表testを作成する.
  • 作成した表testにデータを入れておく.

SQL> create table test (t1 char(50)) tablespace bk_test;

表が作成されました。

SQL> insert into test values('a');

1行が作成されました。

SQL> insert into test values('b');

1行が作成されました。

SQL> select t1 from test;

T1
--------------------------------------------------
b
a

SQL>

4.コールドバックアップの実施

  • データベースを停止する.

SQL> connect internal
接続されました。
SQL> shutdown
データベースがクローズされました。
データベースがアンマウントされました。
ORACLEインスタンスがシャットダウンされました。
SQL>

  • コマンドプロンプトに戻る.
  • 退避用ディレクトリを作成する.
  • データベースファイルを複写する.

SQL> quit
Personal Oracle8i Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Productionとの接続が切断されました。

D:\>mkdir d:\oracle\oradata\recover\bk

D:\>copy d:\oracle\oradata\recover\* d:\oracle\oradata\recover\bk
d:\oracle\oradata\recover\CONTROL01.CTL
d:\oracle\oradata\recover\CONTROL02.CTL
d:\oracle\oradata\recover\CONTROL03.CTL
d:\oracle\oradata\recover\REDO01.LOG
d:\oracle\oradata\recover\REDO02.LOG
d:\oracle\oradata\recover\REDO03.LOG
d:\oracle\oradata\recover\SYSTEM01.DBF
d:\oracle\oradata\recover\RBS01.DBF
d:\oracle\oradata\recover\USERS01.DBF
d:\oracle\oradata\recover\TEMP01.DBF
d:\oracle\oradata\recover\TOOLS01.DBF
d:\oracle\oradata\recover\INDX01.DBF
d:\oracle\oradata\recover\BK_TEST.DBF
       13 個のファイルをコピーしました。

D:\>

  • 再度SQL*Plusで接続し,データベースを起動する.

D:\>sqlplus internal

SQL*Plus: Release 8.1.7.0.0 - Production on 日 Oct 14 05:47:56 2001
(c) Copyright 2000 Oracle Corporation.  All rights reserved.
アイドル・インスタンスに接続しました。

SQL> startup
ORACLEインスタンスが起動しました。

Total System Global Area   43489308 bytes
Fixed Size                    75804 bytes
Variable Size              13729792 bytes
Database Buffers           29605888 bytes
Redo Buffers                  77824 bytes
データベースがマウントされました。
データベースがオープンされました。
SQL>

  • systemユーザで接続し,test表のデータを追加する.

SQL> connect system/manager
接続されました。
SQL> begin
  2  for i in 1..30000 loop
  3  insert into test values('LOOP INSERT');
  4  end loop;
  5  end;
  6  /

PL/SQLプロシージャが正常に完了しました。

SQL>

  • アーカイブログを強制的に書き出す.

SQL> alter system switch logfile;

システムが変更されました。

SQL>

  • データベースを停止する

SQL> connect internal
接続されました。
SQL> shutdown
データベースがクローズされました。
データベースがアンマウントされました。
ORACLEインスタンスがシャットダウンされました。
SQL> quit
Personal Oracle8i Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Productionとの接続が切断されました。
C:\>

  • バックアップしておいたファイルの更新日を確認する.

C:\>dir d:\oracle\oradata\recover\bk

 ドライブ D のボリューム ラベルは DOCUMENT です
 ボリューム シリアル番号は 151C-1D09 です

 d:\oracle\oradata\recover\bk のディレクトリ

2001/10/14  16:25       <DIR>          .
2001/10/14  16:25       <DIR>          ..
2001/10/14  16:24            3,338,240 CONTROL01.CTL
2001/10/14  16:24            3,338,240 CONTROL02.CTL
2001/10/14  16:24            3,338,240 CONTROL03.CTL
2001/10/14  16:23            1,049,088 REDO01.LOG
2001/10/14  16:24            1,049,088 REDO02.LOG
2001/10/14  16:22            1,049,088 REDO03.LOG
2001/10/14  16:24           73,404,416 SYSTEM01.DBF
2001/10/14  16:24          104,861,696 RBS01.DBF
2001/10/14  16:24            3,149,824 USERS01.DBF
2001/10/14  16:24           20,975,616 TEMP01.DBF
2001/10/14  16:24            3,149,824 TOOLS01.DBF
2001/10/14  16:24            3,149,824 INDX01.DBF
2001/10/14  16:24            5,246,976 BK_TEST.DBF
              13 個のファイル         227,100,160 バイト
               2 個のディレクトリ   2,820,931,584 バイトの空き領域

C:\>

  • 16:24分が最終更新時間であることが確認できる.
  • アーカイブログファイルを確認する.

C:\>dir d:\oracle\oradata\recover\archive /od-

 ドライブ D のボリューム ラベルは DOCUMENT です
 ボリューム シリアル番号は 151C-1D09 です

 d:\oracle\oradata\recover\archive のディレクトリ

2001/10/14  13:47       <DIR>          ..
2001/10/14  13:47       <DIR>          .
2001/10/14  14:31              932,864 RECOVERT001S00206.ARC
2001/10/14  15:22            1,049,088 RECOVERT001S00207.ARC
2001/10/14  15:23            1,049,088 RECOVERT001S00208.ARC
2001/10/14  15:24            1,049,088 RECOVERT001S00209.ARC
2001/10/14  15:25            1,049,088 RECOVERT001S00210.ARC
2001/10/14  15:26            1,049,088 RECOVERT001S00211.ARC
2001/10/14  15:28            1,049,088 RECOVERT001S00212.ARC
2001/10/14  15:29            1,049,088 RECOVERT001S00213.ARC
2001/10/14  16:20            1,049,088 RECOVERT001S00214.ARC
2001/10/14  16:20            1,049,088 RECOVERT001S00215.ARC
2001/10/14  16:21            1,049,088 RECOVERT001S00216.ARC
2001/10/14  16:21            1,049,088 RECOVERT001S00217.ARC
2001/10/14  16:21            1,049,088 RECOVERT001S00218.ARC
2001/10/14  16:21            1,049,088 RECOVERT001S00219.ARC
2001/10/14  16:21            1,049,088 RECOVERT001S00220.ARC
2001/10/14  16:21            1,049,088 RECOVERT001S00221.ARC
2001/10/14  16:21            1,049,088 RECOVERT001S00222.ARC
2001/10/14  16:21            1,049,088 RECOVERT001S00223.ARC
2001/10/14  16:21            1,049,088 RECOVERT001S00224.ARC
2001/10/14  16:21            1,049,088 RECOVERT001S00225.ARC
2001/10/14  16:22            1,049,088 RECOVERT001S00226.ARC
2001/10/14  16:22            1,049,088 RECOVERT001S00227.ARC
2001/10/14  16:22            1,049,088 RECOVERT001S00228.ARC
2001/10/14  16:22            1,049,088 RECOVERT001S00229.ARC
2001/10/14  16:22            1,049,088 RECOVERT001S00230.ARC
2001/10/14  16:22            1,049,088 RECOVERT001S00231.ARC
2001/10/14  16:22            1,049,088 RECOVERT001S00232.ARC
2001/10/14  16:22            1,049,088 RECOVERT001S00233.ARC
2001/10/14  16:23            1,049,088 RECOVERT001S00234.ARC
2001/10/14  16:23            1,049,088 RECOVERT001S00235.ARC
2001/10/14  16:29            1,049,088 RECOVERT001S00236.ARC
2001/10/14  16:29            1,049,088 RECOVERT001S00237.ARC
2001/10/14  16:30            1,049,088 RECOVERT001S00238.ARC
2001/10/14  16:30            1,049,088 RECOVERT001S00239.ARC
2001/10/14  16:30            1,049,088 RECOVERT001S00240.ARC
2001/10/14  16:30            1,049,088 RECOVERT001S00241.ARC
2001/10/14  16:30            1,049,088 RECOVERT001S00242.ARC
2001/10/14  16:30            1,049,088 RECOVERT001S00243.ARC
2001/10/14  16:30            1,049,088 RECOVERT001S00244.ARC
2001/10/14  16:30            1,049,088 RECOVERT001S00245.ARC
2001/10/14  16:30            1,049,088 RECOVERT001S00246.ARC
2001/10/14  16:30            1,049,088 RECOVERT001S00247.ARC
2001/10/14  16:30            1,049,088 RECOVERT001S00248.ARC
2001/10/14  16:30            1,049,088 RECOVERT001S00249.ARC
2001/10/14  16:30            1,049,088 RECOVERT001S00250.ARC
2001/10/14  16:30            1,049,088 RECOVERT001S00251.ARC
2001/10/14  16:30            1,049,088 RECOVERT001S00252.ARC
2001/10/14  16:30            1,049,088 RECOVERT001S00253.ARC
2001/10/14  16:30            1,049,088 RECOVERT001S00254.ARC
2001/10/14  16:30            1,049,088 RECOVERT001S00255.ARC
2001/10/14  16:31            1,049,088 RECOVERT001S00256.ARC
2001/10/14  16:31            1,049,088 RECOVERT001S00257.ARC
2001/10/14  16:31            1,049,088 RECOVERT001S00258.ARC
2001/10/14  16:31            1,049,088 RECOVERT001S00259.ARC
2001/10/14  16:31            1,049,088 RECOVERT001S00260.ARC
2001/10/14  16:32            1,049,088 RECOVERT001S00261.ARC
2001/10/14  16:32            1,049,088 RECOVERT001S00262.ARC
2001/10/14  16:32            1,049,088 RECOVERT001S00263.ARC
2001/10/14  16:32            1,049,088 RECOVERT001S00264.ARC
2001/10/14  16:32            1,049,088 RECOVERT001S00265.ARC
2001/10/14  16:32            1,049,088 RECOVERT001S00266.ARC
2001/10/14  16:32            1,049,088 RECOVERT001S00267.ARC
2001/10/14  16:32            1,049,088 RECOVERT001S00269.ARC
2001/10/14  16:32            1,049,088 RECOVERT001S00268.ARC
2001/10/14  16:34               29,184 RECOVERT001S00270.ARC
              65 個のファイル          67,054,592 バイト
               2 個のディレクトリ   2,820,931,584 バイトの空き領域

C:\>

  • 前のデータベースファイルのバックアップファイルの最終更新時間が16:24なので,RECOVERT001S00236.ARC以降がアーカイブの適用範囲と考えられる.

5.データベースを壊す

  • 現在あるデータベースファイルを退避する.

C:\>mkdir d:\oracle\oradata\recover\bk2

C:\>copy d:\oracle\oradata\recover\* d:\oracle\oradata\recover\bk2
d:\oracle\oradata\recover\CONTROL01.CTL
d:\oracle\oradata\recover\CONTROL02.CTL
d:\oracle\oradata\recover\CONTROL03.CTL
d:\oracle\oradata\recover\REDO01.LOG
d:\oracle\oradata\recover\REDO02.LOG
d:\oracle\oradata\recover\REDO03.LOG
d:\oracle\oradata\recover\SYSTEM01.DBF

  • OSコマンドでバックアップしていたデータファイルを戻す.

C:\>copy d:\oracle\oradata\recover\bk\*.dbf d:\oracle\oradata\recover\
d:\oracle\oradata\recover\bk\BK_TEST.DBF
d:\oracle\oradata\recover\BK_TEST.DBF を上書きしますか? (Yes/No/All): all
d:\oracle\oradata\recover\bk\INDX01.DBF
d:\oracle\oradata\recover\bk\RBS01.DBF
d:\oracle\oradata\recover\bk\SYSTEM01.DBF
d:\oracle\oradata\recover\bk\TEMP01.DBF
d:\oracle\oradata\recover\bk\TOOLS01.DBF
d:\oracle\oradata\recover\bk\USERS01.DBF
        7 個のファイルをコピーしました。

C:\>

  • この時点で,データファイルはバックアップファイルからリストアされたことになる.
    • 制御ファイルおよびオンラインREDOログファイルは壊す前の状態である.
  • Oracleを起動する.

C:\>svrmgrl

Oracle Server Manager Release 3.1.7.0.0 - Production

Copyright (c) 2000, Oracle Corporation.  All Rights Reserved.

Personal Oracle8i Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production

SVRMGR> connect internal
接続されました。
SVRMGR> startup
Oracleインスタンスが起動しました。
システム・グローバル領域合計                        38332444バイト
Fixed Size                                          75804バイト
Variable Size                                    11882496バイト
Database Buffers                                 26296320バイト
Redo Buffers                                        77824バイト
データベースがマウントされました。
ORA-01113: ???? 1????????????????
ORA-01110: ???????? 1 : D:\ORACLE\ORADATA\RECOVER\SYSTEM01.DBF
SVRMGR> quit
Server Managerを終了しました。
C:\>

  • いったんサーバマネージャを抜ける.
    • 起動に失敗した後は,メッセージが文字化けを起こすようである.
    • 再接続するとOK.

6.データベースを治す

  • データベースリカバリを実行する.

C:\>svrmgrl

Oracle Server Manager Release 3.1.7.0.0 - Production

Copyright (c) 2000, Oracle Corporation.  All Rights Reserved.

Personal Oracle8i Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production
SVRMGR> connect internal
接続されました。
SVRMGR> recover database
ORA-00279: 変更 41482(10/14/2001 16:24:25で生成)にはスレッド番号 1
が必要です。
ORA-00289: 検討すべきログ・ファイル: D:\ORACLE\ORADATA\RECOVER\ARC
HIVE\RECOVERT001S00236.ARC
ORA-00280: 変更 41482(スレッド 1)は順序番号 236に存在します。
ログの指定: {<RET>=suggested | filename | AUTO | CANCEL}

  • 復旧するために,RECOVERT001S00236.ARCファイルを適用するか?と尋ねている.
  • ReturnキーでOKとなる.
  • 適用する全てのアーカイブログファイルに答えなければならないので,その場合autoと入力すると,自動的に適用される.

ログが適用されました。
ORA-00279: 変更 41551(10/14/2001 16:29:51で生成)にはスレッド番号 1
が必要です。
ORA-00289: 検討すべきログ・ファイル: D:\ORACLE\ORADATA\RECOVER\ARC
HIVE\RECOVERT001S00237.ARC
ORA-00280: 変更 41551(スレッド 1)は順序番号 237に存在します。
ORA-00278: ログ・ファイル D:\ORACLE\ORADATA\RECOVER\ARCHIVE\RECOVE
RT001S00236.ARCはこのリカバリでは必要なくなりました。
ログの指定: {<RET>=suggested | filename | AUTO | CANCEL}
auto

〜略〜

ORA-00280: 変更 42490(スレッド 1)は順序番号 267に存在します。
ORA-00278: ログ・ファイル D:\ORACLE\ORADATA\RECOVER\ARCHIVE\RECOVE
RT001S00266.ARCはこのリカバリでは必要なくなりました。
ログが適用されました。
ORA-00279: 変更 42526(10/14/2001 16:32:47で生成)にはスレッド番号 1
が必要です。
ORA-00289: 検討すべきログ・ファイル: D:\ORACLE\ORADATA\RECOVER\ARC
HIVE\RECOVERT001S00268.ARC
ORA-00280: 変更 42526(スレッド 1)は順序番号 268に存在します。
ORA-00278: ログ・ファイル D:\ORACLE\ORADATA\RECOVER\ARCHIVE\RECOVE
RT001S00267.ARCはこのリカバリでは必要なくなりました。
ログが適用されました。
メディアのリカバリが完了しました。
SVRMGR>

  • アーカイブログファイルは,S00236〜S00270まで存在しているが,適用されたのはS00267までであった.
  • これは,S00268〜S00270はオンラインREDOログから適用したものと考えられる.
  • データベースを再起動する.

SVRMGR> shutdown
ORA-01109: データベースがオープンされていません。
データベースがディスマウントされました。
Oracleインスタンスが停止しました。
SVRMGR> startup
Oracleインスタンスが起動しました。
システム・グローバル領域合計                        38332444バイト
Fixed Size                                          75804バイト
Variable Size                                    11882496バイト
Database Buffers                                 26296320バイト
Redo Buffers                                        77824バイト
データベースがマウントされました。
データベースがオープンされました。
SVRMGR>

  • testテーブルの内容が復旧されているか確認する.

SVRMGR> quit
Server Managerを終了しました。

C:\>sqlplus system/manager

SQL*Plus: Release 8.1.7.0.0 - Production on 日 Oct 14 17:38:26 2001

(c) Copyright 2000 Oracle Corporation.  All rights reserved.


Personal Oracle8i Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production
に接続されました。
SQL> select count(*) from test;

  COUNT(*)
----------
     30002

SQL>

  • アーカイブログはたまり続けるが,不要なファイルは消さなければいけない.
  • 消すアーカイブログログファイルは次のようにして確認できる.

SQL> connect sys/change_on_install as sysdba
接続されました。
SQL> archive log list
データベース・ログ・モード     アーカイブ・モード
自動アーカイブ                 使用可能
アーカイブ先                    D:\oracle\oradata\recover\archive
最も古いオンライン・ログ順序   270
アーカイブする次のログ順序    272
カレント・ログ順序               272
SQL>

  • この場合,270番以前のアーカイブログは不要となる.



広告スペース
Google