0

DBA_* ビューに対する選択権限を持つスキーマ A を持つ Oracle データベースがあります。

これらの権限を持たないスキーマ B もありますが、多くの具体化されたビューがあります。

スキーマ A には 3 つの更新グループがあり、それぞれにスキーマ 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 として表示しますか?

ありがとう!

4

1 に答える 1

0

の上A

CREATE OR REPLACE VIEW V_REFRESH_SNAPSHOT AS
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');

GRANT SELECT ON A.V_REFRESH_SNAPSHOT TO B;

からB

SELECT * FROM A.V_REFRESH_SNAPSHOT;
于 2012-08-15T20:57:36.000 に答える