Oracle 19c视图DDL出现字面量替换:动态数据掩码引发的异常?
Oracle 19c视图DDL被动态数据掩码替换为字面量的已知行为说明
这确实是Oracle 19c搭配动态数据掩码(Dynamic Data Masking, DDM)时的已知行为,核心原因在于视图创建时的权限上下文:
- 当创建视图的用户对底层表目标列拥有DDM掩码权限时,Oracle会将视图定义里的该列引用直接替换为掩码后的字面量(比如
'**********')。这是因为视图的定义会固化创建者当时的数据可见性——创建者看到的是掩码后的数据,视图就会直接继承这个结果,而非保留原始的列引用。 - 无DDM掩码权限的用户创建视图时,因为其能看到列的原始数据,视图定义会保留
a.customer_acct_nbr这类原始引用,查询时自然返回实际值。
如果需要规避这个行为,可参考两种方式:
- 使用拥有底层表列无掩码权限的用户创建视图,确保视图保留原始列引用;
- 若必须用带掩码权限的用户创建,可先授予该用户对应列的
UNMASK权限,完成视图创建后,再根据业务需求回收该权限。
内容的提问来源于stack exchange,提问作者Rickenator
相关产品推荐
相关产品推荐

