模式之间的ROWID值

时间:2016-08-21 10:17:55

标签: database oracle oracle11g schema rowid

Rowid是数据库(oracle)中表的一行的唯一标识符。我想知道rowid是否可以在同一数据库中不同模式的表和不同数据库中的不同模式之间重复?

例如 -

  1. 数据库(D1)具有模式(S1和S2)。表S1.Customer可以有 与S2.Customer相同的rowid?
  2. 数据库(D1和D2)分别具有模式(S1和S2)。可以吗     表D1.S1.Customer与D2.S2.Customer具有相同的rowid?

2 个答案:

答案 0 :(得分:2)

没有理由(并且没有来自Oracle的承诺)为什么不同数据库中的rowid应该是不同的。

同一数据库中的行通常在所有模式和表中都不同,但存储在同一集群中的不同表中的行可能具有相同的rowid。 (这直接来自文档:https://docs.oracle.com/cd/B28359_01/server.111/b28286/pseudocolumns008.htm

答案 1 :(得分:0)

如果表未集群,则表示是,Oracle数据库中的每一行都有一个与之关联的唯一ROWID。请注意,由于某些数据库操作(重新组织数据库),ROWID行可能会更改,并且ROWID可能会重新使用(删除然后插入同一个表中可能会重用ROWID)。 ROWID存储有关行的唯一信息,如OBJID,FILENO(相对于存储对象的表空间),BLOCKNO(数据文件中的相对BLOCKNO)和ROWNUM(块中的相对rownumber)。 对于普通表(非集群或索引组织),ROWID是该行的唯一且快速访问路径。