Oracle数据库通过standby Database进行备份

通常我们去做数据库备份时,都会在主库直接去备份,但如果主库压力大,或者存储性能较差的情况下,其实是可以通过备库去进行备份的。

image-20240421080600394

如上图,备份软件接到备库中进行备份。这里会有一个比较关注的问题,通常我们对数据进行备份时,如果要进行一致性备份,那么主库一定会切换日志来保障。即要执行如下几个过程:

image-20240421081603971

这里就要求,在备份好归档和数据文件后,要触发日志切换,来备份在数据文件备份期间产生的日志。

好了,那么在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

1
2
3
4
5
6
7
8
rman target /
## 报错如下
Starting backup at 21-APR-24
RMAN-06820: WARNING: failed to archive current log at primary database
ORACLE error from target database: 
ORA-17629: Cannot connect to the remote database server
ORA-17627: ORA-01017: invalid username/password; logon denied
ORA-17629: Cannot connect to the remote database server

本地认证后,会报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)

updatedupdated2024-04-212024-04-21