本日、参考のためにLinuxでoracle database rmanバックアップ設定ドキュメントを公開しました。現在、多くの環境でこのドキュメントをバックアップに使用しています。何か問題があれば修正してください。本番環境で修正します。
1.ディレクトリ設定
1.1.Rmanのバックアップ手順
バックアップレベルの説明
1.レベル0の完全バックアップが各増分バックアップの基礎です
。2。増分バックアップは、増分バックアップと累積バックアップの2つの状況に分けられます。前者は自分と同じレベルまたはそれより低いレベルにバックアップし、後者はバックアップするだけです。レベルより低い;
3、増分バックアップあり説明:レベル1またはレベル0以降のレベル1バックアップの変更、レベル2またはレベル1がレベル2バックアップまたはレベル0以降の変更後;
4、累積バックアップ手順:レベル0以降のレベル1バックアップの変更、Level2は、最後のlevel1またはlevel0以降の変更をバックアップします。
関連事項:
1。データ量が比較的少ない場合、またはデータベースサーバーのパフォーマンスが非常に高い場合は、1日1回フルバックアップを実行できます
。2。OSSストレージのため、バックアップ後にバックアップファイルをAlibabaCloudのOSSストレージに保存する必要がある場合4GBのサイズ制限があります。RMANバックアップピースのサイズを制限するには、次の3つのrman構成を変更する必要があります。
1、level0_backup.rman文件
allocate channel C2 type disk ; --修改前
allocate channel C2 type disk maxpiecesize = 3500M ; --修改后
2、level1_backup.rman文件
allocate channel C3 type disk ; --修改前
allocate channel C3 type disk maxpiecesize = 3500M ; --修改后
3、level2_backup.rman文件
allocate channel C4 type disk ; --修改前
allocate channel C4 type disk maxpiecesize = 3500M ; --修改后
3. crontabタイミングタスクを構成し、忙しい営業時間を避け
ます。4。oracleユーザーを使用してタイミングタスクを構成します。rootユーザーを使用してタイミングタスクを構成する必要がある場合は、環境変数の変更と、スケジュールされたタスクのスクリプトセクションでのスクリプトの実行に注意してください。パスには、読み取りおよび書き込みの実行権限があります。
1.2。ディレクトリの説明
デーモンライブラリバックアップスクリプトパス:/ backup / rman / scripts /
日付によるアーカイブファイルのバックアップ:/ backup / arch / date +%Y%m%d
制御ファイルのバックアップ:/ backup / rman / controlfile
日付によるデータベースファイルのバックアップ:/ backup / rman / data / date +%Y%m%d
日付ごとにバックアップログを生成します:/ backup / rman / logs / date +%Y%m%d
RMANバックアップスクリプト:/ backup / rman / scripts
上記のすべてのディレクトリに入力してくださいリモートバックアップ。
2.rmanバックアップ
2.1。バックアップ戦略
最新の5つのバックアップデータを保持し
ます。毎日午前4時45分に冗長で無効なバックアップを削除します。毎日
12時と20時にアーカイブログを
バックアップします。毎日03:20にデータベースのレベル0の完全バックアップを実行します。
2.2。バックアップ計画
ここで使用する日用品は、月曜日から土曜日まで、実際のニーズに応じて追加し、日曜日に完成させることができます。
時間月曜日から日曜日
12:00ログバックアップ
20:00ログバックアップ
03:20完全バックアップ
スクリプトをoracleユーザーのcrontabに追加し、戦略に従って自動的に実行し、実際のニーズに応じてスケジュールされたタスクを調整します。
$ crontab -e
20 03 * * * /backup/rman/scripts/level0_backup.sh
45 04 * * * /backup/rman/scripts/delobsolete.sh
00 12 * * * /backup/rman/scripts/arch.sh
00 20 * * * /backup/rman/scripts/arch.sh
2.3。準備
oracleデータベースを「インストールモジュール」に配置してログアーカイブモードを有効にすると、アーカイブされたログがクイックリカバリ領域に保存されます
mkdir -p /backup/arch
mkdir -p /backup/rman/controlfile
mkdir /backup/rman/data
mkdir /backup/rman/logs
mkdir /backup/rman/scripts
chown -R oracle:oinstall /backup
次のデータベース接続の前に接続SIDを設定します
$ export ORACLE_SID=daemon
$ sqlplus / as sysdba
SQL> SELECT log_mode from v$database;
出力結果は、アーカイブがオンになっていることを意味するARCHIVELOGです。
出力結果は、アーカイブがオンになっていないことを意味する
NOARCHIVELOGです。(1)操作はアーカイブログを開きます。
$ sqlplus / as sysdba
SQL> shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
(2)変更追跡機能を有効にして、最後のバックアップ以降に変更されたデータブロックの場所を記録し、増分バックアップのパフォーマンスを向上させます。変更追跡ファイルは、デフォルトでクイックリカバリ領域に保存されます(RMAN増分バックアップを使用してRMANバックアップの時間を短縮すると、ブロック変更追跡がアクティブになります)。
$ sqlplus / as sysdba
SQL> shutdown immediate;
startup mount
alter system set db_create_file_dest='/u01/oracle/fast_recovery_area';
alter database enable block change tracking;
alter database open;
(3)フラッシュバック領域のサイズを表示および変更します(サイズは実際の状況に応じて変更されます)
SQL> show parameter db_recovery_file_dest;
alter system set db_recovery_file_dest_size=40G scope=both;
shutdown immediate;
startup;
2.4.rman構成
$ rman target /
CONFIGURE RETENTION POLICY TO REDUNDANCY 5;
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 5 DAYS;
上記の2つの文は、1つの条件のみを使用できます。5つのコピーまたは5日間の回復ウィンドウを保存します(回復ウィンドウを使用することをお勧めします)。必要に応じて調整してください
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/rman/controlfile/%F';
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/backup/rman/controlfile/snapcf_daemon.f';
2.5.rmanスクリプト
1)delobsolete.rman
cd /backup/rman/scripts
$ vi delobsolete.rman
run {
crosscheck backup;
delete noprompt obsolete;
delete noprompt expired backup;
}
exit
2)arch.rman
$ vi arch.rman
sql 'alter system archive log current' ;
run {
allocate channel C1 type disk FORMAT '/backup/arch/' ;
backup
skip inaccessible
tag arch_daemon
filesperset 10 format '/backup/arch/%T/arch_%T_%d_%t_%s_%p' archivelog all delete input;
release channel C1;
}
exit
3)level0_backup.rman
$ vi level0_backup.rman
sql 'PURGE DBA_RECYCLEBIN';
sql 'alter system archive log current' ;
run {
allocate channel C2 type disk ;
backup
incremental level 0
skip inaccessible
tag full0_daemon
DATABASE
filesperset 5 format '/backup/rman/data/%T/db_0_%T_%d_%t_%s_%p';
release channel C2;
}
exit
4)level1_backup.rman
$ vi level1_backup.rman
sql 'PURGE RECYCLEBIN';
sql 'alter system archive log current' ;
run {
allocate channel C3 type disk ;
backup
incremental level 1
skip inaccessible
tag level1_daemon
DATABASE
filesperset 5 format '/backup/rman/data/%T/db_1_%T_%d_%t_%s_%p_inc' ;
release channel C3;
}
exit
5)level2_backup.rman
$ vi level2_backup.rman
sql 'PURGE RECYCLEBIN';
sql 'alter system archive log current' ;
run {
allocate channel C4 type disk ;
backup
incremental level 2
skip inaccessible
tag level2_daemon
DATABASE
filesperset 5 format '/backup/rman/data/%T/db_2_%T_%d_%t_%s_%p_inc' ;
release channel C4;
}
exit
2.6。スケジュールされたタスクスクリプト
1)delobsolete.sh
$ vi delobsolete.sh
#!/bin/sh
#export LANG=en_US
source /home/oracle/.bash_profile
export ORACLE_SID=daemon
mkdir /backup/rman/logs/`date +%Y%m%d`
rman target / cmdfile=/backup/rman/scripts/delobsolete.rman msglog=/backup/rman/logs/`date +%Y%m%d`/`date +%Y%m%d_%H%M_obsolete.log`
exit
2)arch.sh
$ vi arch.sh
#!/bin/sh
#export LANG=en_US
source /home/oracle/.bash_profile
export ORACLE_SID=daemon
mkdir /backup/arch/`date +%Y%m%d`
mkdir /backup/rman/logs/`date +%Y%m%d`
rman target / cmdfile=/backup/rman/scripts/arch.rman msglog=/backup/rman/logs/`date +%Y%m%d`/`date +%Y%m%d_%H%M_arch.log`
exit
3)level0_backup.sh
$ vi level0_backup.sh
#!/bin/sh
#export LANG=en_US
source /home/oracle/.bash_profile
export ORACLE_SID=daemon
mkdir /backup/rman/data/`date +%Y%m%d`
mkdir /backup/rman/logs/`date +%Y%m%d`
rman target / cmdfile=/backup/rman/scripts/level0_backup.rman msglog=/backup/rman/logs/`date +%Y%m%d`/`date +%Y%m%d_%H%M_0.log`
exit
4)level1_backup.sh
$ vi level1_backup.sh
#!/bin/sh
#export LANG=en_US
source /home/oracle/.bash_profile
export ORACLE_SID=daemon
mkdir /backup/rman/data/`date +%Y%m%d`
mkdir /backup/rman/logs/`date +%Y%m%d`
rman target / cmdfile=/backup/rman/scripts/level1_backup.rman msglog=/backup/rman/logs/`date +%Y%m%d`/`date +%Y%m%d_%H%M_1.log`
exit
5)level2_backup.sh
$ vi level2_backup.sh
#!/bin/sh
#export LANG=en_US
source /home/oracle/.bash_profile
export ORACLE_SID=daemon
mkdir /backup/rman/data/`date +%Y%m%d`
mkdir /backup/rman/logs/`date +%Y%m%d`
rman target / cmdfile=/backup/rman/scripts/level2_backup.rman msglog=/backup/rman/logs/`date +%Y%m%d`/`date +%Y%m%d_%H%M_2.log`
exit