ユーザー「dbaUserA」の下に作成されたビューがあります。ビュー照会は、別のユーザー「dbaUserB」の表を使用します。どちらのユーザーもdbaです。Oracle:別のスキーマにテーブルをリンクしている別のスキーマのビューを照会することはできません
ビュー名:
Select trx_no,trx_date,order_item
from trx_table a left outer join dbaUserB.cancelled_trx b on a.trx_no=b.trx_no
where b.trx_no is null;
のクエリでv_valid_trx 私はあまり特権ユーザー "よびUserC" を作成しましたが、
dbaUserA.trx_table
dbaUserB.cancelled_trx.
dbaUserA.v_valid_trx
に対するSELECT権限で私が直接trx_table選択することができますこれらの異なるスキーマからcancelled_trxしかし、私はビューで選択することはできませんv_valid_trx。権限が不足 01031. 00000 - "権限が不足" *原因:
Oracleは
ORA-01031を促し試みが適切な権限なしに、現在のユーザー名やパスワード を変更しようとしました。また、このエラーは、 のシステム権限を必要とせずにデータベースをインストールしようとした場合にも発生します。 Trusted OracleがDBMS MACで構成されている場合、ユーザーに現在のログインより上位のラベル で必要な権限が付与されている場合、このエラーが発生することがあります( )。 *処置:データベース管理者に操作を依頼するか、 に必要な権限を付与してください。 Trusted Oracleユーザーに、 の上位ラベルに適切な権限が付与されていても、このエラーが発生する場合は、データベース の管理者に、適切なラベルで権限を再委任するよう依頼してください。 1行目のエラー:1列目:21
これまで何時間も苦労していました。私はベーステーブルを自由に選択することができるときに、エラーの原因を理解できないようです。
助けてください:)あなたが最初よびUserCが実際にビューdbaUserB.v_valid_trxに対するselect権限を持っていることを確認するかもしれないもの
私は、dbaUserBが 'grantオプション付きでdbauseraにcanceled_trxで選択を許可する '必要があると思いますが、これは完全なテストケースなしでは少しの推測です。 dbaUserBは照会する権限をdbaUserAに与えましたが、誰とも共有することはできません。 –
また、ベース・テーブルへのコマンドライン・アクセスは、ビュー内のベース・テーブルには使用されないロール(DBAなど)を介して行われる場合があります。 –
私はいつもsysdbaとしてコンソールにあったビューの許可をしました。私は、ベーステーブルのselectをdbauserAにgrantオプションで再付与しました。正しい推測のためにWilliamに多く感謝します。 :)オラクル特権がそのように機能することは知らなかった。 – yonas