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)