テーブルの外部キーを検索したいが、同じ名前のテーブルを持つ複数のユーザー/スキーマが存在する可能性があります。現在ログインしているユーザーが見ているものを見つけるにはどうすればよいですか?所有者に与える機能はありますか?パブリックシノニムがある場合はどうなりますか?OracleのオブジェクトのOWNERはどのようにして見つけることができますか?
答えて
あなたはALL_OBJECTSビュー問い合わせることができます:(
select *
from ALL_SYNONYMS
where synonym_name = 'FOO'
だけ明確にするために、
ユーザー
ユーザーのSQL文はありません、スキーマの資格を持つオブジェクト名を参照する場合:同義語を見つけるには
select owner
, object_name
, object_type
from ALL_OBJECTS
where object_name = 'FOO'
を'FOO'など)、Oracle FIRSTはユーザーのスキーマでその名前のオブジェクト(そのユーザーのスキーマ内の同義語を含む)をチェックします。 Oracleがユーザーのスキーマから参照を解決できない場合、Oracleはパブリック・シノニムをチェックします。
あなたが特定のTABLE_NAME上の制約のために特別に探している場合:
select c.*
from all_constraints c
where c.table_name = 'FOO'
union all
select cs.*
from all_constraints cs
join all_synonyms s
on (s.table_name = cs.table_name
and s.table_owner = cs.owner
and s.synonym_name = 'FOO'
)
HTH
- 補遺:
ユーザーがDBA_ビューへのアクセスを許可された場合(例えば、あなたの場合ユーザーにSELECT_CATALOG_ROLEが付与されている場合)、前のSQLの例では 'ALL_
'の代わりに 'DBA_
'を使用できます。 ALL_x
ビューには、権限を与えられたオブジェクトのみが表示されます。 DBA_x
ビューには、特権を持っているかどうかにかかわらず、すべてのデータベースオブジェクトが表示されます。
興味深い質問 - 私は(ほとんどのUnixで「これ」コマンドのように)これを実行する任意のOracle機能がないと思うが、あなたがして名前の解決順序を取得することができます。
select * from
(
select object_name objname, object_type, 'my object' details, 1 resolveOrder
from user_objects
where object_type not like 'SYNONYM'
union all
select synonym_name obj , 'my synonym', table_owner||'.'||table_name, 2 resolveOrder
from user_synonyms
union all
select synonym_name obj , 'public synonym', table_owner||'.'||table_name, 3 resolveOrder
from all_synonyms where owner = 'PUBLIC'
)
where objname like upper('&objOfInterest')
Oracleセッション内で現在のユーザーの名前を調べるには、USER
関数を使用します。
制約の所有者、外部キーを含むテーブルの所有者、および参照先テーブルの所有者がすべて異なる可能性があることに注意してください。その場合には、これはあなたが望むものに近づける必要があり、中にそれが’のテーブルの所有者あなた’興味の再ように聞こえる:
select Constraint_Name
from All_Constraints
where Table_Name = 'WHICHEVER_TABLE'
and Constraint_Type = 'R' and Owner = User;
はALL_TABLESとALL_CONSTRAINTSのようなOracleのビューは、あなたが使用することができ、所有者の列を、持っていますあなたの質問を制限する。 ALLの代わりにUSERで始まるこれらのテーブルのバリエーションもあり、現在のユーザーがアクセスできるオブジェクトのみをリストします。
theseのいずれかが問題を解決するのに役立つはずです。彼らは似たような問題でいつもうまく働いた。
オラクルでテーブルの所有者を見つける方法を探究している最中にこの質問が見つかったので、他のユーザーの便宜のためにテーブル固有の回答に貢献すると思いました。
次のクエリを使用、オラクルDBの特定のテーブルの所有者を検索するには:ちょうどクエリがもう少し柔軟にするために
select owner from ALL_TABLES where TABLE_NAME ='<MY-TABLE-NAME>';
- 1. どのようにmongoosejsで見つけることができますか?
- 2. AX2009の最後のラベルIDはどのようにして見つけることができますか?
- 3. スカラーコンパイラのフラグ/オプションの説明はどのようにして見つけることができますか?
- 4. テキストボックステキストの最後の文字はどのようにして見つけることができますか?
- 5. マトリックスソートの下限はどのようにして見つけることができますか?
- 6. JVMバイトコード、ローカル変数のタイプはどのようにして見つけることができますか?
- 7. Omnet ++のインプリメンテーション.ccファイルはどのようにして見つけることができますか?
- 8. エレメントのCSS3ローテーションはどのようにして見つけることができますか?
- 9. android ndk 1.5 r1のインストールファイルはどのようにして見つけることができますか?
- 10. SQL Server 2008のデータソース名はどのようにして見つけることができますか?
- 11. ピアはどのようにして別のピアを見つけることができますか?
- 12. SVNリポジトリの名前/場所はどのようにして見つけることができますか?
- 13. opencv関数のソースコードはどのようにして見つけることができますか?
- 14. AzureデプロイメントのステージングURLはどのようにして見つけることができますか?
- 15. キャストしないデータはどのようにして見つけることができますか?
- 16. どのようにしてagにnode_modulesでの一致を見つけることができますか?
- 17. コメント内にないメソッド名はどのようにして見つけることができますか?
- 18. どのようにしてperlモジュールが独自のパスを見つけることができますか?
- 19. リンクテキストをリンクテキストでXPathとどのようにして見つけることができますか?
- 20. どのようにしてRの関数リストの合計を見つけることができますか?
- 21. WebOrb for .NET Community Editionはどのようにして見つけることができますか?
- 22. カーソルがあることをWordでどのように見つけることができますか
- 23. どのようにして現在のDNSサーバーを見つけることができますか?
- 24. どのようにして最良のファジーストリングマッチを見つけることができますか?
- 25. どのようにして最大プロセッサキューの長さを見つけることができますか?
- 26. にはどうすれば見つけることができますか?
- 27. どのようにしてユニークなファイル拡張子を見つけることができますか?
- 28. どのようにsyscall(いくつかの番号)ルーチンを見つけることができますか?
- 29. フラッシュデバッグプロトコルの仕様はどこで見つけることができますか?
- 30. 私のgitブランチがどのようなSVNブランチにdcommitするのかをどのようにして見つけることができますか?
を、私は '下(object_nameと)照会しまうでしょう= ' foo''これは、関数名を持っているが、大文字と小文字が区別されていない(たとえば、自分自身のように、大文字と小文字を区別しない外部プログラムの呼び出しのような)場合に特に役に立ちます。 – Travis
@Travis:クエリの柔軟性が向上します。 OracleがSQL文で "大文字と小文字を区別しない"識別子をどのように見せるかをより正確に一致させるには、** 'WHERE object_name = UPPER( 'foo')' **が必要です。 (SQL文の二重引用符で囲まれていない識別子は、大文字であるかのようにOracleによって表示されます(Oracle識別子*は大文字と小文字が区別されますので、小文字を維持するためにSQL文で二重引用符で囲む必要がありますSELECT * FROM foo'を実行すると、Oracleは実際に 'SELECT * FROM FOO'を行ったかのように識別子を' FOO'と見なします。 – spencer7593