• 締切済み

オラクル オブジェクトのデータサイズ抽出SQLについて

お世話になります。オラクルのSQLについて教えて下さい。 データサイズについて調査したく、下の条件でデータを抽出したいと考えています -------------------------------------------------所有者はSQLPlusで最初にログインしたユーザの 頭文字が "MY" で始まるオブジェクト全て(テーブル・インデックスなど)のデータサイズ を知りたいと考えているのですが・・・ ------------------------------------------------- 全てのオブジェクトでなくとも、テーブルやインデックスごとのデータサイズを抽出でも 良いのですが、どなたかご教授下さい。 宜しくお願い致します。

  • Oracle
  • 回答数3
  • ありがとう数1

みんなの回答

  • mebun
  • ベストアンサー率45% (10/22)
回答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でログイン後に @関数のファイル名; 以上です

  • neko3839
  • ベストアンサー率37% (100/268)
回答No.2

SQL*PLUSでしたか。失礼しました。

  • neko3839
  • ベストアンサー率37% (100/268)
回答No.1

「データサイズ」というのは、割り当てられた容量・ブロック数という意味で良いのでしょうか? こんな感じでいかがですか? svrmgrl connect internal select SEGMENT_NAME, SEGMENT_TYPE, BYTES, BLOCKS from dba_segments where SEGMENT_NAME like 'MY%'

