RMANスクリプト

※コピーすると改行が抜ける場合はソースをダブルクリックして強調表示を外してからコピーしてください

--------------------------------------バックアップの取得--------------------------------------
--データベース+制御ファイルのバックアップ
--%p・・・バックアップ・セット内のピース番号
--%s・・・バックアップ・セット番号
--%t・・・バックアップ・セットのタイムスタンプ。
BACKUP DATABASE FORMAT 'backupset_%t_%s_%p';

--データファイル+制御ファイル+アーカイブログのバックアップ+バックアップ済みアーカイブの削除
BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT;

--アーカイブログのバックアップ
BACKUP ARCHIVELOG ALL DELETE input FORMAT 'backupset_%t_%s_%p';

--制御ファイルのバックアップ
BACKUP current controlfile;
--保存先指定
BACKUP current controlfile to '<パス>';

--表領域のバックアップ
BACKUP tablespace users;

--データファイルのバックアップ
BACKUP DATAFILE 'E:\oracle\oradata\ORCL102\USERS2.DBF' 

--SPFILEのバックアップ
BACKUP SPFILE;

--増分バックアップ(9iまではStandard Editionでは使用不可)
--フルバックアップ
BACKUP incremental level 0 DATABASE;
--増分バックアップ
BACKUP incremental level 1 DATABASE;
--累積増分バックアップ
BACKUP incremental level 1 CUMULATIVE DATABASE;

--高速増分バックアップ(10g以降かつEnterprise Editionのみ利用可)
--有効化
alter database enable block change tracking using file '<チェンジトラッキングファイルのフルパス>' ;
--無効化
alter database disable block change tracking
--関連ビュー
v$block_change_tracking

--バックアップセットの圧縮
BACKUP AS COMPRESSED BACKUPSET TABLESPACE USERS;

--イメージコピーの取得(ノーアーカイブログモードでも取得可能だがMOUNT状態にする必要がある)
run{
 shutdown immediate;
 startup mount;
 allocate channel c1 device type disk;
 backup as copy database;
 release channel c1;
 alter database open;
}

--アーカイブのイメージバックアップ
BACKUP as COPY ARCHIVELOG ALL;

--アーカイブログのコピー(コピーしたアーカイブログも次回バックアップ対象となる)
COPY ARCHIVELOG '<コピー元アーカイブパス名>' to '<コピー先パス名>'; 
------------------------------------------バックアップの取得------------------------------------------

-----------------------------------------------リストア-----------------------------------------------
--制御ファイル
--nomount時に実行
set DBID=<該当DBのDBID>
restore controlfile from autobackup;
--明示的にリストアする制御ファイルを指定すればDBIDの設定は不要
restore controlfile from '<パスを含むファイル名>';

--データファイルのリストア&完全リカバリ(MOUNT時に実行)
restore database;
recover database;
alter database open;

--スタンバイ用のDB複製(ORCL102が複製元、ORCL102Sが複製先のSID)
set ORACLE_SID=ORCL102S 
rman target sys/change_on_install@ORCL102 auxiliary /

run {
set newname for datafile 1 to 'E:\oracle\oradata\ORCL102S\SYSTEM01.DBF'; 
set newname for datafile 2 to 'E:\oracle\oradata\ORCL102S\UNDOTBS01.DBF'; 
set newname for datafile 3 to 'E:\oracle\oradata\ORCL102S\SYSAUX01.DBF'; 
set newname for datafile 4 to 'E:\oracle\oradata\ORCL102S\USERS01.DBF'; 
set newname for tempfile 1 to 'E:\oracle\oradata\ORCL102S\TEMP01.DBF'; 
duplicate target database for standby dorecover ;
}
-----------------------------------------------リストア-----------------------------------------------

-----------------------------------------------RMANの設定---------------------------------------------
--設定表示
SHOW ALL;

--バックアップの保存方針
--デフォルト(1世代保存)
CONFIGURE RETENTION POLICY TO REDUNDANCY 1;
CONFIGURE RETENTION POLICY CLEAR;
--30日間保存
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 30 DAYS;

