Oracle 公共同义词与schema.object模式

Oracle 公共同义词与schema.object模式,oracle,oracle10g,synonym,Oracle,Oracle10g,Synonym,在我的应用程序中,将会有很多用户,超过500人。它们只处理一个模式对象。我已经授予了必要的特权。当我说: SELECT * FROM EMP; 我得到“表或视图不存在”错误,因此它意味着: 我需要在对象之前指定所有者名称。比如SCOTT.EMP,或者 我可以为我要引用的所有对象创建公共同义词 我担心的是,如果公共同义词对具有大约300个同时连接的这么多用户的性能有影响。我应该选择第一种方法还是第二种方法?公共同义词具有非常特殊的用途;它们允许每个用户引用一个对象——假设他们拥有适当的权限。如果

在我的应用程序中,将会有很多用户,超过500人。它们只处理一个模式对象。我已经授予了必要的特权。当我说:

SELECT * FROM EMP;
我得到“表或视图不存在”错误,因此它意味着:

  • 我需要在对象之前指定所有者名称。比如
    SCOTT.EMP
    ,或者
  • 我可以为我要引用的所有对象创建公共同义词

  • 我担心的是,如果公共同义词对具有大约300个同时连接的这么多用户的性能有影响。我应该选择第一种方法还是第二种方法?

    公共同义词具有非常特殊的用途;它们允许每个用户引用一个对象——假设他们拥有适当的权限。如果在将来的任何时候,您可能希望更改特定用户查看对象的方式,那么使用公共同义词是不可取的

    它们还使用整个数据库的特定对象名。但是,公共同义词的存在并不妨碍您创建具有相同名称的对象。这可能令人难以置信地困惑

    例如,假设您有一个过程
    test
    和一个模式
    emp
    。尝试执行
    emp.test
    将不起作用,因为您的表上已经有公共同义词
    emp

    ,

    在性能方面,他们似乎认为公共同义词超过私有同义词会导致错误。但是,使用同义词而不是不使用同义词也会导致性能略有下降。这表明,如果每一个都是珍贵的,你就不应该使用同义词

    总而言之,我认为这意味着如果可能的话,你应该避免使用公共同义词。如果你需要一个,那么当然要使用一个,它们的存在毕竟是有原因的,但是如果你不需要,那么拥有一个又有什么意义呢?
    scott.emp
    结构非常清晰,它准确地显示了您所引用的模式和对象,而不会被您自己或其他刚接触数据库和代码的人误解


    快速点。你没有明确地说出来,但你问题的措辞似乎表明你正在为每个用户创建一个模式。这似乎会让人非常困惑……

    公共同义词有着非常特殊的用途;它们允许每个用户引用一个对象——假设他们拥有适当的权限。如果在将来的任何时候,您可能希望更改特定用户查看对象的方式,那么使用公共同义词是不可取的

    它们还使用整个数据库的特定对象名。但是,公共同义词的存在并不妨碍您创建具有相同名称的对象。这可能令人难以置信地困惑

    例如,假设您有一个过程
    test
    和一个模式
    emp
    。尝试执行
    emp.test
    将不起作用,因为您的表上已经有公共同义词
    emp

    ,

    在性能方面,他们似乎认为公共同义词超过私有同义词会导致错误。但是,使用同义词而不是不使用同义词也会导致性能略有下降。这表明,如果每一个都是珍贵的,你就不应该使用同义词

    总而言之,我认为这意味着如果可能的话,你应该避免使用公共同义词。如果你需要一个,那么当然要使用一个,它们的存在毕竟是有原因的,但是如果你不需要,那么拥有一个又有什么意义呢?
    scott.emp
    结构非常清晰,它准确地显示了您所引用的模式和对象,而不会被您自己或其他刚接触数据库和代码的人误解


    快速点。你没有明确地说出来,但你问题的措辞似乎表明你正在为每个用户创建一个模式。这似乎会让人非常困惑……

    非常感谢。我把问题改了。非常感谢。我已经更改了问题。您是否考虑过使用
    alter session set current\u schema=SCOTT?您是否考虑过使用
    alter session set current\u schema=SCOTT