2011-02-01 21 views
14

¿Hay alguna manera de saber el tamaño del bloque de mi base de datos Oracle si no tengo acceso a la vista v$parameter?Consultar mi tamaño de bloque oráculo

Gracias!

f.

+0

Nota: Oracle es compatible con diferente tamaño de bloque para cada tablespaspace. Entonces, el parámetro valuse in v $ es solo un "default". – ibre5041

Respuesta

16

Usted puede hacer esto:

select distinct bytes/blocks from user_segments; 
+0

que lo hizo. Gracias. – filippo

+1

Esta consulta es muy cara, mejor consideremos algo así como seleccionar valor de v $ parameter donde name = 'db_block_size' –

+0

@GuidoLeenders: "¡si no tengo acceso a la vista del parámetro v $"! –

1

Sí, entonces usted tiene un problema importante. Consultar los segmentos del usuario puede ser realmente lento, especialmente cuando se ejecuta SAP o Infor BAAN que crean diez mil segmentos y tienden a fragmentar el diccionario de datos. Lo mejor es convencer a su DBA de que le otorgue acceso de alguna manera, tal vez a través de una vista con v_ $.

Alternativa, que funciona mejor: cuando puede crear segmentos, tiene acceso al espacio de tabla (tenga en cuenta que lo distinto no funciona cuando no tiene ningún segmento). Esta lista es generalmente más corto, por lo que, por ejemplo, el uso:

bytes seleccione/cuadras de user_ts_quotas

Eso todavía le deja con un problema de ingeniería social con el DBA local cuando el usuario está tan restringida que no tiene una Cuota :-)

+0

¿De verdad? Quería saber el tamaño del bloque y no tenía acceso a la vista del parámetro v $. Incluso si la consulta en contra de user_segments tomó 5 minutos, aún tenía una respuesta en 5 minutos. A menos que haya una necesidad peculiar de verificar el tamaño del bloque de la base de datos varias veces al día, parece OTT pedirle al DBA un privilegio para averiguar más rápidamente. –

2

En Oracle, el tamaño del bloque se establece por espacio de tabla. Puede consultar user_tablespaces o dba_tablespaces (si tiene acceso) y ver el tamaño del bloque para cada tablespace; estas vistas usualmente se ejecutan instantáneamente.

También puede unir cualquiera de esos 2 a dba_tables, user_tables o all_tables y multiplicar el número de bloques por el tamaño de bloque para obtener el tamaño total de la tabla en bytes (dividir por 1024 * 1024 para obtener tamaño en MB , etc.)

1

Dado que el tamaño del bloque es diferente para cada espacio de tabla es mejor utilizar la siguiente consulta:

select block_size, tablespace_name from dba_tablespaces; 
Cuestiones relacionadas