--バックアップのデフォルト保存先の変更
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT='E:\%U_%t_%p';

--バックアップ時の制御ファイルの自動コピー有無
CONFIGURE CONTROLFILE AUTOBACKUP ON;


--バックアップ情報表示
LIST BACKUP;
LIST BACKUP OF DATABASE;
LIST BACKUP OF CONTROLFILE;
LIST BACKUPSET;

list archivelog all;
list archivelog from time = '2009/06/22';   --※timeの他、SCN、SEQUENCE等の指定も可
list archivelog time between '2009/06/21' and '2009/06/22';
list archivelog until time  '2009/06/18';


--環境変数NLS_DATA_FORMATを設定しておくと時分秒まで出力される
--WINDOWSの場合
set NLS_DATE_FORMAT=YYYY/MM/DD HH24:MI:SS
--UNIX系OSでbashの場合
export NLS_DATE_FORMAT=YYYY/MM/DD HH24:MI:SS
--UNIX系OSでcshの場合
setenv NLS_DATE_FORMAT YYYY/MM/DD HH24:MI:SS

--不要と判断されるバックアップ表示
REPORT OBSOLETE;
-----------------------------------------------RMANの設定---------------------------------------------

--------------------------------------------アーカイブログの削除--------------------------------------
--時刻指定でアーカイブログ削除
DELETE ARCHIVELOG UNTIL TIME = "TO_DATE('2009/10/10 00:00:00','YYYY/MM/DD HH24:MI:SS')";
DELETE ARCHIVELOG UNTIL TIME = 'sysdate-(30/1440)' --30分前まで
--NOPROMPT指定の場合は確認を求められなくなる
DELETE NOPROMPT ARCHIVELOG FORMAT 'E:\oracle\oradata\flash_recovery_area\ORCL102' UNTIL TIME = 'sysdate-7';
--------------------------------------------アーカイブログの削除--------------------------------------

--------------------------------------------バックアップに対する処理----------------------------------
--バックアップセットのコピー
BACKUP BACKUPSET <key> FORMAT = '<出力先パス>';

※<key>はrmanの LIST BACKUPset コマンドで表示される
「BP Key」に対応

--保存方針により不要と判断されたバックアップの削除
DELETE noprompt obsolete;
delete noprompt archivelog all backed up 1 times to device type disk; 

--リストア可能か検証
restore database validate;
--------------------------------------------バックアップに対する処理----------------------------------

--------------------------------------------------その他----------------------------------------------
--チャネルの手動割り当て(処理のパラレル化)
RUN{
    ALLOCATE CHANNEL ch1 type DISK format '/home/200MB/%U';;
    ALLOCATE CHANNEL ch2 type DISK format '/home/ora102/%U';;
    BACKUP INCREMENTAL LEVEL 0 (DATABASE FORMAT 'ora_diff_backup_%T_%s_%p' );
}

--ASM領域にバックアップする場合の指定
backup as backupset database  format='+DG1';

--デバッグ設定
--チャネル
rman target / debug=all  log=rman.log --rman.logに出力
RMAN> run
  {
     allocate channel disk1 device type disk debug=3; --サーバプロセスのトレースにログが出力される
     backup database xxxxxx;
   }
--全体
rman target / debug trace=<file_name>

--rman以外(OSコマンド等)で削除されたアーカイブログやバックアップセット等の情報の消去
CROSSCHECK ARCHIVELOG ALL;
DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
--バックアップセット
CROSSCHECK BACKUP;
DELETE NOPROMPT EXPIRED BACKUP;
--コピー
CROSSCHECK COPY;
DELETE NOPROMPT EXPIRED COPY;

--db_recovery_file_destパラメータを使用している場合の使用量の確認
select * from v$recovery_file_dest;
--------------------------------------------------その他----------------------------------------------

マニュアル

SQL リファレンス 10g リリース2(10.2)
リファレンス 10g リリース2(10.2)
★ORACLE案件承ります