| 本資料を作成する上で参考にした資料 • Backup and Recovery Performance and Best Practices for Exadata Cell and Oracle Exadata Database Machine – http://www.oracle.com/technetwork/database/features/availability/maa-tech-wp-sundbm-backup-11202-183503.pdf • Backup and Recovery of Oracle Exadata: Experiences and Best Practices – http://www.oracle.com/technetwork/database/availability/8277-exadata-backuprecovery-1888646.pdf • Doc ID 1311518.1 Incremental Rman Backup High Waits On 'block change tracking buffer space’ • Doc ID 1072545.1 RMAN Performance Tuning Using Buffer Memory Parameters • Oracle Databaseバックアップおよびリカバリ・リファレンス 11gリリース2(11.2) • Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド 11g リリース2(11.2) White Paper、Doc、マニュアル、(実機検証…) 6
| Zero Data Loss Recovery Applianceの登場 Exadata Backup Destination Options 10 Fiber Channel SAN 10GigE or InfiniBand Network Tape library InfiniBand Network 10GigE or InfiniBand Network Zero Data Loss Recovery Appliance •ゼロ・データ・ロス •膨らみ続けるバックアップ・コスト対策 •あらゆるDBバージョンとプラットフォーム ZFS Storage Appliance Storage Expansion Rack
| 最適なバックアップ方式の選択 • 次のセッションへご参加下さい!! 「Oracle Zero Data Loss Recovery Appliance」による データベース保護のアーキテクチャ • 本セッションでは、 Zero Data Loss Recovery Applianceの登場で益々重要な機能となってきた Oracle Recovery Managerについて – 高速増分バックアップの動作 – チューニング方法 – 注意すべきポイント をご紹介させて頂きます。 11
| CTWR dba buffer • CTWR dba bufferのサイズは、LARGE_POOL_SIZEから導出 • 隠しパラメータで動的にサイズ変更可能(Doc ID 1311518.1) – サポートの指示に従って設定を行って下さい – 実際に確保される上限はLARGE_POOL_SIZE以下となる為、 LARGE_POOL_SIZEの拡張も同時に検討してください • 12c以降、動的に拡張する機能が追加 初期サイズと変更方法(11g Release 2) SQL> select pool,name,sum(bytes) from v$sgastat where name like 'CTWR%' group by pool,name; large pool CTWR dba buffer 1167360 17
| 正しく理解しておくべき構文 FOR RECOVER OF COPY と WITH TAG • BACKUP INCREMENTAL LEVEL 1 CUMULATIVE FOR RECOVER OF COPY WITH TAG 'INCR_UPDATE' DATABASE ; – FOR RECOVER OF COPY • Level0 Image Copy Backupが存在しない場合、Level0 Image Copy Backupが取得される • Level0 Image Copy Backupが存在する場合、Level1 Backupsetが取得される – 運用の中で新規表領域が追加された場合でも、バックアップ・スクリプトの改修が不要 • この句を指定せずに、Level0 Backupが存在しない場合には、Level0 Backupsetが取得される – Level0 Backupsetは増分適用対象にはならないので注意 – WITH TAG • 増分バックアップの増分開始SCNを決める上で、Level0のバックアップを識別する為に必須 – 指定したTAG名のLevel0のバックアップが存在しない場合は、Level0のバックアップを取得する 26
| Fast Recovery Area (高速リカバリ領域) Recovery Files Comments Control file and archived log backups Estimate total size of all archived logs generated between successive backups on the busiest days x 2 (in case of unexpected redo spikes) Flashback logs (Redo rate x Flashback retention target time) x 2 Image copy backups Size of database minus temporary files Backup set backups (full) # of full backups x estimated size Incremental Backups # of incremental backups* x estimated size サイジング考え方 * リカバリ可能とする日数”+1日”を忘れがちです!! 例えば、一週間以内の任意の地点へリカバリする要件であれば、8日分 29
| Sample Backup Script 1 – (1) 日曜日はフルバックアップ& 月~土曜日は高速増分バックアップ(累積) Recovery Window: 1日間 à Level0が 2世代分のFRA領域が必要 RMAN> #事前設定 CONFIGURE RETENTION POLICY TO REDUNDANCY 2 ; # Level0が2世代となる為 CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY BACKED UP 1 TIMES TO DEVICE TYPE DISK ; # Data Guard環境を想定 CONFIGURE COMPRESSION ALGORITHM 'LOW' ; # ArchiveLog Backup用 RMAN> #日曜日のフルバックアップ run{ RECOVER COPY OF DATABASE WITH TAG 'INCR_UPDATE' UNTIL TIME 'SYSDATE-1' ; DELETE NOPROMPT OBSOLETE ; # 不要なバックアップ、Archive Logを削除 BACKUP AS COPY INCREMENTAL LEVEL 0 DATABASE TAG 'INCR_UPDATE' ; BACKUP AS COMPRESSED BACKUPSET ARCHIVELOG ALL TAG 'INCR_UPDATE' ;} 39
| Sample Backup Script 2 毎日、高速増分バックアップ(差分)、Recovery Window: 7日間、Backup Window: 1時間 à 1世代のBackup RMAN> #事前設定 CONFIGURE RETENTION POLICY TO REDUNDANCY 1 ; # Level0が1世代となる為 CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY BACKED UP 1 TIMES TO DEVICE TYPE DISK ; # Data Guard環境を想定 CONFIGURE COMPRESSION ALGORITHM 'LOW' ; # ArchiveLog Backup用 RMAN> #毎日の高速増分バックアップ(増分適用処理、Level0の破損チェック含む) run{ RECOVER COPY OF DATABASE WITH TAG 'INCR_UPDATE' UNTIL TIME 'SYSDATE-(7+1/24)' ; VALIDATE CHECKLOGICAL DATAFILECOPY ALL NODUPLICATES DEVICE TYPE DISK ; DELETE NOPROMPT OBSOLETE ; BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'INCR_UPDATE' DATABASE ; BACKUP AS COMPRESSED BACKUPSET ARCHIVELOG ALL TAG 'INCR_UPDATE' ;} 41
| Sample Backup Script 3 – (1) 毎日、高速増分バックアップ(累積) Recovery Window: 7日間 à 2世代(最新のLevel0 & 過去7日以内にリカバリ可能なLevel0+Level1) RMAN> #事前設定 CONFIGURE RETENTION POLICY TO REDUNDANCY 2 ; # Level0が2世代となる為 CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY BACKED UP 1 TIMES TO DEVICE TYPE DISK ; # Data Guard環境を想定 CONFIGURE COMPRESSION ALGORITHM 'LOW' ; # ArchiveLog Backup用 RMAN> #初めてのバックアップ run{ BACKUP AS COPY INCREMENTAL LEVEL 0 DATABASE TAG 'NEWEST' ; BACKUP AS COPY INCREMENTAL LEVEL 0 DATABASE TAG 'BEFORE7DAYS' ; BACKUP AS COMPRESSED BACKUPSET ARCHIVELOG ALL TAG 'INCR_UPDATE' ;} 42
| Sample Backup Script 3 – (2) 毎日、高速増分バックアップ(累積) Recovery Window: 7日間 à 2世代(最新のLevel0 & 過去7日以内にリカバリ可能なLevel0+Level1) RMAN> #毎日の高速増分バックアップ(二つのLevel0の増分適用処理を含む) run{ RECOVER COPY OF DATABASE WITH TAG 'NEWEST' ; RECOVER COPY OF DATABASE WITH TAG 'BEFORE7DAYS' UNTIL TIME 'SYSDATE-7' ; DELETE NOPROMPT OBSOLETE ; BACKUP INCREMENTAL LEVEL 1 cumulative FOR RECOVER OF COPY WITH TAG 'NEWEST' DATABASE ; BACKUP AS COMPRESSED BACKUPSET ARCHIVELOG ALL TAG 'INCR_UPDATE' ;} ü毎日の高速増分バックアップで共通のLevel1バックアップを取得し、 2つのLevel0 Image Copy Backupが7日間のズレを維持したまま毎日ロールフォワードされていく üもしもの障害時にはリカバリ目標地点をUNTIL句で指定したRESTOREコマンドの実行が必要 ü UNTIL句を指定しないRESTOREでは、最新のバックアップがリストアされる為 43
| Input/Output Bufferの数とサイズの確認 Query V$BACKUP_ASYNC_IO / GV$BACKUP_ASYNC_IO 56 SQL> set linesize 300 pagesize 500 col TYPE for a9 col STATUS for a12 col FILENAME for a65 col TOTAL_MB for 999,999,999 alter session set NLS_DATE_FORMAT='MM/DD HH24:MI:SS'; select INST_ID, USE_COUNT, OPEN_TIME, CLOSE_TIME, SID, TYPE, STATUS, ELAPSED_TIME/100 "ELPD(SEC)", BUFFER_SIZE, BUFFER_COUNT, TOTAL_BYTES/1024/1024 "TOTAL_MB", IO_COUNT, READY, SHORT_WAITS, LONG_WAITS, FILENAME from GV$BACKUP_ASYNC_IO where OPEN_TIME > to_date('11/27 13:00:00') -- Backup開始日時を指定すると便利 order by INST_ID, USE_COUNT, TYPE ;
| 非同期I/Oのデータ読込み性能の確認(1) Query V$BACKUP_ASYNC_IO / GV$BACKUP_ASYNC_IO 65 SQL> set linesize 300 pagesize 500 col TYPE for a9 col STATUS for a12 col FILENAME for a65 col TOTAL_MB for 999,999,999 alter session set NLS_DATE_FORMAT='MM/DD HH24:MI:SS'; select INST_ID, USE_COUNT, OPEN_TIME, CLOSE_TIME, SID, TYPE, STATUS, BUFFER_SIZE, BUFFER_COUNT, ELAPSED_TIME/100 "ELPD(SEC)", TOTAL_BYTES/1024/1024 "TOTAL_MB", EFFECTIVE_BYTES_PER_SECOND, IO_COUNT, READY, SHORT_WAITS, LONG_WAITS, FILENAME from GV$BACKUP_ASYNC_IO where OPEN_TIME > to_date('11/27 13:00:00') -- Backup開始日時を指定すると便利 order by INST_ID, USE_COUNT, TYPE ;