コールドバックアップする方法
表領域をバックアップモードに切替えて、コールドバックアップする方法の一例。
(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 (非バックアップモード状態) であること

