表領域が作成されたときに設定されたものを判別する必要がありMAXSIZE
ます(Oracle 10g)
明らかな何かが欠けていると確信していますが、の情報では情報がすぐにはわかりませんDBA_TABLESPACES
。
表領域が作成されたときに設定されたものを判別する必要がありMAXSIZE
ます(Oracle 10g)
明らかな何かが欠けていると確信していますが、の情報では情報がすぐにはわかりませんDBA_TABLESPACES
。
11gでは、このクエリで答えが得られますが、10gを使用していることに気付きました。残念ながら、有用な列がありません。
select tablespace_name, max_size
from dba_tablespaces
/
10gではあなたがしなければならないでしょう
select tablespace_name
, initial_extent + (next_extent * (max_extents-1)) as calc_max_size
from dba_tablespaces
/
これがデフォルトの最大サイズであることを忘れないでください。実際には、テーブルスペースに割り当てられたデータファイルのサイズによって制限されます。これは、この理論上の最大値よりはるかに小さい場合があります。
編集
@Paulのコメントは適切です。正解は、表領域の最大サイズは無意味で、実際にはほとんど架空の概念であると言うことだと思います。表領域のサイズは、実際にはそのデータファイルによって決定され、その潜在的な最大最大サイズは、割り当てることができるデータファイルの最大数によって決定されます。SQLリファレンスには、このトピックについて次のように書かれています 。
したがって、おそらくこれはより便利なクエリです...
select tablespace_name
, count(*) as no_of_data_files
, sum(maxblocks) as max_size
from dba_data_files
group by tablespace_name
/
...現在割り当てられているデータファイルにのみ適用されることに注意してください。
編集2
MAXSIZEは、表領域ではなくデータファイルに適用されます。そのため、MAXSIZEキーワードについては、CREATE TABLESPACEではなく 、filespec句のドキュメントで説明されています。
それはすべて、データファイルが自動拡張可能かどうかによって異なります。
したがって、DBA_DATA_FILESから正しい情報を取得します。
AUTOEXTENSIBLEがYESに設定されている場合は、MAXBYTESの合計が必要です。
AUTOEXTENSIBLEがNOに設定されている場合は、BYTESの合計が必要です。
DBA_TABLESPACESのMAX_SIZEは、表領域自体の最大サイズとは何の関係もありません。オラクルの文書によると、それは
「セグメントのデフォルトの最大サイズ」
したがって、正しいクエリは次のとおりです。
select TABLESPACE_NAME, sum(decode(AUTOEXTENSIBLE, 'YES', MAXBYTES, BYTES)) MAX_SIZE
from DBA_DATA_FILES
group by TABLESPACE_NAME;
これは11gでテストされていますが、10gでも機能するはずです。各表領域の最大サイズをバイト単位で示します。
同じことがTEMP表領域にも当てはまります。
select TABLESPACE_NAME, sum(decode(AUTOEXTENSIBLE, 'YES', MAXBYTES, BYTES)) MAX_SIZE
from DBA_TEMP_FILES
group by TABLESPACE_NAME;
Maxsizeはdba_data_filesの属性です
dba_data_filesからtablespace_name、maxbytes /1024/1024MAX_SIZEを選択します。
select tablespace_name, round(sum(bytes)/1024/1024, 2) as free_space from dba_free_space group by tablespace_name;