我有一个架构 A 的 Oracle 数据库,它对 DBA_* 视图具有选择权限。
我也有一个没有这些特权的模式 B,但它有很多物化视图。
在模式 A 中,有三个刷新组,每个刷新组都有一些来自模式 B 的物化视图。
我想检查刷新组中是否有快照,但我想以 B 连接进行此检查。
我正在使用以下查询在架构 A 中执行此检查:
SELECT OWNER, NAME FROM DBA_SNAPSHOTS WHERE OWNER = 'B'
MINUS
SELECT OWNER, NAME FROM DBA_REFRESH_CHILDREN WHERE RNAME IN ('REFRESH_G1','REFRESH_G2','REFRESH_G3');
问题:
- B 没有 DBA_* 视图的权限(并且它不能拥有)
- 如果我更改 ALL_* 视图的 DBA_* 视图,B 看不到刷新组(并且我不能将更改任何物化视图授予 B)
所以:
- 是否有另一种方法可以在 B 中执行此检查?
- 还是有另一种方法可以让 B 看到刷新组?
- 或者有没有办法使用 ALL_* 视图“冻结”查询结果,例如 B 会将查询结果视为 A?
谢谢!