2011年10月5日水曜日

oracleRDS スキーマまたぎの参照整合性制約

させている

最近oracleRDS周りをよくやってるのですが
一つのRDSに複数ユーザー(スキーマ)を
入れる場合のもので、

スキーマ間でテーブル参照したり制約をつけてる場合がある。
*滅多にないケースなのでちょっとはまりました。

これは通常のoracleならSYSDBA権限を無理やりつけちゃえば
一発なのですが、RDSではつけらてもDBA権限までなのですが
それだけではだめでした。

Aユーザー(スキーマ)
Bユーザー(スキーマ)
があるとして

BユーザーからAユーザーのテーブルを絡む
制約をalterなどすると以下のエラーが発生

まずORA-00942
表またはビューが存在しません。

sqlplusで普通にbユーザーで入って
-----------------------------------------
select count(*) from a.hoge
-----------------------------------------
ってAユーザーのテーブル参照できるのになぜ?

参照したいテーブルにセレクトの権限つけてみた
-----------------------------------------
GRANT SELECT on a.hoge TO b;
-----------------------------------------

エラーが変わった??
ORA-01031: 権限が不足しています。

なんじゃ??
そこで REFERENCES(参照整合性制約)をつけてみる。
-----------------------------------------
GRANT SELECT,REFERENCES on a.hoge TO b;
-----------------------------------------
エラーなしに通った!!

ということで次にこのエラーに直面することは
滅多にないとおもうが、今度ははまらないだろう。。

参考になったページ
http://www.shift-the-oracle.com/oerrs/ora-00942.html
http://www.shift-the-oracle.com/privilege/
http://oracle.na7.info/4_2_role.html

いやっさせている

0 コメント: