• 締切済み

Oracle8で表領域の現在のエクステント数を知る方法

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

みんなの回答

  • bourbon
  • ベストアンサー率46% (18/39)
回答No.6

こんにちわ。 こんなのでどうですか? SELECT TABLESPACE_NAME, COUNT(EXTENT_ID), SUM(BYTES) FROM DBA_EXTENTS GROUP BY TABLESPACE_NAME; 表領域ごとのエクステントの数だと思いますよ。

hyuhyupopo
質問者

お礼

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

  • gould09
  • ベストアンサー率33% (196/589)
回答No.5

エクステント状況を調査するための方法と書いてある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

hyuhyupopo
質問者

お礼

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

  • paz777
  • ベストアンサー率47% (77/163)
回答No.4

こんにちは。再登場の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/
hyuhyupopo
質問者

お礼

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

  • gould09
  • ベストアンサー率33% (196/589)
回答No.3

 すみません。下の回答をしたものですが、”現在のエクステント数”の回答になっていませんでした。  マニュアルを調べて直して見ましたら、エクステントに関係する情報は、次のデータ・ディクショナリ・ビユーに含まれると有ります。  ・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等を使って、使っていない領域から逆算する方法もあると思います。

hyuhyupopo
質問者

お礼

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

  • gould09
  • ベストアンサー率33% (196/589)
回答No.2

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

hyuhyupopo
質問者

お礼

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

  • paz777
  • ベストアンサー率47% (77/163)
回答No.1

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

hyuhyupopo
質問者

お礼

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

