Oracle11g DG实战配置(Windows版)(三)主库数据库归档配置

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版)(四)备库数据库安装

猜你喜欢

转载自blog.csdn.net/Asgard_Hu/article/details/126969117