share facebook facebook twitter menu hatena pocket slack

2011.10.06 THU

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

櫛田 草平

WRITTEN BY 櫛田 草平

最近、OracleRDS周りの対応をしているのですが、1つのRDSに複数ユーザー(スキーマ)を入れる場合のもので、スキーマ間でテーブルを参照したり制約を付けている場合があります。
※滅多にないケースなので少し苦労しました。

これは、通常のOracleならSYSDBA権限を付けてしまえばできるのですが、RDSでは付けることができてもDBA権限までなのですが、それだけではだめでした。

例として、下記があるとします。

Aユーザー(スキーマ)
Bユーザー(スキーマ)

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

まず、ORA-00942です。

表またはビューが存在しません。

sqlplusで通常通りbユーザーでログインするとAユーザーのテーブルを参照できるのですが。

select count(*) from a.hoge

そこで、参照したいテーブルにセレクトの権限を付けてみました。

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

こちらの記事はなかの人(kenjionsoku)監修のもと掲載しています。
元記事は、こちら

櫛田 草平

櫛田 草平

cloudpackで運用、保守、構築、夜間対応を担当しており、日々様々な課題に対応していますのでこの経験を記事にしていけたらと思います。 櫛田 草平

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。