暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 公共同义词和普通表的名称空间的怪异行为

askTom 2017-03-06
201

问题描述

嗨,汤姆

我目前正在使用oracle中的同义词,并发现以下事实:

SQL> 为myschema.mytable创建公共同义词mysynonym;
创建同义词。

SQL> create table myschema.mytable(a int);
第1行的错误:
ORA-00955: 名称已被现有对象使用


根据这里描述的Oracle的doc,这是相当合理的:

https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_7001.htm

是的,这是相当合理的,预计。但是我发现 “副范思哲” 在这里并不成立:

SQL> create table myschema.mytable(a int);
创建的表。//先建表

SQL> 为myschema.mytable创建公共同义词mysynonym;

创建同义词。
// 然后创建具有相同表名称的公共同义词。
// 哇,成功。恕我直言,它应该失败了。



你能帮我找出原因吗?

非常感谢。


专家解答

我们在数据库中有几个名称空间,它们定义了允许名称重叠的位置,以及不重叠的位置。

SQL> select distinct namespace, object_type from dba_objects
  2  order by 1,2;

 NAMESPACE OBJECT_TYPE
---------- -----------------------
         1 CHAIN
         1 DESTINATION
         1 FUNCTION
         1 INDEXTYPE
         1 JAVA CLASS
         1 JOB
         1 JOB CLASS
         1 LIBRARY
         1 OPERATOR
         1 PACKAGE
         1 PROCEDURE
         1 PROGRAM
         1 SCHEDULE
         1 SCHEDULER GROUP
         1 SEQUENCE
         1 SYNONYM
         1 TABLE
         1 TABLE PARTITION
         1 TABLE SUBPARTITION
         1 TYPE
         1 VIEW
         1 WINDOW
         2 PACKAGE BODY
         2 TYPE BODY
         3 TRIGGER
         4 INDEX
         4 INDEX PARTITION
         5 CLUSTER
         8 LOB
         8 LOB PARTITION
         9 DIRECTORY
        10 QUEUE
        13 JAVA SOURCE
        14 JAVA RESOURCE
        19 MATERIALIZED VIEW
        20 DIMENSION
        21 CONTEXT
        23 RULE SET
        24 CONSUMER GROUP
        24 RESOURCE PLAN
        25 XML SCHEMA
        32 JAVA DATA
        36 RULE
        38 EVALUATION CONTEXT
        51 UNDEFINED
        52 UNDEFINED
        64 EDITION
        88 UNDEFINED
        92 SQL TRANSLATION PROFILE
        93 UNIFIED AUDIT POLICY
           DATABASE LINK

51 rows selected.
复制


因此,只要您在名称空间内具有唯一性,就可以了。公共同义词只是特殊用户 “公共” 拥有的对象,因此

公共的。我的同义词
公共。我的表
我的模式。我的表

都可以共存得很好。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论