2016-08-21 1 views
1

Rowid est un identifiant unique d'une ligne d'une table dans la base de données (oracle). Je voulais savoir si le rowid peut répéter entre des tables dans des schémas différents dans la même base de données et des schémas différents dans différentes bases de données?Les valeurs ROWID entre les schémas

Par exemple -

  1. base de données (D1) présente des schémas (S1 et S2). Est-ce qu'une table S1.Customer peut avoir même rowid que S2.Customer?
  2. Les bases de données (D1 et D2) ont des schémas (S1 et S2) respectivement. Est-ce qu'une table D1.S1.Customer peut avoir la même ligne que D2.S2.Customer?

Répondre

2

Il n'y a aucune raison (et aucune promesse de Oracle) pourquoi les rowid dans différentes bases de données devraient être différents.

Les lignes de la même base de données sont généralement différentes dans tous les schémas et les tables, mais les lignes des différentes tables stockées dans le même cluster peuvent avoir le même attribut rowid. (Ceci est directement à partir de la documentation: https://docs.oracle.com/cd/B28359_01/server.111/b28286/pseudocolumns008.htm)

0

Lorsque la table n'est pas mise en cluster, alors oui, chaque ligne d'une base de données Oracle est associée à un ROWID unique. Notez cependant qu'en raison de certaines opérations de base de données (réorganisation de la base de données), la ligne ROWID peut changer, et aussi que ROWID peut être réutilisé (delete puis inséré dans la même table peut réutiliser le ROWID). ROWID stocke des informations uniques sur une ligne, telles que OBJID, FILENO (par rapport à l'espace table dans lequel l'objet est stocké), BLOCKNO (BLOCKNO relatif dans le fichier de données) et ROWNUM, numéro de référence relatif dans le bloc. Pour les tables normales (non organisées en cluster ou indexées), le ROWID est un chemin d'accès unique et rapide à la ligne.