プロが教えるわが家の防犯対策術!

NT版Oracle8.0.5で表領域の現在のエクステント数を知る方法(SQL)を教えて下さい。

A 回答 (6件)

こんにちわ。


こんなのでどうですか?

SELECT TABLESPACE_NAME, COUNT(EXTENT_ID), SUM(BYTES) FROM DBA_EXTENTS
GROUP BY TABLESPACE_NAME;

表領域ごとのエクステントの数だと思いますよ。
    • good
    • 0
この回答へのお礼

ご回答いただいて申し訳ないのですが、セグメント毎のEXTENT数のように思えるのですが。
表領域毎のEXTENT数とすると同じ表領域で同じEXTENT_IDは存在しないのではないかと思いますが、自分の使っている環境では存在します。

お礼日時:2001/03/29 15:30

エクステント状況を調査するための方法と書いてあるSQLを見つけましたので、参考のためにアップします。


本に書いてある内容をそのまま書いておきます。
自信はないのですが、役にたつかもしれないのでアップしておきます。
まとはずれだったら、ごめんなさい。

column sys_date new_value_sysdate noprint
column owner format a12 heading "OWNER"
column segment_name format a25 trunc heading "SEGMENT/NAME"
column segment_type format a10 trunc heading "SEGMENT/TYPE"
column kbytes format 9,999,999 heading "KBYTES"
column extents format 9,999,999 heading "EXTENTS"
column max_extents format 99999 heading "MAX/EXTENTS"

select to_char(sysdate,'Dy DD-Mon-YY HH:MI PM')SYS_DATE,
ds.owner, ds_segment_name, ds_segment_type,
ds.bytes/1024 kbytes, ds.extents,ds.max_extents
from sys.dba_segments ds
where ds.extents>&WARN_EXTENTS
order by ds.extents desc, ds.owner
    • good
    • 0
この回答へのお礼

何度もご回答ありがとうございます。
ds_segment_name は ds.segment_name 、
ds_segment_type は ds.segment_type の誤りと思われます。
&WARN_EXTENTS も定義しないといけないでしょう。
それから重要な点なんですが、dba_segmentsにはtablespaceに関するエクステント情報はないようです。

お礼日時:2001/03/16 09:10

こんにちは。

再登場のpaz777です。

ちょっと勘違いしていました。
σ(^^)の回答は[ALTER TABLESPACE ADD DATAFILE]で追加
した場合を想定していました。
ご質問の件は[AUTOEXTENTS]で増分された数を知りたいの
ですよね?
色々と調べてみましたが、今現在、見つけることが出来て
いません。

お詫びと言ってはなんですが、以下の URLから
「Object Browser for Windows Version 7.0」
(Copyright(c) 1997-2000 System Integrator Co.,Ltd)
ってソフトがDLでき、このソフトで表領域の監視が行えます。
http://www.sint.co.jp/

フリーソフトでは無いのですが30日間の試用期限付きで
利用はできます。
あっ、操作には十分に注意して下さいね。
(表領域を簡単に削除出来たりするので・・・)

ではでは・・・

参考URL:http://www.sint.co.jp/
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
お手数をおかけしました。
参考にさせていただきます。

お礼日時:2001/03/14 12:59

 すみません。

下の回答をしたものですが、”現在のエクステント数”の回答になっていませんでした。

 マニュアルを調べて直して見ましたら、エクステントに関係する情報は、次のデータ・ディクショナリ・ビユーに含まれると有ります。

 ・USER_EXTEXTS
 ・DBA_EXTENTS
 ・USER_FREE_SPACE
 ・DBA_FREE_SPACE

使用例は、次以下参照して下さい。

 SELECT segment_name, bytes, blocks
FROM sys.dba_extents
WHERE segment_type = 'ROLLBACK' ;

 ここで、'ROLLBACK'の所を'TABLE'に変更すれば、表の情報がえられます。
 但し、このやり方では、表領域の情報は得られないので、各表の情報を合計して表領域全体の情報を得る必要があるようです。
 逆に、DBA_FREE_SPACE等を使って、使っていない領域から逆算する方法もあると思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
今回知りたいのは未使用領域ではなく、表領域自体のエクステント数です。表領域を何回拡張したかです。

お礼日時:2001/03/14 12:57

Oracle7のマニュアルを見たのですが、多分同じではないでしょうか。



SELECT tablespace_name "TABLSPACE", initial_extent "INITIAL_EXT", next_extent "NEXT_EXT", min_extents "MIN_EXT", max_extents "MAX_EXT", pct_increase FROM sys.dba_tablespaces;

※以下は、表示例ですが、スペースが詰まってしまって見ずらくなってしまいました。

TABLESPACE INITIAL_EXT NEXT_EXT MIN_EXT MAN_EXT PCT_INCREASE
---------- ----------- -------- ------- ------- ------------
SYSTEM 10240000 10240000 1 99 50
USERS 10240000 10240000 1 99 50
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
現在エクステントがいくつ目なのかということが知りたいのですが、いかがでしょうか。
TABLEの場合、EXTENTSという項目があるのですがTABLESPACEにはないのでしょうか。

お礼日時:2001/03/13 23:49

こんにちは。



[表領域]ってTABLESPACEのことですよね?
NT版ではちょっと自信ないのですが、
SERVER版ではテーブル[SYS.DBA_DATA_FILES]を参照すれば
EXTENTを確認できると思います。
ORACLE8なので同じだとは思うのですが違いますか?
ちなみにSQL文だと
----------------------------------------------------
SELECT * FROM SYS.DBA_DATA_FILES
WHERE TABLESPACE_NAME = 'XXXXXXX';
----------------------------------------------------
になると思います。
間違っていたらごめんなさいです。
ではでは・・・
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
NT版ではやはり異なるようです。
SYS.DBA_DATA_FILESには
FILE_NAME, FILE_ID, TABLESPACE_NAME, BYTES,
BLOCKS, STATUS, RELATIVE_FNO, AUTOEXTENSIBLE,
MAXBYTES, MAXBLOCKS, INCREMENT_BY
がありますがEXTENTSはありません。
NT版では表領域と、表領域を構成する物理ファイルが別れていますが、これは物理ファイルの情報のようです。

お礼日時:2001/03/13 12:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す