Oracle ROWID は、テーブル内で一意であると言われています。ROWID 形式の最後の 3 文字がデータベース ブロック内の行番号を示しているため、同じクラスターに格納されている 2 つの異なるテーブルの 2 つの行が同じ行 ID を持つ方法がわかりませんでした。
クラスター化されたテーブルの行が同じデータベース ブロックに永続化されることは理解していますが、ROWID には行番号が含まれているため、データベース ブロック内の 2 つの行を区別するべきではありませんか?
シンプルです。クラスター化されたテーブルの「わかりやすい」行はブロックに一緒に格納されるため、同じ行 ID を持つことができます。
下の図 ( frontiernetから) では、最初の dept 行には行番号 1 があり、最初の emp 行には行番号 1 があります。これは最初の出現です。
この後、従業員 2、従業員 3 があります... この部門のすべての従業員の後、十分なスペースがある場合、部門の行 2 がありますが、前の部門で従業員 2 の行 ID が検出されました。
等々。
これは、ROWID の行番号がそのテーブルと現在のブロックに関連しているためです。
通常、rowid 値は、データベース内の行を一意に識別します。ただし、同じクラスターに一緒に保管されている異なる表の行は、同じ行 ID を持つことができます。
チェックアウト: http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/pseudocolumns008.htm