Oracle9i:Synonymedテーブルが存在しない?
質問
私がパッケージを含むタプランの呼び出しから分離ます。この保存された手順に戻りソートされたリストのすべてのテーブルのスキーマ.これを実行するには、を行う簡単な選択のDBA_TABLESとDBA_VIEWS、さらに同義語として以下に示す。
CREATE OR REPLACE
PACKAGE BODY TITAN_ENTITY AS
PROCEDURE GETSCHEMAOBJECTS (RESULTS IN OUT T_CURSOR)
IS
V_CURSOR T_CURSOR;
BEGIN
OPEN V_CURSOR FOR
SELECT 'T' OBJECTTYPE, TABLE_NAME OBJECTNAME
FROM DBA_TABLES
WHERE OWNER = 'SONAR5'
UNION ALL
SELECT 'V' OBJECTTYPE, VIEW_NAME OBJECTNAME
FROM DBA_VIEWS
WHERE OWNER = 'SONAR5'
ORDER BY OBJECTNAME;
RESULTS := V_CURSOR;
END GETSCHEMAOBJECTS;
END TITAN_ENTITY;
していることを明らかにしさらに同義語に問題が存在し、公開:
CREATE PUBLIC SYNONYM "DBA_TABLES" FOR "SYS"."DBA_TABLES"
CREATE PUBLIC SYNONYM "DBA_VIEWS" FOR "SYS"."DBA_VIEWS"
私の理解であることがあることから、これらの公的、私はいまのアクセス権を取得します。その理解では、設備は、施設内または近辺にいい人がいdisabuseったのですが、この概念ともより正確なデータです。
今ここでの私の問題:私は開設できるワークシートOracle、SQL開発者を選んでからのこれらのテーブルです。かの有意義なデータは、イブレア城、イブレア(567行の実際).もしよう実行の手続き、オラクルガリとコンパイルエラー、下図のように:
Error(9,8): PL/SQL: SQL Statement ignored
Error(10,16): PL/SQL: ORA-00942: table or view does not exist
私はダブルクリックするとエラーメッセージ、SQL開発に最初から条項("からDBA_TABLES").
んのかなりstumped.いまさにSQLサーバーとも、今回が初めてオラクル、ご負担下さいました。をご提供いただければ一部の手がかりに、点のも、今まで本当に感謝します。
感謝。
解決
利用ALL_TABLESとALL_VIEWSの代わりにDBA_TABLESとDBA_VIEWS.ALL_%意すべきアクセスできます。
他のヒント
を選択する場合はテーブルからは、ビューに格納されPL/SQL-手続きや保存PL/SQL機能に必要な直接助成による。の助成を介してデータベースの役割が充分でないのです。
するので,それを直接助成金ュdba_tables.(公開)と同義語で(公開)と同義語.必要なものを直接付与を選択。
こちらをご参照: http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:48704116042682#48798240264807
編集: まglossedの部分が言っているように見えることから選択できDBA_TABLESます。その問題は、その権限を付与としての役割を他の誰かが答えいたします。いますが、残念ながら価値を説明することをご理解のとおり公開さらに同義語が不完全であることをALL_TABLESいで達成で作られています。
の文が公開けるすべてのユーザーの参照の文;付与を行いません使用者にとってはアクセスのオブジェクトの文をさします。
のように多くの直接の解決に向けたエラーの助成を選択権をSYSビューのユーザーが走ります。しかし、っていただけるものと思い 非常に悪い。
このようにRaimonds考慮できるかどうか取得に必要なものからUSER_TABLESはALL_TABLESです。どんなユーザはこの手順は、アクセスはユーザーをSONAR5のテーブル?
一般に、アプリケーションの場合はに興味のあるテーブルと考えることがで一部の特権である場合はそういうことALL_TABLES.