ちゃむ前回は、2.TRANSACTIONS_PER_ROLLBACK_SEGMENTで指定した数だけ、各ロールバック・セグメントで同時トランザクションを処理できるのかどうかに関しての検証を行った。トランザクション表にトランザクション・スロットがありません。」に関して迫ってみる。DB_BLOCK_SIZE=2Kの環境で行なった)そもそも、トランザクション表とは何のことなのだろうか?トランザクション表は、ロールバック・セグメントのセグメント・ヘッダーの中に存在している。そこに、トランザクション情報を確保している。UPDATE文などの更新処理が行われる際、更新前情報をロールバック・セグメントに格納するが、まず始めにトランザクション表を更新する。実際にトランザクション表を見てみよう。前回、rbs_find50というロールバック・セグメントに、21個の同時トランザクションをエントリさせたが、その時の様子をブロック・ダンプで見てみよう。セグメント・ヘッダーに存在するのだから、DBA_SEGMENTSのHEADER_FILE列と、HEADER_BLOCK列で場所を確認できる。537この情報を元にブロック・ダンプを取得する。これは、同時トランザクションが発生している最中に取得したものである。0x00000001まず、この行数を数えてほしい。21行というのが確認できるはずである。この21行のトランザクション表のデータ数は、1つのロールバック・セグメントで扱える同時トランザクション数と一致する。TRANSACTIONS_PER_ROLLBACK_SEGMENTがMAXで21までしか設定できない原因と言えないだろうか?以下に、各項目の意味を示す。(使用されたロールバック・セグメントのブロック数)最後に、dbaがロールバック・セグメントのdba、つまりudaであることを証明するSQL文を実行してみよう。上記のトランザクション表中の1行目の16進数のdbaである「0x0400021e」を、10進数に変換すると67109406となる。これを用いて以下のSQL文を実行すると、ロールバック・セグメントのdbaということがわかる。ROLLBACKちなみに、DATA_BLOCK_ADDRESS_FILE、DATA_BLOCK_ADDRESS_BLOCKはそれぞれ、dbaからファイル番号とブロック番号を求めるためのファンクションである。reserved.トップページ企業概要プライバシーポリシ。