最近遇到sys用户创建其他用户的物化视图时报错,下面记录一下问题及整个处理过程:
通过确认上述语句中的子查询语句执行情况,有返回结果集,说明sys用户访问正常,相关表及dblink访问正常,表是存在的。那么该报错可能是该物化视图owner用户的权限问题。
步骤1:授予用户在子查询中涉及的第1个表的select权限:
grant select on ucr.td_m_tab to gzuser;
步骤2:授予子查询中涉及的第2个dblink的权限:
经过查询该dblink,发现其owner是PUBLIC,所以没关系,不用另外授权。这样处理后,接着再执行重建物化视图时,又报另外的(ORA-01031:权限不足)错误:
首先,我们是用sys用户来创建其他用户下的物化视图的,报错权限不足应该指的是物化视图的OWNER权限有问题。通过核实,OWNER确实少了好些权限,下面进一步授权给其OWNER:
grant create materialized view to GCENTER;
grant create any materialized view to GCENTER;
grant global query rewrite to GCENTER;
grant on commit refresh to GCENTER