通常我们去做数据库备份时,都会在主库直接去备份,但如果主库压力大,或者存储性能较差的情况下,其实是可以通过备库去进行备份的。
如上图,备份软件接到备库中进行备份。这里会有一个比较关注的问题,通常我们对数据进行备份时,如果要进行一致性备份,那么主库一定会切换日志来保障。即要执行如下几个过程:
这里就要求,在备份好归档和数据文件后,要触发日志切换,来备份在数据文件备份期间产生的日志。
好了,那么在Oracle Dataguard备库是完全只读或者mount状态,能否对其进行redo log的切换呢?很显然,从我们的认知中这样是绝对不会发生的。而Oracle则通过其Dataguard内部通信机制,会将这个日志切换的指令发送给主库,这样就能达到一致性备份的目标。
如何实现呢?
直接上结论:如果通过备库来实现一致性备份,需要通过rman target sys/password@stby
才能实现,而rman target /
却不可以。这是因为这个功能有Bug 17580082 - ACTIVE STANDBY - RMAN-06820: WARNING: FAILED TO ARCHIVE CURRENT LOG AT PRIMARY
|
|
本地认证后,会报ORA-01017,无法连接到主库去做日志切换。但还是能够将备库现有的数据及归档日志进行备份的。
那有什么办法修复这个问题么?
11.2.0.4是没戏了,如果想搞定能通过rman target /
对主库日志切换,那么只能升级到12.2及以上版本。
非sys用户可以在备库备份么?
11.2.0.4默认不可以,需要打补丁:p21476308。这是因为:Bug 18070699: ALLOW NON-SYS USERNAME GRANTED SYSDBA TO RESYNC DB_UNIQUE_NAME ALL
参考文档
RMAN-06820 ORA-17629 During Backup at Standby Site (Doc ID 1616074.1)
Howto make a consistent RMAN backup in an Standby database in Active DataGuard mode (Doc ID 1419923.1)
How to take consistent backups at standby site (Doc ID 1292126.1)