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