Rowid是数据库(oracle)中表的一行的唯一标识符。我想知道rowwid是否可以在同一数据库中不同模式的表之间重复,以及在不同数据库中不同模式的表之间重复?
例如-
- Database (D1)有schema (S1和S2)。可以订一张表吗?客户有和S2一样。客户?
- 数据库(D1和D2)的schema分别为S1和S2。可以一个表D1.S1。客户与D2.S2具有相同的row。客户?
没有理由(Oracle也没有承诺)为什么不同数据库中的rowwid应该不同
同一数据库中的行在所有模式和表中通常是不同的,但是存储在同一集群中的不同表中的行可能具有相同的行号。(这直接来自文档:https://docs.oracle.com/cd/B28359_01/server.111/b28286/pseudocolumns008.htm)
当表没有集群时,Oracle数据库中的每一行都有一个唯一的ROWID与之关联。请注意,由于某些数据库操作(重新组织数据库),ROWID一行可能会改变,而且ROWID可能会被重用(在同一表中删除然后插入可能会重用ROWID)。ROWID存储关于一行的唯一信息,如OBJID、FILENO(相对于存储对象的表空间)、BLOCKNO(相对于数据文件中的BLOCKNO)和ROWNUM(块中的相对行号)。对于普通的表(没有聚集或索引组织),ROWID是对行唯一的快速访问路径。