web-dev-qa-db-fra.com

Comment déterminer maxsize de l'espace de table existant

J'ai besoin de déterminer le MAXSIZE qui a été défini pour un espace de table lors de sa création (Oracle 10G)

Je suis sûr que je manque quelque chose d'évident, mais l'information n'est pas immédiatement apparente dans les informations de DBA_TABLESPACES.

11

En 11g, cette requête vous donnerait la réponse, mais je remarque que vous êtes sur 10 g et hélas la colonne utile est manquante .

select tablespace_name, max_size 
from dba_tablespaces
/

En 10g, vous devrez

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

N'oubliez pas que c'est le défaut taille maximale. En pratique, vous serez limité par la taille des datafiles affectés à l'espace de table, ce qui pourrait être beaucoup moins que ce maximum théorique.

Edit

Le commentaire dePaul est pertinent. Je suppose que la bonne réponse serait de dire que la taille maximale d'un espace de table est un concept sans signification, vraiment presque fictif. La taille d'un espace de table est en fait déterminée par ses datafiles et sa taille maximale maximale potentielle est déterminée par le nombre maximal de datafiles pouvant être attribués. La référence SQL a cela à dire sur le sujet:

  • Un espace de table grandfile ne contient qu'un seul datafile ou temp ... pouvant contenir jusqu'à environ 4 milliards de blocs (232) blocs. La taille maximale du système de données ou du temple unique est de 128 térataplytes (TB) pour un espace de table avec des blocs 32K et 32TB pour un espace de table avec des blocs de 8 km.
  • Un espace de table à petit filet est un espace de table Oracle traditionnel, qui peut contenir 1022 datafiles ou des tempfiles, chacun pouvant contenir jusqu'à environ 4 millions de blocs ([2 à la puissance de 22]).

C'est peut-être peut-être une requête plus utile ...

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

... Avec la mise en garde qu'il ne s'applique que sur les fichiers de données actuellement attribués.

Edit 2

Maxsize s'applique au Datafile et non à l'espace de table. C'est pourquoi le mot clé MAXSIZE est discuté dans la section Documentation de la clause FilePecec plutôt que sous Création de tablespace.

11
APC

Tout dépend de la question de savoir si le fichier de données est extensible ou non.

Donc, vous obtenez les bonnes informations de dba_data_files:

  • Si Autoxtensible est réglé sur Oui, vous avez besoin de la somme totale des Maxbytes.

  • Si Autoxtensible est défini sur NON, vous avez besoin de la somme totale des octets.

Max_size dans dba_tablespaces n'a rien à voir avec la taille maximale de l'espace de table lui-même. Selon Documénation Oracle C'est le

"Taille maximale maximale par défaut des segments"

Donc, la bonne requête est la suivante:

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

Cela a été testé sur 11g mais cela devrait également fonctionner sur 10 g. Cela vous donne la taille maximale de chaque espace de table en octets.

La même chose vaut pour les espaces de température:

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

sélectionnez TablePespace_Name, Maxbytes/1024/1024 max_size à partir de dba_data_files;

0
Gerrit
select tablespace_name, round(sum(bytes)/1024/1024, 2) as free_space from dba_free_space group by tablespace_name;
0
k.honsali

Maxsize est un attribut de dba_data_files

0