2011-09-20 1 views
1

Oracle ROWIDは、表内で一意であるsaidです。私はROWID formatの最後の3文字がデータベースブロックの行番号を示すので、同じクラスタに格納された2つの異なるテーブルの2つの行に同じrowidがどのようにあるのか理解できませんでしたか?Oracleクラスタ化された表の同じROWID

クラスタ化されたテーブルの行は同じデータベースブロック内に保持されますが、ROWIDには行番号が含まれているので、データベースブロック内の2つの行を区別してはいけません。

答えて

0

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

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

+0

これは問題です。 ROWIDの行番号はこれらの行を区別できませんか? –

+0

私の更新された応答を参照してください。 –

1

は簡単です。クラスタ化された表の「フレンドリな」行はブロック内に一緒に格納されるため、同じROWIDを持つことができます。

下の画像(frontiernetから)では、最初のdept行はrownumber 1を持ち、最初のemp行はrownumber 1です。これは最初の発生です。

これ以降我々はemp 2、emp 3を持っています。十分なスペースがあれば、この部門のすべてのempsの後に、あなたは2つのdeptがありますが、彼のrowidは前のdeptのemp 2と出会いました。

など。

これは、ROWIDからの行番号がその表と現在のブロックからの相対値であるためです。

picture

+0

私が正しく理解すれば、deptとemp列の値は同じ行IDに格納されるので、どちらも同じ行IDを持つことになります。クラスタリングはEMP_TableをDEPT_Table内にネストします。その主キーはクラスタ・キーでもあります。 –

+0

あなたは近くにいます。問題は行番号(rowidからの最後の3文字)を意味します。このブロックのx番目のテーブル行を意味するならば、私の説明が有効です。 –

+0

"あなたは近くにいる"と言った理由は分かりません。 empテーブルとdeptテーブルの行は、dept_noでクラスタ化されたキーに格納されないため、同じ行IDを持つことになりますか?上記の質問を投稿する主な理由は、クラスタの異なるテーブル部分の2つの行が同じROWIDを持つ方法を知ることです。 –

関連する問題