代码之家  ›  专栏  ›  技术社区  ›  Rich

Oracle架构表名称限制

  •  2
  • Rich  · 技术社区  · 16 年前

    我正在研究在Oracle上使用JBoss 5.1.0GA,并且 this

    看完这篇文章,我看到 this question

    假设我们有一个Oracle数据库服务器。在这里,我们创建了两个数据库-D1和D2。在每个数据库中,我们创建两个模式-S1和S2。在每个数据库的每个模式中,我们创建一个表-T1到T4:

    +-D1
    | +---S1
    | |   +---T1
    | +---S2
    |     +---T2
    +-D2
      +---S1
      |   +---T3
      +---S2
          +---T4
    

    我是否正确地认为,如果在D1/S2中添加另一个名为T1的表,它将不起作用,因为表名在模式中必须是唯一的,并且T1已经存在于D1/S1中,但是如果将T1添加到D2/S1或D2/S2中,它将不会起作用,因为名为T1的两个表位于不同的数据库中?

    我有一种不好的感觉,我对Oracle模式的理解是有缺陷的(这不是我以前经常使用的数据库),所以如果我问了一些愚蠢的问题,我很抱歉。

    提前谢谢

    富有的

    2 回复  |  直到 9 年前
        1
  •  4
  •   Vincent Malgrat    16 年前

    Oracle中不存在数据库层次结构:一个实例(一组进程)最多只能装载一个数据库(一组文件)。在数据库中,您将发现与Oracle中的用户相同的模式。

    S1 S2 两者都可以有一个名为 T1 在同一个数据库中。您可以使用这些表的所有者作为前缀来访问这些表: S1.T1 S2.T1 .

    有些对象没有所有者(或者其所有者是公共的):例如,公共同义词和目录。显然,这些对象的名称在数据库中必须是唯一的。明智地使用公共同义词以避免名称冲突。

        2
  •  1
  •   dpbradley    16 年前

    就Oracle而言,可以在两个不同的模式中使用相同的表名。您所读到的JBoss用法可能有一些特定的内容,但这并不是Oracle的限制。