web-dev-qa-db-fra.com

Interroger mon oracle de taille de bloc

Est-il possible que je peux dire la taille du bloc de ma base de données Oracle si je n'ai pas accès à la vue v$parameter?

Merci!

f.

17
filippo

Vous pourriez faire ceci:

select distinct bytes/blocks from user_segments;
18
Tony Andrews

Dans Oracle, la taille de bloc est définie par espace de table. Vous pouvez interroger les user_tablespaces ou dba_tablespaces (si vous y avez accès) et voir la taille de bloc de chaque espace de table; ces vues sont généralement instantanées.

Vous pouvez également joindre l'un de ces 2 à dba_tables, user_tables ou all_tables et multiplier le nombre de blocs par la taille de bloc pour obtenir la taille totale de la table en octets (diviser par 1024 * 1024 pour obtenir la taille en Mo, etc.).

2
andrew

Oui, alors vous avez un problème majeur. L'interrogation des user_segments peut être très lente, en particulier lorsque SAP ou Infor BAAN est utilisé, car il crée des dizaines de milliers de segments et a tendance à fragmenter le dictionnaire de données. Le mieux est de convaincre votre administrateur de base de données de vous accorder l'accès d'une manière ou d'une autre, par exemple via une vue avec v_ $.

Alternative, qui fonctionne mieux: lorsque vous pouvez créer des segments, vous disposez d’un accès aux tablespaces (veuillez noter que le type distinct ne fonctionne pas si vous n’avez pas de segment). Cette liste est généralement plus courte, utilisez par exemple:

sélectionner les octets/blocs de user_ts_quotas

Cela vous laisse toujours un problème d'ingénierie sociale avec le DBA local lorsque l'utilisateur est tellement restreint qu'il n'a pas de quota :-)

1
Guido Leenders

Étant donné que la taille de bloc est différente pour chaque espace de table, vous devez utiliser la requête suivante:

select block_size, tablespace_name from dba_tablespaces;
1
Hybris95