関連するQ&A

  • エクステント数

    Oracle10gにて表領域Aを1GBで作りました。 そのあとにテーブルBを表領域AにStorageのInitialを10MB、 テーブルBを同じく表領域Aに30MBでつくりました。 そしてテーブルB,テーブルCにそれぞれ1MBほどのデータをいれました。 テーブルB,テーブルCのセグメントのエクステント数は1になるはずなの ですが、なぜかエクステント数が50とか30になってしまいます。 Storage句に大きめのInitialをCreate Table文でしていするだけでは Initialが1にならないのでしょうか?

  • エクステントについて

    データベースをOracle8i→Oracle10gへ移行しました。 10gのデフォルトであるローカル管理で表領域を管理していますが、 これまでディクショナリ管理にしか接していなかったため困っています。 で、疑問が出てきました。 ローカル管理でも、フラグメンテーションは発生するとは思いますが それに対してはどのように対応したらよいでしょう。 データをDrop/Createすればデータの並びはきれいになると思いますが もし、そのように対応するならどのような基準で対象となるテーブルを選んだらよいでしょうか。 もちろん、簡単に対応する方法があったら教えてください。 これまでは複数エクステントにデータがまたがっているテーブルをディクショナリからSelectし、 第1エクステント内にデータが収まるようテーブルをDrop/Createして データをインポートしていました。 サーバ環境は OS:Windows2003Server StandardEdition DB:Oracle Database 10g 10.2.0.1.0 StandartEdition

  • 表領域の使用量が知りたい。

    各テーブルごとのエクステント回数及び、表領域の使用量(最大値に対しての)が知る方法はありませんでしょうか。できれば一覧で見れるとよいです。

  • Oracle8.1.7の、表領域の上限をお教え下さい

    Oracle8.1.7の、表領域の上限をお教え下さい。 表領域は、100Gの領域を作成する予定です。 複数ファイルで分割して作るのではなく、 1ファイルで作成しようと思っております。 (OSは、Windows2000で、Win2000上では、1ファイルの上限は2テラ まで、大丈夫との事です) よろしくお願いいたします。

  • ORACLE8 表領域のUSERSが異常に大きい。

    環境は、OS:Windows 2000Server DB:ORACLE 8.1.7です。 SQL/PLUSにてINDEXを追加すると、表領域がINDEX1つ毎に128メガ 増えてしまいます。INDEXは200個ぐらい使用したいのですが、このまま では、ディスク容量が足りません。 また、表をINDEX無しでインポートすると、データ量で変わるのかどうか解りませんが表領域が、 Aファイルは256メガ(128×2) Bファイルは384メガ(128×3) と128×○メガずつ増えてしまいます。 よって、総表領域が30ギガになっています。 このDMPを別の同じ環境のパソコンにIMPすると、10ギガ しか表領域が増えません。 何か設定で、128メガずつ増える表領域を、128メガ以下にすることはできないでしょうか? 早急に対応したいので、申し訳ございませんが、教えて下さい。 宜しくお願いします。

  • Oracle8での表領域の開放について

    DWHで使用しているDB(Oracle8)についての質問です。 ユーザーオブジェクトを格納している非SYSTEM表領域が自動拡張の末がDisk容量を圧迫してきています。サーバーのDisk容量に余裕がなくデータファイルを追加することでの対策は打てません。 大容量のTABLEの作成や削除をしていたので実際に使用している容量は多くないはずなので、一度リフレッシュ(使っていない表領域を開放)したいのですが、Oracle8で可能でしょうか? 可能であれば手順についてもご教授いただきたく、宜しくお願い致します。

  • 表領域の作成について

    表領域を作成してインポートしたら下記のエラーが出力されて困っています。 表領域の作成の仕方が駄目でエラーが出力されてしまったのでしょうか。 下記のCREATE TABLESPACE文で表領域を作成しています。 ---------------------------------------------------------------------- CREATE TABLESPACE "T_DAT" BLOCKSIZE 8192 DATAFILE 'D:\oracle\oradata\ora92\DAT_01.DBF' SIZE 32767M, 'D:\oracle\oradata\ora92\DAT_02.DBF' SIZE 32767M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M SEGMENT SPACE MANAGEMENT AUTO; ---------------------------------------------------------------------- コマンドプロンプトでimpコマンドを実行したら、下記のエラーなどが出力されました。 ---------------------------------------------------------------------- IMP-00003: Oracleエラー1659が発生しました。 ORA-01659: nを超えるMINEXTENTSを表領域T_DATに割当てできません。 IMP-00003: Oracleエラー1658が発生しました。 ORA-01658: 表領域T_DATにセグメント用のINITIALエクステントを作成できません。 ---------------------------------------------------------------------- 何がいけないのかが正直わかりません。 申し訳ありませんがアドバイスいただけませんでしょうか。 宜しくお願いします。

  • CreateTable時のInitialエクステントについて

    以下のようにテーブルスペースとテーブルを作成すると空のテーブルなのにエクステントが2つ発生するのですが、なぜでしょうか? CreateTableではInitialエクステントが1つ発生するだけではないのでしょうか? ご回答をお願いします。 バージョン:Oracle9.2.0.1.0 CREATE TABLESPACE GOMI DATAFILE '/export/home/dbf/user_data_gomi.dbf' SIZE 32M REUSE MINIMUM EXTENT 1K DEFAULT STORAGE ( INITIAL 512K NEXT 512K PCTINCREASE 0 MINEXTENTS 1 ); ========================================= CREATE TABLE GOMI_T ( NAMAE VARCHAR2(60) ) PCTFREE 0 TABLESPACE GOMI STORAGE ( INITIAL 128K NEXT 16K MINEXTENTS 1 ); SQL> L 1 SELECT SUBSTR(SEGMENT_NAME,1,8) "SEGMENT",EXTENT_ID,BYTES,BLOCKS 2 FROM DBA_EXTENTS 3* WHERE TABLESPACE_NAME = 'GOMI' SQL> / SEGMENT EXTENT_ID BYTES BLOCKS ---------------- ---------- ---------- ---------- GOMI_T 0 65536 32 GOMI_T 1 65536 32 ↑エクステントが2つ発生する。

  • 表と表領域とデータファイルについて

    よろしくお願いします。 表と表領域とデータファイルの関係を一発で導く方法を 教えてください。 今のところ、下記2つに分けているので、1つのSQLとしたいです。 データベースは、Oracle9i(9.2.0.8.0)です。 どうぞよろしくお願いします。 1. ------------------------------ SQL> select table_name, tablespace_name from all_all_tables 2 where table_name = 'SAMPLE' 3 ; ------------------------------ 2. ------------------------------ SQL> select tablespace_name, file_name from DBA_DATA_FILES 2 where tablespace_name = 'USERS' 3 ; ------------------------------

  • 表領域の拡張について

    表領域の拡張について教えてください。 以前、以下のようなSQL文で表領域(WEB_DATA)を作成しました。 -------- CREATE TABLESPACE WEB_DATA DATAFILE '/home1/oracle/app/oracle/oradata/orcl/WEB_DATA.dbf' SIZE 500M REUSE AUTOEXTEND ON NEXT 1M MAXSIZE 1000M EXTENT MANAGEMENT LOCAL AUTOALLOCATE; -------- 最近データ容量も増えており以下のように約800Mほどとなっております。 -------- -rw-r----- 1 oracle oinstall 806363136 11月 6日 08:18 WEB_DATA.dbf -------- よって表領域の拡張を考えております。 そこで、考えられる方法として以下の2つがあると思われますが、どちらを選択するほうが良いのでしょうか? (1)alter tablespace文の add datafile句 (2)alter database文の resize句 両者のメリット・デメリットがイマイチよく分かりません。 (パフォーマンス的にどちらが良いなどもあるのでしょうか?) また表領域のmazsizeの上限値は通常どれほどにしておくべきなのでしょうか? 環境は以下の通りです。 OS:Solaris8 DB:Oracle9i 以上、宜しくお願い致します。