2010-03-02 12 views

cevap

10

bir niteliktir, ama 10g üzerinde ve the useful column is missing ne yazık konum dikkat edin.

select tablespace_name 
     , initial_extent + (next_extent * (max_extents-1)) as calc_max_size 
from dba_tablespaces 
/

bu varsayılan maksimum boyut olduğunu unutmayın 10g olarak

select tablespace_name, max_size 
from dba_tablespaces 
/

sahip olacaktır. Pratikte, masaüstüne atanan veri dosyalarının boyutuyla sınırlı olacaksınız, bu teorik maksimumdan çok daha az olabilir.

düzenlemek

@ Paul adlı kullanıcının yorumunu yerindedir. Doğru cevabın, bir tablo alanının maksimum büyüklüğünün anlamsız, neredeyse neredeyse kurgusal bir kavram olduğunu söylemek olduğunu varsayalım. Bir tablo alanının büyüklüğü gerçekte veri dosyaları tarafından belirlenir ve potansiyel maksimum maksimum boyutu, atanabilecek maksimum veri dosyası sayısı ile belirlenir.

  • bir bigfile tablo yaklaşık 4 milyar (232) bloklara sınırlı olmak üzere yalnızca bir veri dosyası veya tempfile içerir: SQL Reference Bu konu hakkında söylemek zorundadır. Tek veri dosyasının veya geçici dosya boyutunun maksimum boyutu, 32K bloklu bir tablo alanı ve 8K bloklu bir tablo alanı için 32TB için 128 terabayttır (TB).
  • Küçük bir dosya alanı, her biri yaklaşık 4 milyona ([2] gücünün 22]) kadar bloğu içerebilen 1022 veri dosyası veya geçici dosya içerebilen geleneksel bir Oracle tablo alanıdır.

Yani belki de bu sadece şu anda atanmış veri dosyalarının geçerli olduğunu ihtar ile ... ...

select tablespace_name 
     , count(*) as no_of_data_files 
     , sum(maxblocks) as max_size 
from dba_data_files 
group by tablespace_name 
/

daha yararlı bir sorgu olduğunu.

düzenlemek 2

MAXSIZE veri dosyası değil tablo için geçerlidir. MAXSIZE anahtar sözcüğü, CREATE TABLESPACE değerinin altında değil, documentation for the filespec clause'da ele alınışının nedeni budur.

+0

Benim için çalışmıyor gibi gözüküyor. İlk şey next_extent null oldu, bu yüzden sadece initial_extent * max_extents yaptı, ama max_extents her zaman MAXINT (2147483645) gibi görünüyor (ve tablo alanları, sınırsız MAXSIZE ile oluşturulmamış) –

+0

Geçerli alana tahsis edilmesini istemiyorum. Oluşturulduğunda MAXSIZE ile belirtilen boyuta ihtiyacım var. Bunu anlamsız görmüyorum - muhtemelen Oracle MAXSIZE'un ötesinde bir tablo alanını genişletmeyi reddedecektir. –

+1

@Paul - Oracle, o anda atanmış olan veri dosyalarının sınırlarının ötesindeki bir tablo alanını genişletmeyi reddedecektir (çünkü otomatik uzantı kapalı veya dosya sistemi dolu veya veri dosyası için belirtilen MAXSIZE değerine bastınız). – APC

0

MAXSIZE size cevap verecek bu sorguyu 11g yılında dba_data_files

+0

O bildiğim kadarıyla (a maxbytes yoktur) söyleyebilirim, Oracle 10g dba_data_files bir özelliği değildir, ve o maksimum boyutu olmayacak:

aynı şey TEMP tablo alanları için de geçerli veri dosyasının değil, tablo alanı değil mi? –

+0

@Paul - gözden geçirilmiş yanıtımı gör. Temel olarak Robert haklı: tablsepace boyutu, veri dosyası boyutunun bir ürünüdür. – APC

+0

Üzgünüz açık değildi. Öznitelik maxbytes olarak adlandırılır. Oracle'ın ER diyagramına baktığınızda: bir tablo alanı bir veya daha fazla veri dosyasından oluşur, bir datafile bir öznitelik maxbytesine sahiptir. Dolayısıyla, bir tablo alanının maksimum boyutu, o tablo alanındaki veri dosyalarının maksimum toplamıdır. –

0

tablespace_name seçin, maxbytes/1024/1024 dba_data_files adresinden MAX_SIZE;

0
select tablespace_name, round(sum(bytes)/1024/1024, 2) as free_space from dba_free_space group by tablespace_name; 
4

Bu, veri dosyasının otomatik olarak genişletilip genişletilemeyeceğine bağlıdır.

Yani DBA_DATA_FILES doğru bilgi almak: EVET o zaman MAXBYTES toplamını ihtiyacımız

  • AUTOEXTENSIBLE ayarlanırsa.

  • Eğer AUTOEXTENSIBLE değeri NO olarak ayarlanmışsa, toplam BYTES toplamına ihtiyacınız vardır.

DBA_TABLESPACES içinde MAX_SIZE, tablo alanının kendisinin maksimum boyutu ile ilgisi yoktur. Oracle documenation göre bu yüzden doğru sorgu

"segmentlerin Varsayılan maksimum boyutu" dir:

select TABLESPACE_NAME, sum(decode(AUTOEXTENSIBLE, 'YES', MAXBYTES, BYTES)) MAX_SIZE 
from DBA_DATA_FILES 
group by TABLESPACE_NAME; 

Bu 11g üzerinde test edilmiş ama aynı zamanda çalışması gerekir 10g. Her bir alanın maksimum boyutunu bayt cinsinden verir.

select TABLESPACE_NAME, sum(decode(AUTOEXTENSIBLE, 'YES', MAXBYTES, BYTES)) MAX_SIZE 
from DBA_TEMP_FILES 
group by TABLESPACE_NAME; 
İlgili konular