コールドバックアップする方法

表領域をバックアップモードに切替えて、コールドバックアップする方法の一例。



(1) 変更前の状態を確認

動的パフォーマンスビュー v$datafile、v$tablespace を参照する。

SQL> select distinct ts.name,bu.status
     from v$datafile df,v$backup bu,v$tablespace ts
     where df.file# = bu.file#
     and df.ts# = ts.ts#;

NAME     STATUS
-------- ----------
HOGE     NOT ACTIVE
SYSAUX   NOT ACTIVE
SYSTEM   NOT ACTIVE
UNDOTBS1 NOT ACTIVE

–> ステータスが NOT ACTIVE (非バックアップモード状態) であること

補足

・v$backup だけでは対応する表領域が分からないので、
上記SQLでは v$datafile と結合している。

SQL> select * from v$backup;

FILE# STATUS        CHANGE# TIME
----- ---------- ---------- --------
    1 NOT ACTIVE 2.7920E+10 09-07-23
    2 NOT ACTIVE 2.7920E+10 09-07-23
    3 NOT ACTIVE 2.7920E+10 09-07-23
    4 NOT ACTIVE 2.7920E+10 09-07-23

(2) バックアップモード開始

SQL> alter tablespace HOGE begin backup;

表領域が変更されました。

 

補足

もしバックアップモード中の表領域に対して begin backup した場合、
すでにバックアップ中というエラーとなる。

SQL> alter tablespace HOGE begin backup;
 alter tablespace HOGE begin backup
*
行1でエラーが発生しました。:
ORA-01146: オンライン・バックアップを開始できません -
ファイル5はすでにバックアップ中です
ORA-01110: データファイル4: '/oradata/hoge.dbf'

 

(4) 変更後の状態を確認

SQL> select distinct ts.name,bu.status
     from v$datafile df,v$backup bu,v$tablespace ts
     where df.file# = bu.file#
     and df.ts# = ts.ts#;

NAME     STATUS
-------- ----------
HOGE     ACTIVE
SYSAUX   NOT ACTIVE
SYSTEM   NOT ACTIVE
UNDOTBS1 NOT ACTIVE

–> 対象表領域のみ、ステータスが ACTIVE (バックアップモード状態) であること

 

(5) OSコマンドでバックアップ取得

完全なコールドバックアップ(オフラインバックアップ)を取得するなら、
データファイルだけでなく、制御ファイルやアーカイブログファイルも取得する。

 

(6) バックアップモード終了

SQL> alter tablespace HOGE end backup;

表領域が変更されました。

 

(7) 変更後の状態を確認

SQL> select distinct ts.name,bu.status
     from v$datafile df,v$backup bu,v$tablespace ts
     where df.file# = bu.file#
     and df.ts# = ts.ts#;

NAME     STATUS
-------- ----------
HOGE     NOT ACTIVE
SYSAUX   NOT ACTIVE
SYSTEM   NOT ACTIVE
UNDOTBS1 NOT ACTIVE

–> ステータスが NOT ACTIVE (非バックアップモード状態) であること