パブリック・シノニムは非常に特殊な目的を果たします。それらはオブジェクトが毎にユーザによって参照されることを可能にします - 彼らは適切な特権を持っていると仮定します。将来的に特定のユーザーがオブジェクトをどのように表示するかを変更したい場合は、パブリック・シノニムが移動する方法ではありません。
また、データベース全体に特定のオブジェクト名を使用します。しかし、パブリック・シノニムが存在していても、同じ名前のオブジェクトを作成できないわけではありません。これは信じられないほど混乱することがあります。
例えば、手順test
とスキーマemp
があるとします。 emp.test
を実行しようとすると、テーブルにパブリック同義語emp
が既に存在するため、機能しません。
Tom Kyte、彼らはプライベート・シノニムを超えるパブリック・シノニムがslight decrease in performanceにつながることを示唆しているように見えるパフォーマンスの面ではseems to have written anumber of articles about this.
。ただし、シノニムの代わりにシノニムを使用すると、パフォーマンスがわずかに低下します。これは、すべての最後のcomputronが貴重な場合は、同義語をまったく使用すべきではないことを示唆しています。
私は、これは可能な場合は公の同義語を避けるべきだと思います。もしあなたがにを必要としているのであれば、それは理由のために存在しますが、もしあなたがしなければ、それでは何があるでしょうか? scott.emp
構造は明確で、自分や他の誰かがデータベースやコードに新たに加わることによって誤って解釈することなく、参照しているスキーマとオブジェクトを正確に示しています。
クイックポイント。あなたは明示的にそれを言っていませんが、あなたの質問の文言は、あなたがすべてのユーザのためにスキーマを作成していることを示唆しているようです。これは大規模な混乱のように思われる...
出典
2012-04-06 10:15:57
Ben
あなたは 'alter session set current_schema = SCOTT;'を使って考えましたか? –
これはいいアイデアです –