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)

折りたたみ
展開