暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

数据库管理-第284期 奇怪的sys.user$授权(20250116)

原创 胖头鱼的鱼缸 2025-01-16
287

数据库管理284期 2025-01-16

数据库管理-第284期 奇怪的sys.user$授权(20250116)

作者:胖头鱼的鱼缸(尹海文) Oracle ACE Pro: Database PostgreSQL ACE Partner 10年数据库行业经验 拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证 墨天轮MVP,ITPUB认证专家 圈内拥有“总监”称号,非著名社恐(社交恐怖分子) 公众号:胖头鱼的鱼缸 CSDN:胖头鱼的鱼缸(尹海文) 墨天轮:胖头鱼的鱼缸 ITPUB:yhw1809。 除授权转载并标明出处外,均为“非法”抄袭

胖头鱼的鱼缸_01.png
昨天凌晨割接,做一个Oracle向某国产库的实时同步前置配置,主要包含开启数据库最小附加日志、开启表级附加日志以及创建用于同步的用户并授权。但是中间出了点,在启动同步工具的时候报了ORA-01031: insufficient privileges,但是由于授权命令已确认完整执行,因此进行了深度排查。

1 问题

首先还是说明一下环境,这是一套Exadata X8M的环境,两个计算节点,数据库版本为19.21。
经过同步工具日志的排查,是程序在PDB中获取sys.user$信息的时候出现了报错,用户的部分创建语句如下:

create user c##test identified by "Test#!123"; grant connect to c##test container=all; grant select any dictionary to c##test container=all; grant select on sys.user$ to c##test container=all;

这就很奇怪了,按照常理来说,授权增加了container=all子句,是不应该出现这一现象。后面我们统一使用以下语句进行测试,并尝试在测试库(19.22,四节点RAC)中复现:

select count(*) from sys.user$;

2 CDB与PDB

在解决问题的过程中发现,测试语句在CDB中可以正常获得结果,但是在PDB中会显示ORA-01031,常使用下面的命令处理:

alter session set container=pdb_test; grant select on sys.user$ to c##test container=current;

完成后是再连接到PDB中则可以正常执行测试SQL,但该现象在测试库中未复现,由于测试库是19.22,无法排出是否为版本差异,因此回到出问题的库再测试一次,但是在新建用户上也未复现,这就不放出测试过程了,姑且算是触发了一个特定的异常。

3 跨实例

在解决完第一个问题后,发下ORA-01031报错依旧,在进一步的测试过程中发现,授权是在实例1执行的,但是在实例2执行测试SQL的时候会报错,下面是在测试环境中的复现:

3.1 通过scanip访问数据库

sqlplus c##test@scanip/wgbak

image.png
发现报错。

3.2 通过节点1的VIP访问数据库

sqlplus c##test@host1-vip/wgbak

image.png
可以正常执行。

3.3 通过节点3的VIP访问数据库

sqlplus c##test@host3-vip/wgbak

image.png
发现报错。

3.4 在节点3赋权后测试

sqlplus sys@host3-vip/wgbak as sysdba grant select on sys.user$ to c##test container=all;

image.png
image.png
正常执行。

3.5 小结

这里就不贴出其他实例的测试了,和实例3现象和处理一致。
同时同生产环境处理一致,其余的系统视图同样未出现该问题(比如sys.obj$ , sys.col$ 等),进出现在sys.user$上,这里也不贴出测试结果。
尝试在12.2,19.17的RAC多租户环境中执行也未复现,其他版本未测试。

总结

这是一个发生19c(19.21、19.22)RAC多租户环境授权sys.user$出现的ORA-01031的问题。目前已开SR进行反馈,后续将持续更新。
老规矩,知道写了些啥。

最后修改时间:2025-01-30 09:33:58
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论