前言
最近项目要求给生产环境中的RAC数据库配置DG,过程中遇到不少问题,以此记录,避免同一个问题犯二。
环境
主库
node | instance_name | db_name | db_unique_name | IP |
---|---|---|---|---|
rac1 | wwlc1 | wwlc | wwlc | 192.168.66.66 |
rac2 | wwlc2 | wwlc | wwlc | 192.168.66.88 |
备库
instance_name | db_name | db_unique_name | IP |
---|---|---|---|
wwlc | wwlc | wwlcdg | 192.168.66.237 |
安装数据库软件(备库)
安装过程略,可参见:Linux下安装Oracle11.2.0.1小结
PS:只安装软件不创建数据库
确保主库处于归档模式(主库)
|
|
如果主库处于非归档模式,需要修改:
确保主库强制Logging(主库)
|
|
如果主库处于非归档模式,需要修改:
配置DG所需参数(主库)
|
|
生成pfile并同密码文件一起传输到备库相应目录(主库)
|
|
创建目录(备库)
|
|
配置监听(备库)
|
|
配置tnsnames.ora(主库、备库)
rac所有节点 、DG备库添加同样的配置,如下:
修改启动参数(备库)
|
|
启动数据库至nomount状态(备库)
|
|
复制活动数据库(备库)
|
|
添加standby log(主库、备库)
原则
RAC每个 thread都需要创建且standby redo log 比 redo log 多一组,大小相同
主库
|
|
备库
|
|
启动物理备库并开启管理恢复进程(MRP)(备库)
|
|
验证
可通过在主库暂停、开启备用归档目录和切换日志查看数据同步情况。
踩坑
- RMAN-06217: not connected to auxiliary database with a net service name
duplicate target database for standby from active database需要使用net service name连接进行账号密码验证,如果使用操作系统验证会出现此错误。 - RMAN-04006: error from auxiliary database、ORA-12528: TNS:listener: all appropriate instances are blocking new connections
备用数据库处于nomount状态,无法动态注册到监听,通过net service name连接auxiliary时无法找到服务,可通过在监听器中添加静态注册解决。 - ORA-10458: standby database requires recovery
duplicate后打开物理备库可能会报此错误,此时只要打开备库的 日志恢复,让备库apply重做日志即可。 - ORA-17628, ORA-19505
db_file_name_convert没有设置,或者设置错误。 - RMAN-05517: temporary file * conflicts with file used by target dat
备库pfile或者duplicate时添加 nofilenamecheck选项,配置正确的db_file_name_convert、log_file_name_convert参数。 - MAN-04017: startup error description: ORA-00439: feature not enabled: Real Application Clusters
由于主库是 rac ,备库是单实例,所以备库pfile或者duplicate时,需要设置 cluster_database =’false’。 - RMAN-05535: WARNING: All redo log files were not defined properly.
log_file_name_convert参数必须配置,且为redo日志而不是archive log。 - RMAN-05503: at least one auxiliary channel must be allocated to execute this command
手动分配复制通道时(allocate channel) 必须要加上allocate auxiliary channel。 - RMAN-06024: no backup or copy of the control file found to restore
如果数据库没有做过全备,则duplicate命令必须带关键词” from active database”。 - RMAN-06034: at least 1 channel must be allocated to execute this command
如果duplicate命令中使用关键词” from active database”,则必须为主库分配通道。 - ORA-17628: Oracle error 19505 returned by remote Oracle server
相关路径必须存在,比如控制文件路径不存在。 - ORA-16047: DGID mismatch between destination setting and standby
log_archive_config参数未配置 - ORA-16057: server not in Data Guard configuration
log_archive_config参数错误,千万注意:dg_config 中必须是db_unique_name,而且主备库都必须配置正确。