ユーザ管理表領域リカバリ手順

実践オラクルデータベース構築・運用

オラクルデータベース構築オラクルデータベース運用SQL書式PL/SQL書式Oracle Master試験

TOP オラクルデータベース構築 Oracleバックアップ・リカバリ手順

ユーザ管理表領域リカバリ手順



スポンサードリンク



ユーザ管理表領域リカバリ手順



本項では、Oracleのユーザ管理リカバリについて説明します。

〜完全リカバリと不完全リカバリ〜

Oracleののリカバリの考え方として、完全リカバリと不完全リカバリがあります。

完全リカバリ
完全リカバリとは、データファイルをリストア後に、アーカイブREDOログファイルとオンラインREDOログファイルの変更履歴を適用し、障害発生直前の状態(障害発生直前のコミットが完了した時点)までリカバリする方法です。ただし、完全リカバリを実施する際には、アーカイブログモードで運用が前提となります。また、完全リカバリには、データベースをマウントした状態でリカバリを行うオフラインリカバリと、データベースをオープンしたままでリカバリを行うオンラインリカバリがあります。

不完全リカバリ
不完全リカバリとは、障害発生直前の状態ではなく、ある特定時点の状態までリカバリする方法です。例えば、すべてのカレントのオンラインREDOログファイル、あるいはリカバリで必要なアーカイブREDOログファイルの一部が消失してしまい完全リカバリが行えない、バッチ処理の開始前など特定のトランザクションや、ある時刻までリカバリを行いたい場合などには不完全リカバリを行います。なお、不完全リカバリは、データベースをマウント状態にして行うオフラインリカバリでのみ実施できます。



※上記のようにユーザ管理でもRMANでもリカバリの考え方は同じになります。RMAN利用時と違うのは、バックアップとアーカイブログの格納先管理を私たち自身が行う必要があるため、リストア&リカバリ作業においてファイル名の指示が必要になるということです。


以下にUSER表領域の物理障害を想定した、オンラインでのUSER表領域のユーザ管理完全リカバリ手順を紹介します。


1.確認用のテーブル作成
C:\Windows\system32>sqlplus / as sysdba

SQL*Plus: Release 11.2.0.2.0 Production on 月 3月 4 07:53:15 2013

Oracle Database 11g Express Edition Release 11.2.0.2.0 - Production
に接続されました。

SQL> CREATE TABLE TEST
2 (
3 TEST_ID CHAR(3) ,
4 TEST_NAME VARCHAR2(10) ,
5 PRIMARY KEY( TEST_ID )
6 ) TABLESPACE USERS ;


表が作成されました。

SQL> INSERT INTO TEST VALUES(1,'TEST1');

1行が作成されました。

SQL> select * from test;

TEST_ID  TEST_NAME
------  --------------------
1       TEST1

SQL>


2.OCOPYで疑似的障害を発生させる
C:\Windows\system32>ocopy C:\tmp\ERROR.DBF C:\ORACLEXE\APP\ORACLE\ORADATA\XE\USERS.DBF

C:\ORACLEXE\APP\ORACLE\ORADATA\XE\USERS.DBF

C:\Windows\system32>

※ /tmp/ERROR.DBFは、疑似障害を発生させるために作成したファイル
※ ocopyは、Windows環境で使用できるファイルをコピーするツールで主にオンラインバックアップのために使用されます。ocopyにはOSのコピーコマンドにはないrawデバイスのコピーなどが可能となります。


3.USERS表領域の障害発生を確認
SQL> INSERT INTO TEST VALUES(2,'TEST2');

insert into test values(2,'TEST2')
*
行1でエラーが発生しました。:
ORA-01578:
Oracleデータ・ブロックに障害が発生しました(ファイル番号4、ブロック番号345)
ORA-01110: データファイル4: 'C:\ORACLEXE\APP\ORACLE\ORADATA\XE\USERS.DBF'

SQL>



4.USERS表領域をオフライン(OFFLINE)に変更
SQL> ALTER DATABASE DATAFILE 'C:\ORACLEXE\APP\ORACLE\ORADATA\XE\USERS.DBF ' OFFLINE;

データベースが変更されました。

SQL> column name format a50
SQL> select name,status from v$datafile;

NAME                                      STATUS
-------------------------------------------------- --------------
C:\ORACLEXE\APP\ORACLE\ORADATA\XE\SYSTEM.DBF    SYSTEM
C:\ORACLEXE\APP\ORACLE\ORADATA\XE\UNDOTBS1.DBF  ONLINE
C:\ORACLEXE\APP\ORACLE\ORADATA\XE\SYSAUX.DBF    ONLINE
C:\ORACLEXE\APP\ORACLE\ORADATA\XE\USERS.DBF     RECOVER

