データベース全体を一括バックアップしたい場合

データベース全体をバックアップモードに切替えて、コールドバックアップする方法の一例。



(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 (非バックアップモード状態) であること

補足

・ステータスが ACTIVE のデータファイルが存在した場合、
alter database begin backup の実行は失敗するので注意。

・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> select log_mode from v$database;

LOG_MODE
----------
ARCHIVELOG

–> NOARCHIVELOG の場合は、アーカイブログモードへ切替える必要がある。

 

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

SQL> alter database begin backup;

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

補足

もしノーアーカイブログモードで begin backup した場合はエラーとなる。

SQL> alter database begin backup;

alter database begin backup
*
行1でエラーが発生しました。:
ORA-01123:
オンライン・バックアップを開始できません。メディア・リカバリが使用不可です。

 

(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   ACTIVE
SYSTEM   ACTIVE
UNDOTBS1 ACTIVE

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

 

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

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

 

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

SQL> alter database 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 (非バックアップモード状態) であること