関連するQ&A

  • オラクルからAccessにデータ追加

    オラクルから、必要なデータを抜出し加工の為のDBをAccessで作成していますが、オラクルから抜き出したデータ(レコードセット)を、どうやってAccessのテーブルに書き込めばよいかがわかりません。 ◎環境 Oracle:10g Access:2010 ◎現在の状況 Dim CON As New ADODB.Connection Dim RS As ADODB.Recordset Dim SQL As String Dim i As Integer 'DB接続定義 CON.Open "DSN=DNS名;UID=ユーザー名;PWD=パスワード;" 'SQL文 SQL = "SELECT " SQL = SQL & "カラム1," SQL = SQL & "カラム2," SQL = SQL & "カラム3" SQL = SQL & "FROM オラクルテーブル名 " SQL = SQL & "WHERE 抽出条件 " SQL = SQL & "AND 抽出条件" SQL = SQL & "GROUP BY カラム" SET RS = CON.EXCUTE(SQL) For i = 1 To 10 Debug.Print rs(カラム1) & rs(カラム2) next i ここまでは、オラクルのテーブルから、レコードセットにデータが取り込まれてます。 rs.close: SET RS = Nothing con.close:SET CON=Nothing end sub 案1 レコードセットのデータを、Access側のテーブルにループで回して、1行ずつデータ追加 案2 INTO句で直接、テーブル作成 調べていて、2通りのやり方があると思うのですが、どちらにしても、テーブルへの書き込み方がわかりません。 案1の場合、Access側のテーブルを開いてデータ追加する方法 ※同時に2つのテーブルを開くことになるのでは? 案2の場合、SQL文はオラクルで処理する為の物なので、AccessテーブルのINTO句が使えるのか? オラクルのテーブルをリンクする事も考えたのですが、実際動かすPCにはAccessRuntimeしかインストールしてませんので、オラクルのテーブルをリンクしてくれませんでした。 よい方法があれば、アドバイスを頂けたら幸いです。

  • Oracle12cでユーザのSQLPLUSログイン

    基本的な質問ですみません。Oracle 12cを初めて使うのですが、すごく単純に、ユーザを作成し、そのユーザでデータベースオブジェクト(テーブルなど)を作成する拡張子が.sqlのスクリプトを流したいです。 11gまでの場合、システムユーザでCREATE USERしたのちに、コマンドプロンプトを立ち上げて C:\Scripts> SQLPLUS <USER>/<PASSWORD> @createtables.sql とするだけで良かったと思います。 今回、12cではユーザの考え方が変わっており、CDBとPDBを作成しました。 > SQLPLUS /NOLOG SQL> CONN SYS AS SYSDBA (上記のようにローカル接続するとCDBに接続される) SQL> ALTER SESSION SET CONTAINER=PDB1; // PDBへ移動 SQL> SHOW CON_NAME // 念のため現在接続中のPDBの名前確認 SQL> STARTUP; (これでマウント状態だったPDB1がOPENしてREAD WRITEになる) この状態でCREATE USER文を実行してPDB1上でユーザを作成。 ここからなんですが、PDBやCDBへのログイン方法はわかたのですが、PDB上で作成したユーザにはどのようにしてログインするのでしょうか? ログインしてテーブル作成をしたいです。また、テーブル作成のスクリプト文(.sql)があるのでそれを流したい場合は、コマンドプロンプトからどのように実行すればよいでしょうか? 基本的な質問で恐縮ですが、宜しくお願いします。

  • ORACLE のSQL について

    おはようございます。 ORACLEのSQLについて教えてください。 GROUP BY で抽出されたデータの レコード数を把握するSQLはどのようにすればよいのでようか。 ********************** 例: SQL: SELECT TEST_CD FROM TABLE GROUP BY TEST_CD 結果: 01 02 03 04 05 ********************** この結果のレコード(5レコード)のSQL式はどのようになりますか?

  • オラクル SQLにログイン出来ません

    オラクルについてご質問させて頂きます。 書籍に付いていたオラクル10g<体験版>をインストールしたのですが、その後どの様にしたよいかがまったく分かりません。 SQLを開いてみると、ログイン画面が出てくるのですが、ここでのユーザーID、パスワード、HostStringとは何のことなのでしょうか? ご回答よろしくお願いします。

  • oracleでexpdpを使いデータをexport

    こんにちは 現在oracleでexpdpを使い、目的のテーブルをexportしたいと思っていますが、エラーが出て出来ません。 oracleのバージョンは10.2です 行った作業は下記です 1sqlplusにログイン >sqlplus ユーザ名/パスワード@データベース別名 2.ディレクトリオブジェクトの作成 >create directory ディレクトリオブジェクト名 as 'ディレクトリのフルパス'; 3.使用ユーザにディレクトリに対する読み込み書き込み権限を付ける >grant read,write on directory ディレクトリオブジェクト名 to ユーザ名; 4.sqlplusからログオフし、ディレクトリを作成。rootで入り、chmodで777にディレクトリの権限を変更 expdpを実行 この時のユーザーはgrant権限で読み込み書き込みを与えたユーザー >expdp ユーザ名/パスワード@データベース別名 DIRECTORY=ディレクトリオブジェクト名 DUMPFILE=ダンプファイル名 LOGFILE=ログファイル名 ==ここからエラーが出ます== ORA-39001: 引数値が無効です ORA-39000: ダンプ・ファイル指定が無効です ORA-31641: ダンプ・ファイル"/xxxx/xxxx.dmp"を作成できません ORA-27040: ファイルの作成エラー、ファイルを作成できません SVR4 Error: 13: Permission denied ご存知の方いらっしゃいましたらエラー退避方法教えていただけないでしょうか? どうぞよろしくお願いいたします

  • 【SQL】SELECT文

    こんにちは。OracleのSQLを勉強中の者です。 SELECT文について質問させてください。 下記のテーブルから購入フラグがすべて「1」のユーザ名を抽出したいのですが、SQL文をご教授いただけますでしょうか。 テーブル名:商品購入テーブル ユーザ名   商品名    購入フラグ ---------- ---------- -------------- 001      AAA       1 001      BBB       1 001      CCC       0 002      DDD       1 003      AAA       1 003      EEE       1 004      CCC       0 このテーブルからですと、002と003のユーザが抽出される形となります。 以上、よろしくお願いいたします。

  • データ抽出SQLについて

    以下の様なテーブル内容のデータがあり、抽出条件:項目Aが同一でかつ、その項目Aに対する項目Bの値がひとつでも異なっている項目Aを抽出するSQLについて教えてもらえないでしょうか。よろしく御願い致します。 <データの内容> 項目A 項目B 0001 A 0001 A 0002 A 0002 B 0003 C 0003 A 0003 A 0004 B 0004 B 0004 B 0004 B <抽出結果> 0002 0003

  • オラクルDBからのデータ取得について

    こんばんわ。 オラクル(sqlplus)についての質問2点です。 (1)シェルからオラクルDBへアクセスし、データを取得したいのですが、  select時に、結果のヘッダーをつけずに結果(データ)のみをファイル出力することは可能でしょうか? (DB2で言うところの「-x」オプションのような・・・) (2)エラー時にSQLコードを取得したいのですが、SQLコードをファイル出力することは可能でしょうか? オラクルは初心者で、行き詰まってしまいました・・・ どうかよろしくお願いします。

  • オラクルSQLでつくったデータをcobolで読み込みたい

    オラクルSQLでつくったテーブル&データを、 cobolで読み込んで使うにはどうすればいいのでしょうか? 例えば、 この「ひよこグミ」さんのページ http://www16.plala.or.jp/hiyokogumi/ のmission3にある「ファイルを読む」ですが、 SELECT A-FILE ASSIGN TO \"c:\\cobol\\lst001.cbl\" を記述する必要があるそうですが、このc:\\cobol\\lst001.cbl に当てはまる部分に、どうやったらSQLでつくったデータを当て込めるのか、 お伺いしたいです。

  • Oracleでオブジェクト権限を調べるディクショナリは?

    Oracleであるユーザーtest_usr1がSample_tblというテーブルについて、test_user2に対してたとえばselectとupdateする権限を付与した場合、test_user2のオブジェクト権限を調べる場合、どのディクショナリで調べたらいいのでしょうか。 基本的な質問で恐縮ですが、よろしくお願いいたします。 Oracle 8.1.7のリファレンス・マニュアルを調べましたが、ここには載っていないようです。