
「所有していないマテリアライズド・ビューのマスター表にアクセスする場合は、各表に対するSELECTオブジェクト権限またはSELECT ANY TABLEシステム権限が必要です。」
ということから、selectオブジェクト権限をつけた『ビュー』をもとに、マテリアライズドビューの作成はできないのでしょうか?
例)Aスキーマが所有するTESTビュー表をもとに、Bスキーマでマテリアライズドビューを作成する。
create materialized view mview as select * from A.TESTビュー;
create materialized view 権限は付与しました。
A.TESTビューに対するSELECTオブジェクト権限は付与しました。
結果としては、表またはビューがありません。とエラーがでます。
しかし、Aスキーマが所有するテーブルに対しては、問題なくマテリアライズドビューの作成はできます。
異なるスキーマの『ビュー』を元にマテリアライズドビューの作成は
できない。といった記述はないのですが、実際に作成ができません。
ご教授ください。
No.1ベストアンサー
- 回答日時:
マテリアライズド・ビューの作成以前に・・
ビューにselect権限があっても、ビューが必要とするテーブルやビューに、オブジェクト権限がないのであれば
ビューを使えないと思いますが?
select権限を与えたビューが検索できるか確認してください。
ロールがあると確認が難しくなるので、小さなプロシジャでも書いて確認すると良いかと。
create or replace procedure a is c number; begin select count(*) into c from ビュー; end;
/
execute a;
たぶん、オブジェクト権限なしでコンパイルエラーになるか、ビューの検索でエラーになると思いますよ。
korochanさんありがとうございます。
プロシージャで確認する。という手法ありがとうございます。
結果としては、プロシージャ実行結果は件数がかえってきました。
プロシージャでは正常であるのに、
create materialized view mview
builc defferd
refresh force with rowid
on demand
as
select * from A.TESTビュー
では、エラーが以下のように出力されます。
ORA-00942:表またはビューが存在しません。
ORA-06512:"SYS.DBMS_SNAPSHOT_UTL" 行1543
ORA-06512:行1
ためしに、select * from A.TESTビューをもとに、create view ~
を実行すると、正常に作成できます。
どうもマテリアライズドビューはできないようなのです。
SYS.DBMS_SNAPSHOT_UTL は、暗号化されたパッケージで、
行1に何が書いてあるのかはわかりませんでした。
No.2
- 回答日時:
どこまで確認されたかは分かりませんが・・・
1. MVIEW を作成したいユーザで
SQL> SELECT * FROM A.TESTビュー
OK ==> VIEW に対する MVIEW は作成できない
NG ==> →2 へ
2. TESTビューの元表にもA ユーザがアクセスできるように権限付与して1 の内容が成功するか確認してみる。。
SQL> GRANT SELECT ON 元表A TO SCOTT;
OK ==> 元表に対するSELECT 権限も必要 →MVIEW 作成へ
NG ==> コマンドのどこかに問題がある
こんな感じで切り分けできるのでは?
この回答への補足
1 の結果は、実行できたので、OKです。
ということは、VIEWに対するMVIEWは作成できない。ということになるのでしょうか?
エラー内容としては、
ORA-00942:表またはビューが存在しません
ORA-06512:"SYS.DBMS_SNAPSHOT_UTL" 行1543
ORA-06512:行1
という内容で、権限っぽいのですが、権限は満たしているようなのです。
VIEWをもとにしてマテリアライズドビューを作成する場合、
MVIEWを作成したいユーザが元表のビューを所有していないとだめなようです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Statement ignored というエラー
-
ODBCリンクの際にACCESSでは読...
-
トリガーにてビューを作成しよ...
-
Accessのマクロでモジュールを...
-
Access VBAで行ラベルが定義さ...
-
callで順に実行されるプロシー...
-
Oracle8iでのSQL履歴
-
14桁の日付(YYYYMMDDHHMMSS)を...
-
テーブルの中身を出力するプロ...
-
キャッシュを使わずにSELECTを...
-
データ型について教えてください。
-
カーソル定義での条件分岐
-
SQL Serverについて
-
SQL文のエラー
-
今日の日付が入った行のデータ...
-
オラクルのデフォルトセッション数
-
アナライズでほとんどの処理が...
-
【Excel VBA】 WorksheetやRa...
-
WHERE句の実行順序
-
access97でのFunctionプロシー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Statement ignored というエラー
-
ODBCリンクの際にACCESSでは読...
-
別のスキーマのテーブルアップ...
-
異なるスキーマのビューを元に...
-
会社の〇〇部と〇〇課の違いっ...
-
Oracle 10gで順序sequenceの作...
-
ロールを言い換えると?
-
Poweruser権限でのIPアドレス変...
-
テーブル権限確認
-
oracle8.1.7について
-
権限で「委任」「専決」とあり...
-
dba_で始まるシステム表を検索...
-
IE6の「ディスカッション」は...
-
Oracle 10g 他スキーマの参照権...
-
ポリスとシェリフの違い 及び...
-
トリガーにてビューを作成しよ...
-
ノートンの活動ログに詳しい方...
-
同一SQLでも実行ユーザによりカ...
-
ストアドプロシジャで、TRUNCAT...
-
oracleユーザーの権限確認方法...
おすすめ情報