
「所有していないマテリアライズド・ビューのマスター表にアクセスする場合は、各表に対する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も見ています
-
Statement ignored というエラー
Oracle
-
異なるスキーマからデータを抽出するには?oracl、PL/SQL
Oracle
-
datapumpの実行方法について
Oracle
-
-
4
importについて
Oracle
-
5
Oracleで流したSQLのログを取得できますか?
Oracle
-
6
マテリアライズドビューとスナップショットの違い
Oracle
-
7
Data Pump で大量データインポートの際のUNDO表領域、TEMP表領域不足エラー解消法のついて
Oracle
-
8
selectした結果の余計な余白を取るにはどうしたらよいのでしょうか
Oracle
-
9
SQLPLUSで結果を画面に表示しない
Oracle
-
10
ODP.NETのバージョン確認
Oracle
-
11
SQLローダーCSV取込で、囲み文字がデータ中に入っている場合について
Oracle
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLについての質問
-
オラクル12C_SQLPlusで実行す...
-
C列からH列の範囲を昇順にてソ...
-
子供向けプログラミングのスク...
-
sqlplusで接続できない
-
sqlで質問です。 Aテーブルは店...
-
SQLの中上級者へのレベルアップ...
-
SELECTによる表の変換方法を教...
-
開発対象となるアプリケーショ...
-
質問です。 下記のテーブルとデ...
-
Oracleですがsqlで質問です。 ...
-
sqlで質問です。 Aテーブルの登...
-
sqlで質問です。 Aテーブルの情...
-
SQLの書き方について
-
SQLについて教えて下さい。 主...
-
sqlで質問です。 idを元にidに...
-
oracleで 10,20, 30, というデ...
-
索引作成について
-
googleプレイの履歴で取得とイ...
-
sql(oracle)で質問です。 テ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Statement ignored というエラー
-
ODBCリンクの際にACCESSでは読...
-
異なるスキーマのビューを元に...
-
別のスキーマのテーブルアップ...
-
会社の〇〇部と〇〇課の違いっ...
-
oracleユーザーの権限確認方法...
-
権限で「委任」「専決」とあり...
-
トリガーにてビューを作成しよ...
-
Poweruser権限でのIPアドレス変...
-
テーブル権限確認
-
Oracle 10gで順序sequenceの作...
-
Oracleでオブジェクト権限を調...
-
「バッチジョブとしてログオン...
-
ストアドプロシジャで、TRUNCAT...
-
ノートンの活動ログに詳しい方...
-
Accessのマクロでモジュールを...
-
Access VBAで行ラベルが定義さ...
-
キャッシュを使わずにSELECTを...
-
callで順に実行されるプロシー...
-
SQLで部分的にGROUP BYしたいとき
おすすめ情報