• ベストアンサー

USER_SEGMENTの参照について

baunceです。 とくに困っているわけではないのですが、ずっと気になって いたのでここで質問させていただきます。 テーブルサイズを求める際に、USER_SEGMENTを参照して求めて いる方があります。 この際、GROUP BY SEGMENT_NAME と記載されている方が多いのですが、これは必要なのでしょうか。 USER_SEGMENTはSEGMENT_NAMEでユニークにはならないのでしょうか。 ちなみに私が携わっている環境ではGROUP BY してもしなくても 同じ結果となるようです。 以上よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.1

TABLEとINDEXで同じSEGMENT_NAMEの場合もあるので、SEGMENT_NAMEではユニークにならないです。 たぶんSELECTする際にはSEGMENT_TYPEを指定するのでしょうから、これで重複する事はあまり無いと思いますが。 上記以外でも、パーティション表の場合、 各パーティションのSEGMENT_NAMEは同一になり、PARTITION_NAMEにそれぞれのパーティション名が入るようです。 当方の環境は10g XEなので、パーティション機能を利用することは出来ないのですが、 DBA_SEGMENTSを見てみたらSYSAUX表領域にそのようなデータがあることが確認できました。 参考になれば幸いです。

baunce
質問者

お礼

yamada_gさん ありがとうございます。 なるほどですね! たしかにその通りですね。 念のために今回確認する際に偶然気づいたのですが、 テーブルをcreateしたばかりの時は、user_segmentsに 入っていないのですね。驚きです。 なにかしらデータをINSERTしたタイミングでuser_segmentsに含まれるみたいです。 さらには全件レコードをDELETEしてもTRUNCATEしても 一度user_segmentsに入った後は消えないようです。 何かの参考になりましたらと思い記載してみました。 最後に、お礼が遅くなって申し訳ありませんでした。