2017-07-27 6 views
0

Oracle 10gでは、dbの現在の表領域サイズを見つける必要があります。周囲を見渡すと、dba_extentsのようなテーブルを使用してサイズを決定するスクリプトが多数見つかりましたが、使用しているデータベースにはこれらのdba_ *テーブルがありません。dba_ * metatablesを使用しないoracleでの表領域サイズの検索

(私はテーブルサイズのほとんどが塊であるため、複雑になり、テーブルのサイズを、見つけるためのプロキシとしてこれを使用しています。)

答えて

0

DBA_ *ビュー内に存在するデータ・ディクショナリの一部でありますすべてのOracleデータベースそれらはsysスキーマにあり、クエリできない場合は、SELECTアクセス権がないことを意味します。

確認したい表がスキーマ内にある場合は、たとえば次のように置き換えることができます。 user_extentsとdba_extentsが動作し、クエリが動作するはずです。

ここで(インデックスが含まれている)スキーマ内のテーブルの大きさを伝えるためのスクリプトのための私の提案です:

select segment_name, segment_type, bytes/1024/1024 as size_in_mb 
from user_segments 
where segment_name = :YOUR_TABLE 
    or segment_name in (select segment_name from user_lobs where table_name = :YOUR_TABLE) 
    or segment_name in (select index_name from user_indexes where table_name = :YOUR_TABLE); 
3

DBA_*ビューは"Static Data Dictionary Views"の一部である一般的に、すべてのビューの3つのバージョン、DBA_がありますあなたにアクセス権があることを示すALL_と、自分が所有していることを示すUSER_があり、OWNERという列はありません。

たとえば、DBA_TABLESにはすべてのテーブルがあり、ALL_TABLESは選択可能なテーブル、USER_TABLESは所有するテーブルです。

ビューは"Static Data Dictionary Views"に記載されています。 DBA_からALL_またはUSER_に変換する必要がある場合は、優れたリソースです。

残念ながら_EXTENTSは、DBAおよびUSERバージョンでのみ提供されます。だから、アクセスできるが所有していないオブジェクトに関する情報が必要な場合は、常駐DBAに助けを求める必要があります。

関連する問題