お世話になります。オラクルのSQLについて教えて下さい。
データサイズについて調査したく、下の条件でデータを抽出したいと考えています
-------------------------------------------------所有者はSQLPlusで最初にログインしたユーザの
頭文字が "MY" で始まるオブジェクト全て(テーブル・インデックスなど)のデータサイズ
を知りたいと考えているのですが・・・
-------------------------------------------------
全てのオブジェクトでなくとも、テーブルやインデックスごとのデータサイズを抽出でも
良いのですが、どなたかご教授下さい。
宜しくお願い致します。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
これを参考にして下さい。
テーブルの場合
set linesize 200
set pagesize 1000
select a.TABLE_NAME,a.TABLESPACE_NAME,a.INITIAL_EXTENT,a.NEXT_EXTENT,
b.init_bytes,b.blk_cnt,
tbl_cnt(a.TABLE_NAME),
c.len
from user_tables a,
(select SEGMENT_NAME,TABLESPACE_NAME,max(EXTENT_ID),max(BYTES) as init_bytes,max(BLOCKS) as blk_cnt
from USER_EXTENTS group by SEGMENT_NAME, TABLESPACE_NAME) b,
(select TABLE_NAME,sum(DATA_LENGTH) as len from user_tab_columns group by TABLE_NAME) c
where a.TABLE_NAME = b.SEGMENT_NAME
and a.TABLESPACE_NAME = b.TABLESPACE_NAME
and a.TABLE_NAME = c.TABLE_NAME
order by a.TABLE_NAME
インデックスの場合
set linesize 200
set pagesize 2000
select a.TABLE_NAME,a.INDEX_NAME,a.TABLESPACE_NAME,a.INITIAL_EXTENT,a.NEXT_EXTENT,
b.init_bytes,b.blk_cnt,
tbl_cnt(a.TABLE_NAME),
c.len
from user_indexes a,
(select SEGMENT_NAME,TABLESPACE_NAME,max(EXTENT_ID),max(BYTES) as init_bytes,max(BLOCKS) as blk_cnt
from USER_EXTENTS group by SEGMENT_NAME, TABLESPACE_NAME) b,
(select INDEX_NAME,sum(COLUMN_LENGTH) as len from user_ind_columns group by INDEX_NAME) c
where a.INDEX_NAME = b.SEGMENT_NAME
and a.TABLESPACE_NAME = b.TABLESPACE_NAME
and a.INDEX_NAME = c.INDEX_NAME
order by a.INDEX_NAME
この結果をspool出力してExcelでひらいて集計して下さい。
すいません関数が一つ必要です。
FUNCTION tbl_cnt(
tbl_name IN VARCHAR2
) RETURN NUMBER
IS
num NUMBER;
BEGIN
execute immediate 'select count(*) from ' || tbl_name into num;
RETURN num;
END tbl_cnt;
これを先にコンパイルして下さい。
sqlplusでログイン後に
@関数のファイル名;
以上です
No.1
- 回答日時:
「データサイズ」というのは、割り当てられた容量・ブロック数という意味で良いのでしょうか?
こんな感じでいかがですか?
svrmgrl
connect internal
select SEGMENT_NAME, SEGMENT_TYPE, BYTES, BLOCKS
from dba_segments
where SEGMENT_NAME like 'MY%'
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript オブジェクトから任意のプロパティを全て抽出する一番簡単な方法 1 2023/08/09 21:13
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Oracle 参照関係のフィールドについて 1 2023/05/27 17:49
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) SQLで抽出 4 2022/12/04 13:55
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- MySQL SQLについて教えて下さい。 SELECT分で、あるカラムにある日付の 半年先のデータを取って来たい 3 2022/12/07 22:28
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- Excel(エクセル) Excelマクロの差分抽出のコードを教えていただきたいです。 2 2023/03/14 11:40
- SQL Server SQLを駆使したデータ抽出ってどんなスキルがいる? 2 2023/07/29 14:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQL>UPDATEと同時にその件数を...
-
Date型にNULLをセットしたい V...
-
SELECTで1件のみ取得するには?
-
Accessで別テーブルの値をフォ...
-
select句副問い合わせ 値の個...
-
GROUP BYを行った後に結合した...
-
エクスプローラーで「2つの条件...
-
ファイル書込みで一行もしくは...
-
<SQL>条件付きで最小値レコード...
-
SQLServer 日付が直前のレコー...
-
Access を×ボタンで閉じ...
-
sum()の出力結果順に並び替えを...
-
データセットのレコード更新が...
-
COBOLでのランダムアクセス
-
【初歩】ラジオボタンをつかっ...
-
チェックボックスの項目をDBにi...
-
JSPのNULLレコード表示について...
-
レコードセット(ADO.Recordset)...
-
select insertで複数テーブルか...
-
GROUP BYを使ったSELECT文の総...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SELECTで1件のみ取得するには?
-
Date型にNULLをセットしたい V...
-
SQL>UPDATEと同時にその件数を...
-
oracleのinsert select性能
-
sqlplusの処理が途中でとまる
-
ACCESSのSQLの書き方
-
異なるDB間でのJOINやVIEWについて
-
プロシージャで変数をテーブル...
-
SELECTでの指定行からの指定行...
-
ORDER BY 半角カナ
-
☆☆☆☆SQL Olacle 3つ以上の文字...
-
AccessVBAでリンクテーブルの参...
-
ACCESSとORACLEで抽出結果が異なる
-
PostgreSQLで小数点以下を処理...
-
オラクル オブジェクトのデー...
-
正規化?の戻しについて
-
取得するデータの件数指定、MyS...
-
SQLで抽出可能でしょうか?
-
GROUP BYを行った後に結合した...
-
Accessで別テーブルの値をフォ...
おすすめ情報