数据库管理268期 2024-11-29
- 数据库管理-第268期 srvctl在ADG备库添加PDB的service报错,看如何解决(20241129)
- 1 背景
- 2 处理过程
- 3 原因
- 总结
数据库管理-第268期 srvctl在ADG备库添加PDB的service报错,看如何解决(20241129)
作者:胖头鱼的鱼缸(尹海文)
Oracle ACE Pro: Database(Oracle与MySQL)
PostgreSQL ACE Partner
10年数据库行业经验,现主要从事数据库服务工作
拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证
墨天轮MVP、年度墨力之星,ITPUB认证专家、专家百人团成员,数盟会长老会成员,OCM讲师,PolarDB开源社区技术顾问,HaloDB外聘技术顾问,OceanBase观察团成员,青学会MOP技术社区(青年数据库学习互助会)技术顾问
圈内拥有“总监”、“保安”、“国产数据库最大敌人”等称号,非著名社恐(社交恐怖分子)
公众号:胖头鱼的鱼缸;CSDN:胖头鱼的鱼缸(尹海文);墨天轮:胖头鱼的鱼缸;ITPUB:yhw1809。
除授权转载并标明出处外,均为“非法”抄袭
最近在ADG备库为PDB添加service的时候出现了一个问题,跟随总监看看怎么解决的。
1 背景
因为主库有一台服务器最近多次出现本机磁盘IO挂死的现象,有时候影响SCAN的时候会导致配置了主备库双IP的一些业务错误连接到备库上而影响业务。和业务方沟通后,会将备库的service调整为主库service名称加一个"_ro"的后缀,业务调整期间需要维持一段时间原有service,具体操作如下:
srvctl add service -db dbdg -pdb pdb_xxx -s xxxdb_ro -preferred dbdg1,dbdg2,dbdg3 -role physical_standby
srvctl start service -db dbdg s xxxdb_ro
但是操作后启动有报错:
2 处理过程
原来的service都是在主库添加后再在备库添加,因此在主库完成了以下操作:
srvctl add service -db dbaas -pdb pdb_xxx -s xxxdb_ro -preferred dbaas1,dbaas2,dbaas3 -role physical_standby
srvctl start service -db dbaas s xxxdb_ro
srvctl stop service -db dbaas s xxxdb_ro
在主库添加新的service并完成一次启动关闭后再在备库启动对应service:
srvctl start service -db dbdg s xxxdb_ro
这时在备库上正常启动新增的service了。
3 原因
其实通过srvctl添加service的时候除了在GI中添加相关信息以外,在启动service的时候也会在数据库中写入/调用数据库中相关内容,而ADG环境下的备库是出于只读状态的,因此在service启动的时候无法写入/调用到对应的数据。这时可以到对应PBD中从dba_services视图查询相关内容:
select name,network_name,pdb from dba_services;
总结
使用srvctl在ADG环境备库中添加不同于主库的service时,需要在主库先进行一系列操作。
老规矩,知道写了些啥。