SQL>



5.バックアップから障害が発生した表領域のデータファイルをリストア(OCOPY)を実行
SQL> OCOPY /TMP/BK/USERS.DBF C:\ORACLEXE\APP\ORACLE\ORADATA\XE\USERS.DBF

C:\ORACLEXE\APP\ORACLE\ORADATA\XE\USERS.DBF

C:\Windows\system32>



6.USERS表領域のリカバリを実行
C:\Windows\system32>sqlplus / as sysdba

SQL*Plus: Release 11.2.0.2.0 Production on 月 3月 4 07:53:15 2013

Oracle Database 11g Express Edition Release 11.2.0.2.0 - Production
に接続されました。

SQL> RECOVER DATAFILE C:\ORACLEXE\APP\ORACLE\ORADATA\XE\USERS.DBF
ORA-00279: 変更1191315(03/04/2013 07:55:28で生成)にはスレッド1が必要です
ORA-00289: 検討すべきログ・ファイル:C:\TMP\ARC2\ARC0000000048_0788593801.0001
ORA-00280: 変更1191315(スレッド1)は順序番号48に存在します。


ログの指定: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: 変更1192548(03/04/2013 08:49:12で生成)にはスレッド1が必要です
ORA-00289: 検討すべきログ・ファイル:C:\TMP\ARC2\ARC0000000049_0788593801.0001
ORA-00280: 変更1192548(スレッド1)は順序番号49に存在します。


ORA-00279: 変更1213950(03/07/2013 06:51:06で生成)にはスレッド1が必要です
ORA-00289: 検討すべきログ・ファイル:C:\TMP\ARC2\ARC0000000050_0788593801.0001
ORA-00280: 変更1213950(スレッド1)は順序番号50に存在します。


ORA-00279: 変更1235531(03/08/2013 05:31:55で生成)にはスレッド1が必要です
ORA-00289: 検討すべきログ・ファイル:C:\TMP\ARC2\ARC0000000051_0788593801.0001
ORA-00280: 変更1235531(スレッド1)は順序番号51に存在します。


ORA-00279: 変更1256950(03/08/2013 06:11:12で生成)にはスレッド1が必要です
ORA-00289: 検討すべきログ・ファイル:C:\TMP\ARC2\ARC0000000052_0788593801.0001
ORA-00280: 変更1256950(スレッド1)は順序番号52に存在します。


ログが適用されました。
メディア・リカバリが完了しました。
SQL>



7.USERS表領域をオンライン(ONLINE)に変更
SQL> ALTER DATABASE DATAFILE 'C:\ORACLEXE\APP\ORACLE\ORADATA\XE\USERS.DBF ' ONLINE;

データベースが変更されました。

SQL> select tablespace_name,status from dba_tablespaces;

TABLESPACE_NAME         STATUS
------------------------- ------------------
SYSTEM                 ONLINE
SYSAUX                 ONLINE
UNDOTBS1               ONLINE
TEMP                   ONLINE
USERS                  ONLINE


SQL> column name format a50
SQL> select name,status from v$datafile;

NAME                                      STATUS
-------------------------------------------------- --------------
C:\ORACLEXE\APP\ORACLE\ORADATA\XE\SYSTEM.DBF    SYSTEM
C:\ORACLEXE\APP\ORACLE\ORADATA\XE\UNDOTBS1.DBF  ONLINE
C:\ORACLEXE\APP\ORACLE\ORADATA\XE\SYSAUX.DBF    ONLINE
C:\ORACLEXE\APP\ORACLE\ORADATA\XE\USERS.DBF     ONLINE

SQL>



8.USERS表領域の復旧を確認
SQL> INSERT INTO TEST VALUES(2,'TEST2');

1行が作成されました。

SQL> select * from test;

TEST_I TEST_NAME
------ --------------------
2 TEST2
1 TEST1

SQL>





   <ユーザ管理バックアップ>
      |-ユーザ管理バックアップとRMANバックアップの違い
      |-ユーザ管理バックアップ手順
      |-ユーザ管理表領域リカバリ手順
      |-ユーザ管理データベースリカバリ手順
      |-ユーザ管理制御ファイルリカバリ手順

   <RMANバックアップ>
      |-RMAN(Recovery Manager)とは
      |-RMANイメージコピーとバックアップセット
      |-RMANフルバックアップと増分バックアップ
      |-RMANのデフォルト構成の表示
      |-RMANリポジトリの管理
      |-RMANの起動とデータベース接続
      |-RMANのバックアップ情報確認方法





スポンサードリンク

リンク集 / 免責事項サイトマップ問い合わせ
Copyright (C) 2012  実践オラクルデータベース構築・運用  All rights reserved