3.1 开启数据库归档
查看当前数据库归档模式
archive log list
?启动数据库归档模式(需停机后在mount模式下修改)
shutdown immediate # 关闭数据库?
startup mount # 启动实例并挂载数据库?
alter database archivelog; # 更改数据库为归档模式?
alter database open; # 打开数据库?
alter system archive log start; # 启用自动归档
shutdown immediate # 关闭数据库?
startup # 正常启动数据库?
3.2 配置数据库自动归档
3.2.1 方法一(命令设定方式)
查看数据库当前归档状态
archive log list;
?查看当前归档文件格式
show parameter log_archive_format
?查看当前归档文件路径及归档空间大小
show parameter DB_RECOVERY_FILE_DEST
?修改当前归档文件格式为%t_%s_%r.arch,以便与数据库文件区分(不影响归档文件使用,重启生效)
alter system set log_archive_format='%t_%s_%r.arch' scope=spfile;
禁用数据库默认闪回区
alter system set db_recovery_file_dest = '' scope=spfile;
清空数据库默认闪回区路径(建议使用log_archive_dest_n来替代log_archive_dest,这两个参数不能同时配置,否则可能会导致数据库无法启动)
alter system set log_archive_dest = '' scope=spfile;
设置系统自定义归档区
alter system set log_archive_dest_1 = 'location=D:/Oracle/oralog' scope=spfile;
重启数据库使修改生效
shutdown immediate?
startup
再次确认数据库归档状态
archive log list;
3.2.2 方法二(pfile文件配置)
方法一的设定方式,也可通过直接修改pfile文件达到目的 查看当前数据库pfile文件路径
show parameter spfile
或
show parameter pfile
直接编辑D:\Oracle\product\11.2.0\dbhome_1\database\SPFILEPMS.ORA文件(windows建议用记事本编辑,避免字符问题) 修改以下内容:
*.log_archive_dest_1='location=D:/Oracle/oralog'
*.log_archive_dest=''
*.log_archive_format='%t_%s_%r.arch'
*.db_recovery_file_dest=''
修改完成后重启数据库,能达到同样效果
3.3 验证归档
手动执行一次归档,即可在D:\Oracle\oralog下查看到归档文件
alter system switch logfile;
或通过RMAN进行手动归档
backup archivelog all;
查看归档日志信息
select recid, name, first_time,next_time from v$archived_log;
或通过RMAN查看归档日志信息
list backup;
3.4 RMAN备份
RMAN备份的前提需要开启数据库归档,因此上面的日志归档必须开启
RMAN连接数据库
rman target /
查看当前数据库RMAN备份配置
show all;
配置说明:
RMAN> show all;?
使用目标数据库控制文件替代恢复目录?
db_unique_name 为 PMS 的数据库的 RMAN 配置参数为:?
# 指定RMAN保留多少份完全或级别为0的备份,超过的将被标记为冗余备份,默认为1?
CONFIGURE RETENTION POLICY TO REDUNDANCY 7;?
# 备份优化功能开关,默认为off?
CONFIGURE BACKUP OPTIMIZATION OFF; # default?
# 指定备份时I/O操作的设备类型?
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default?
# 自动备份控制文件,默认为OFF?
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default?
# 自动备份控制文件的路径和格式,%F处可定义路径,如“E:\BACKUP\%F”?
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default?
# 配置数据库备份并行度,该并行度决定了备份时可开启的通道数,默认为1?
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default?
# 配置备份时生成数据文件的份数(该配置仅在自动分配通道时有效)?
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default?
# 配置备份时生成归档文件的份数(该配置仅在自动分配通道时有效)?
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default?
# 配置备份集大小,默认不限制?
CONFIGURE MAXSETSIZE TO UNLIMITED; # default?
# 加密备份集,默认为OFF?
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default?
# 配置加密算法,默认采用AES128算法加密?
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default?
# 配置压缩算法,默认采用BASIC算法压缩?
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default?
# 配置归档文件删除策略,默认为NONE,表示归档备份完成后就可以被删除;但在DG环境中,DBA要保证归档文件在备机(standby)成功接收并应用之前始终保留该文件,因此在DG环境中需要设置为applied on standby?
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default?
# 设定控制文件的快照文件存放路径(快照文件在备份期间生成,用于控制备份文件的读一致性)?
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:\ORACLE\PRODUCT\11.2.0\DBHOME_1\DATABASE\SNCFPMS.ORA'; # default
注:RMAN备份需要确保: 1.确保CONTROLFILE AUTOBACKUP处于OFF状态(若不处于OFF状态,手动执行备份时会将controlfile备份出的文件当作冗余文件删除); 2.确保DEVICE TYPE等也需要保持默认(否则执行手动备份时会去配置的目录下检查冗余,而不是在备份输出目录下检查) 恢复上面两条为默认的方法:
configure controlfile autobackup clear;? configure controlfile autobackup format for device type disk clear;? configure CHANNEL DEVICE TYPE DISK clear
3.4.1 配置RMAN备份
修改备份并行级别(通道数)为4(根据自身服务器情况配置)
CONFIGURE DEVICE TYPE DISK PARALLELISM 4;
恢复I/O操作的设备类型(默认备份设备为磁盘)
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
设置备份文件格式(只适用于磁盘设备)
configure channel 1 device type disk format 'D:/Oracle/oraback/backup1_%U';
configure channel 2 device type disk format 'D:/Oracle/oraback/backup2_%U';
configure channel 3 device type disk format 'D:/Oracle/oraback/backup3_%U';
configure channel 4 device type disk format 'D:/Oracle/oraback/backup4_%U';
打开控制文件与服务器参数文件自动备份
configure controlfile autobackup on;
设置控制文件与服务器参数文件自动备份格式
configure controlfile autobackup format for device type disk to 'D:/Oracle/oraback/ctl_%F';
3.4.2 查看备份方案报表
report schema;
3.4.3 执行全库备份
备份全库(备份全库(database)及控制文件(controlfile)、参数文件(spfile)、归档日志(Archive log)、重做日志(Redo log),删除已备份的相关日志,若不想删除备份日志,去掉delete input即可)
backup database plus archivelog delete input;
?此时发现旧的归档日志已被清理
3.4.4 其他备份方案
备份表空间(备份全库及控制文件、参数文件,并重做归档日志,删除已备份的归档日志)
backup tablespace system plus archivelog delete input;
备份归档日志(删除已备份的归档日志)
backup archivelog all delete input;
3.4.5 其他指令
查看备份列表
list backup;
交叉验证备份
crosscheck backup;
报告过期备份文件
report obsolete;
删除过期备份文件(RMAN会根据备份冗余策略确定备份是否过期,noprompt表示无需确认直接执行,若需确认,可去除该标识)
delete noprompt obsolete;
交叉验证归档日志
crosscheck archivelog all;
删除失效归档日志(noprompt表示无需确认直接执行,若需确认,可去除该标识)
delete noprompt expired archivelog all;
删除3天前归档日志(仅删除标记为失效的归档日志)
delete archivelog all completed before 'sysdate-3';
3.5 自动化备份脚本
第一、以下脚本为本人数据库搭建测试使用,生产环境要使用时,请仔细核对其中配置。
第二、下面脚本中.bat文件为windows脚本文件,可用于Windows定时任务设置使用,.txt为RMAN执行脚本,专供.bat脚本调用。所有脚本均存放在“D:/Oracle/oracmd”目录下,若您的存放位置发生改变,记得修改脚本中的路径
第三,若您后面有配置DG后,请将以下.bat脚本中RMAN登录方式进行修改,强烈建议您使用具体用户登录rman,而非使用“/”登录。如:
全量备份脚本内容:
rman target sys/000000@pms_standby nocatalog cmdfile='D:\Oracle\oracmd\fullback_shell.txt' log='D:\Oracle\oraback\fullback.log'
0级增量备份脚本内容:
rman target sys/000000@pms_standby nocatalog cmdfile='D:\Oracle\oracmd\incrback0_shell.txt' log='D:\Oracle\oraback\incrback0.log'
1级增量备份脚本内容:
rman target sys/000000@pms_standby nocatalog cmdfile='D:\Oracle\oracmd\incrback1_shell.txt' log='D:\Oracle\oraback\incrback1.log'
3.5.1 全量备份
fullback.bat
rman target / nocatalog cmdfile='D:\Oracle\oracmd\fullback_shell.txt' log='D:\Oracle\oraback\fullback\fullback.log'
fullback_shell.txt
run {
allocate channel d1 type disk;
allocate channel d2 type disk;
allocate channel d3 type disk;
crosscheck backup;
delete archivelog all completed before 'sysdate-3';
crosscheck archivelog all;
delete noprompt expired archivelog all;
backup as compressed backupset database filesperset 10 format 'D:\Oracle\oraback\fullback\full_%d_%T_%s.dbf';
sql 'alter system archive log current';
backup as compressed backupset archivelog all filesperset 10 format 'D:\Oracle\oraback\fullback\log_%d_%T_%s.log';
backup current controlfile format 'D:\Oracle\oraback\fullback\ctl_%d_%T_%s.ora';
release channel d1;
release channel d2;
release channel d3;
report obsolete;
delete noprompt obsolete;
}
exit
注: 备份完成后会在F:\dbbacks\fullback目录下创建相关备份文件,文件说明: full_xxxx.dbf:数据文件备份文件,其中会包含控制文件和spfile参数文件备份 log_xxxx.log:归档日志文件备份文件 ctl_xxxx.ora:控制文件备份文件,该文件为本次备份时的控制文件,下次备份时会当作冗余文件清理(若开启自动备份,则该文件会被自动清理)
3.5.2 增量备份
incrback0.bat
rman target / nocatalog cmdfile='D:\Oracle\oracmd\incrback0_shell.txt' log='D:\Oracle\oraback\incrback\incrback0.log'
incrback0_shell.txt
run {
allocate channel d1 type disk;
allocate channel d2 type disk;
allocate channel d3 type disk;
crosscheck archivelog all;
delete noprompt expired archivelog all;
backup incremental level 0 database filesperset 10 format 'D:\Oracle\oraback\incrback\incr0_%d_%T_%s.dbf' plus archivelog format 'D:\Oracle\oraback\incrback\log0_%d_%T_%s.log';
backup current controlfile format 'D:\Oracle\oraback\incrback\ctl0_%d_%T_%s.ora';
backup spfile format 'D:\Oracle\oraback\incrback\spf0_%d_%T_%s.ora';
release channel d1;
release channel d2;
release channel d3;
report obsolete;
delete noprompt obsolete;
crosscheck backup;
delete noprompt expired backup;
delete archivelog all completed before 'sysdate-3';
crosscheck archivelog all;
delete noprompt expired archivelog all;
}
exit
incrback1.bat
rman target / nocatalog cmdfile='D:\Oracle\oracmd\incrback1_shell.txt' log='D:\Oracle\oraback\incrback\incrback1.log'
incrback1_shell.txt
run {
allocate channel d1 type disk;
allocate channel d2 type disk;
allocate channel d3 type disk;
crosscheck archivelog all;
delete noprompt expired archivelog all;
backup incremental level 1 database filesperset 10 format 'D:\Oracle\oraback\incrback\incr1_%d_%T_%s.dbf' plus archivelog format 'D:\Oracle\oraback\incrback\log1_%d_%T_%s.log';
backup current controlfile format 'D:\Oracle\oraback\incrback\ctl1_%d_%T_%s.ora';
backup spfile format 'D:\Oracle\oraback\incrback\spf1_%d_%T_%s.ora';
release channel d1;
release channel d2;
release channel d3;
report obsolete;
delete noprompt obsolete;
crosscheck backup;
delete noprompt expired backup;
delete archivelog all completed before 'sysdate-3';
crosscheck archivelog all;
delete noprompt expired archivelog all;
}
exit
注: 增量备份分为两部分,增量备份0和增量备份1,增量备份1是基于最近一次增量备份0进行的备份,因此要建立增量备份1,需要先建立增量备份0;新的备份0创建时,会根据策略将旧的备份标记为无效备份(无效备份可被清理)
以上,RMAN备份的内容就完了,至于RMAN恢复的问题,等后面开其他篇章再说。RMAN备份和恢复问题不属于本次DG搭建的主要内容,因此不过多阐述。
上一篇:Oracle11g DG实战配置(Windows版)(二)主库安装与基础配置
下一篇:Oracle11g DG实战配置(Windows版)(四)备库数据库安装
|