1

Oracle ROWID は、テーブル内で一意であると言われています。ROWID 形式の最後の 3 文字がデータベース ブロック内の行番号を示しているため、同じクラスターに格納されている 2 つの異なるテーブルの 2 つの行が同じ行 ID を持つ方法がわかりませんでした。

クラスター化されたテーブルの行が同じデータベース ブロックに永続化されることは理解していますが、ROWID には行番号が含まれているため、データベース ブロック内の 2 つの行を区別するべきではありませんか?

4

2 に答える 2

1

シンプルです。クラスター化されたテーブルの「わかりやすい」行はブロックに一緒に格納されるため、同じ行 ID を持つことができます。

下の図 ( frontiernetから) では、最初の dept 行には行番号 1 があり、最初の emp 行には行番号 1 があります。これは最初の出現です。

この後、従業員 2、従業員 3 があります... この部門のすべての従業員の後、十分なスペースがある場合、部門の行 2 がありますが、前の部門で従業員 2 の行 ID が検出されました。

等々。

これは、ROWID の行番号がそのテーブルと現在のブロックに関連しているためです。

写真

于 2011-09-20T13:55:47.707 に答える
0

通常、rowid 値は、データベース内の行を一意に識別します。ただし、同じクラスターに一緒に保管されている異なる表の行は、同じ行 ID を持つことができます。

チェックアウト: http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/pseudocolumns008.htm

于 2011-09-20T13:55:20.550 に答える