データベース -> ORACLE -> 領域管理


テーブル使用率算出

DBMS_SPACE.SPACE_USAGE プロシージャーを使用した PL/SQLサンプル

table_free_chk.sql

SET FEEDBACK ON          --PL/SQLプロシージャが正常に完了しましたを表示。
SET SERVEROUTPUT ON      --実行結果を表示。

DECLARE
  V_OWNER    VARCHAR2(30) := 'SCOTT';
  V_TAB_NAME VARCHAR2(30) := 'EMP';
  V_TYPE     VARCHAR2(30) := 'TABLE';

  V_UNFORMATTED_BLOCKS NUMBER;
  V_UNFORMATTED_BYTES  NUMBER;

  V_FS1_BLOCKS        NUMBER;
  V_FS1_BYTES         NUMBER;
  V_FS2_BLOCKS        NUMBER;
  V_FS2_BYTES         NUMBER;
  V_FS3_BLOCKS        NUMBER;
  V_FS3_BYTES         NUMBER;
  V_FS4_BLOCKS        NUMBER;
  V_FS4_BYTES         NUMBER;
  V_FULL_BLOCKS       NUMBER;
  V_FULL_BYTES        NUMBER;
  
  V_FREE_KBYTES       NUMBER;
  V_FREE_BYTES        NUMBER;
  
  V_BYTES             NUMBER;
  V_KBYTES            NUMBER;

  V_PERCENT           NUMBER;

BEGIN

  SELECT BYTES INTO V_BYTES FROM DBA_SEGMENTS
                          WHERE SEGMENT_NAME = 'EMP' AND
                                OWNER = 'SCOTT' AND
                                SEGMENT_TYPE = 'TABLE';

DBMS_SPACE.SPACE_USAGE(
  SEGMENT_OWNER      => V_OWNER,
  SEGMENT_NAME       => V_TAB_NAME,
  SEGMENT_TYPE       => V_TYPE,
  UNFORMATTED_BLOCKS => V_UNFORMATTED_BLOCKS,
  UNFORMATTED_BYTES  => V_UNFORMATTED_BYTES,
  FS1_BLOCKS         => V_FS1_BLOCKS,
  FS1_BYTES          => V_FS1_BYTES,
  FS2_BLOCKS         => V_FS2_BLOCKS,
  FS2_BYTES          => V_FS2_BYTES,
  FS3_BLOCKS         => V_FS3_BLOCKS,
  FS3_BYTES          => V_FS3_BYTES,
  FS4_BLOCKS         => V_FS4_BLOCKS,
  FS4_BYTES          => V_FS4_BYTES,
  FULL_BLOCKS        => V_FULL_BLOCKS,
  FULL_BYTES         => V_FULL_BYTES
);

  V_KBYTES := ROUND(V_BYTES/1024,2);

  V_FREE_BYTES := V_BYTES - V_FULL_BYTES - V_FS4_BYTES 
                  - V_FS3_BYTES - V_FS2_BYTES - V_FS1_BYTES * 0.25;
  V_FREE_KBYTES := ROUND(V_FREE_BYTES/1024,2);
  V_PERCENT := ROUND((V_KBYTES - V_FREE_KBYTES) / V_KBYTES * 100,1);

  DBMS_OUTPUT.PUT_LINE('SIZE= ' || ROUND(V_BYTES/1024,2));
  DBMS_OUTPUT.PUT_LINE('FREE= ' || V_FREE_KBYTES);
  DBMS_OUTPUT.PUT_LINE('USAG= ' || V_PERCENT);
  

  DBMS_OUTPUT.PUT_LINE('FS1 = ' || ROUND(V_FS1_BYTES/1024,2));
  DBMS_OUTPUT.PUT_LINE('FS2 = ' || ROUND(V_FS2_BYTES/1024,2));
  DBMS_OUTPUT.PUT_LINE('FS3 = ' || ROUND(V_FS3_BYTES/1024,2));
  DBMS_OUTPUT.PUT_LINE('FS4 = ' || ROUND(V_FS4_BYTES/1024,2));
  DBMS_OUTPUT.PUT_LINE('FULL= ' || ROUND(V_FULL_BYTES/1024,2));

END;
/

実行結果
SQL> @table_free_chk.sql
SIZE= 4096
FREE= 128
USAG= 96.9
FS1 = 0
FS2 = 0
FS3 = 8
FS4 = 16
FULL= 3944

PL/SQLプロシージャが正常に完了しました。

SQL>



      Document-Folder          一覧
HP-UX
HULFT
JAVA
JP1
JavaScript
Linux
MAC
PHP
Perl
Python
Ruby
SOA
Solaris
Unix全般
Windows
XML
エクセル
スタイルシート
セキュリティー
データベース
ネットワーク
パソコン
ブラウザ
プログラム構文
仮想化
          RSS-Folder
ニュース
   アットマーク・アイティ(@IT)
   シンクイット(ThinkIT)
   インターネットコム
   インターネットウォッチ
   日経IT-Pro
   日経パソコン
   CNET Japan
   ZD-NetJapan
   MYCOM
   RBB-Today
ベンダー
   日本IBM
   日本HP
   サンマイクロシステムズ
   NEC
   富士通
   日立
ソフトウェア
   マイクロソフト
   トレンドマイクロ
   オラクル
   サイボウズ
   Mozilla
   野村総合研究所
   (その他ソフトウェア企業)
更新履歴 一覧
 07/08 PERF
プログラム構文
 07/07 PERF
プログラム構文
 06/25 オブジェクトプログラミング2
Perl>サンプル
 07/12 クローン作成
仮想化>vCenter
 07/12 vyatta設定
ネットワーク>vyatta
 07/12 vyattaインストール
ネットワーク>vyatta
 07/12 リポジトリサーバ
Linux>サーバ構築
 07/05 VMwareのインストール
仮想化>VMware
 07/05 PXEブート
仮想化>KVM
 07/01 DHCPでのPXEブート
仮想化>KVM
 06/27 qcow2仮想DISK作成
仮想化>KVM
 06/13 NWの設定
仮想化>VMwareEsxi
 06/13 IPアドレスの変更
仮想化>VMwareEsxi
 06/12 自動ssh
Unix全般>シェル>Bash
 06/12 diffプログラミング
Python
Google