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
.
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:
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.
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;
sélectionnez TablePespace_Name, Maxbytes/1024/1024 max_size à partir de dba_data_files;
select tablespace_name, round(sum(bytes)/1024/1024, 2) as free_space from dba_free_space group by tablespace_name;
Maxsize est un attribut de dba_data_files