作成時にテーブルスペースに設定された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
/
これはdefault最大サイズであることを覚えておいてください。実際には、テーブルスペースに割り当てられたデータファイルのサイズによって制限されます。これは、この理論上の最大値よりはるかに小さい場合があります。
edit
@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は、テーブルスペース自体の最大サイズとは関係ありません。 Oracle documenation によると、
「セグメントのデフォルトの最大サイズ」
したがって、正しいクエリは次のとおりです。
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;
dba_data_filesからtablespace_name、maxbytes/1024/1024 MAX_SIZEを選択します。
select tablespace_name, round(sum(bytes)/1024/1024, 2) as free_space from dba_free_space group by tablespace_name;
Maxsizeは、dba_data_filesの属性です。