Oracle - Tamaño de la Tabla

 
Vista:

Tamaño de la Tabla

Publicado por David (1 intervención) el 29/11/2004 16:54:37
Hola amigos, mi consulta es la sgte: tengo un proceso que llena una tabla, este proceso cada que se ejecuta elimina primero lo que encuentra y luego inserta la nueva informacion, lo que quisiera saber es como puedo obtener el tamaño en bytes de lo que ocupa esta tabla con la nueva informacion, existe alguna funcion o algun procedimiento del sistema, les agradeceria me puedan ayudar..
PD: trabajo con Oracle 8.i
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Tamaño de la Tabla

Publicado por Jorge-DBA (123 intervenciones) el 29/11/2004 17:47:04
David:

Por la lógica como comentas como es el proceso de inserción y borrado de la tabla, ¿A caso no te serviría una TABLA TEMPORAL?, los beneficios que tiene es que no tienes que dimensionarla y los datos no los tienes que remover la proxima vez que tu "PROCESO" vuelva a cargar la información.

Tienes multiples beneficios en este tipo de configuración de tabla, entre ellos:
NO generas REDOLOGS.
No existe contienda en los Roll Back Segments.
La información es independiente para cada usuario.
La información se almacena por única vez y se elimina de 2 posibles maneras excluyentes:
1)Durante cada commit ó
2)Durante el inicio hasta el cierre de la session

Si aún asi necesitas dimensionar la transaccioón solo vuelve a enviar otro mensaje y te diré como hacerlo, solo que necesitas comprender complentamente bien el STORAGE de oracle como es que es administrado.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Tamaño de la Tabla

Publicado por David (1 intervención) el 29/11/2004 20:15:32
gracias Jorge por tu apoyo.. bueno creo que no explique bien lo que hace el proceso completo, lo que se desea es que el proceso cree una tabla que contenga la informacion trimestral y asi ir separando la informacion por trimestre, ya que esta informacion va a ser solo de lectura, es decir, no se va a actualizar ni modificar, por eso es que deseo saber como obtener el tamaño de estas tablas las cuales oscilan entre 30,000 y 35,000 registros y asi poder estimar el espacio que necesite en disco porque el nro de trimestres si lo conozco.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Tamaño de la Tabla

Publicado por Jorge-DBA (123 intervenciones) el 29/11/2004 21:12:29
Primer mensaje (Este Caso ya lo habia puesto anterioemente con otra persona,espero te sirva)

Que tal David:

El cálculo de dimensionamiento de los segmentos de la base de datos es una tarea que tiene responsabilidad el DBA, en mi caso he dimencionado tablas, índices, Vistas Materializadas, etc. cualquier tipo de objeto que tenga que ver con el storage de la base, duarante casi 5 años, es una tarea muy compleja y que lleva bastante comprención sobre el comportamiento del crecimiento semanal, mensual o anual de la base de datos, he dimencionado Bases de datos pequeñas y las llamadas VLDB (Very large Data Base), que generalmente son data Ware Houses aproximadamente de 40 Tera Bytes de crecimiento anual, dependiendo de su dimencionamiento es como se verá afectado a futuro la fragmentación, una tabla o índice mal calculado puede provocar serios problemas en el entorno, en las nuevas versiones se ha trabajado mucho para simplificar la tarea de mantenimiento.

Tienes que tomar en cuenta el Bloque del sistema operativo y el bloque de datos de Oracle que se configuró en su creación que debe ser múltiplo del S.O., o bien a partir de Oracle 9.X puedes tener diferentes mediadas de bloques de datos en los Tablespaces, ademas que los puedes gestionar localmente haciendo cuadrículasd de información.

En el siguiente ejemplo te muestro como es que se dimencionan los objetos, es casi preciso y tiene una variación ya que son estimaciones dependiendo la tendencia de la tabla, ya que puedes dividirla en tablas históricas, de catálogo, temporales o de agregación, dependiendo de estas tendencias, la configuración es diferente por su dinamísmo que cumplen en la BD.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Tamaño de la Tabla

Publicado por Jorge-DBA (123 intervenciones) el 29/11/2004 21:13:01
Segundo mensaje:

Calculo sobre un segmento de tipo tabla no agrupada.

Calcula la cantidad de espacio que se va a utilizar en la cabecera del bloque, el tamaño de la cabecera es de 90 bytes, si utilizas un bloque de 2K quedarán 1.958 libres minetras que si utilizas uno de 4K habría 4.006 bytes libres

2048 - 90 = 1958 bytes disponibles.

A continuación multiplica el espacio libre por el factor que viene determinado el enl parámetro PCTFREE del segmento para determinar el espacio que se va a reservar para la actualización de filas.

Si utilizas un valor de PCTFREE de 10, multiplica el espacio libre disponible por 0,10 tal y como se muestra a continuación:

1958*(pctfree/100) = 1958*.01 = 196 (redondeado)

del espacio disponible, 196 bytes son para las aplicaciones de las filas. El espacio libre disponible es el espacio libre del bloque menos el espacio rerservado por PCTFREE:

1958 - 196 = 1762 BYTES DISPONIBLES.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Tamaño de la Tabla

Publicado por Jorge-DBA (123 intervenciones) el 29/11/2004 21:13:26
Tercer Mensaje:

De los 2.048 bytes del bloque, 1762 se utilizan para almacenar filas.

En el siguinete paso habrá que calcular el espacio que se va a utilizar por fila. para ello hayq ue estimar primero la "longitud media de las filas" AVERAGE LENGTH de cada valor de una fila. si no dispones de ningun dato, realiza una estimación de la longitud real de los valores de una columna. No utilices como longitud real la longitud de una columna a menos que los datos vayan a llenar siempre por completo la columna.

Por ejemplo vamos a suponer que tenemos una tabla de tres columnas de tipo VARCHAR2(10). La longitud media de las filas no puede excder de 30 posiciones su longitud real depende de los daros que se vayan a almacenar en ellas.

Si dispones de algún dato de ejemplo, podrías utilizar la función de Oracle VSIZE para determinar el espacio real que han utilizado los datos. ejemplo:

select AVG(NVL(VSIZE(Columna1),0))+
AVG(NVL(VSIZE(Columna2),0))+
AVG(NVL(VSIZE(Columna3),0))) Long_media
from tabla
/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Tamaño de la Tabla

Publicado por Jorge-DBA (123 intervenciones) el 29/11/2004 21:13:54
Cuarto mensaje:

En este ejemplo se han calculado la longitud media de cada columna y luego se han sumado esas medias para determinar la longitud media o el Average Lenght.

Vamos a suponer que en el ejemplo la longitud media de las filas es de 24 bytes. A esta cantidad total vamos a sumarle 1 byte por cada columna que ya haya en la tabla, da un total de 27 bytes por fila. Si en la tabla hay columnas que contienen datos de más de 250 caracteres, añade un byte adicional por cada una de esas columnas, por último añade 3 bytes para la cabecera de la fila.

Espacio utilizado = longitud media + 3 + numero de columnas +numero de columnas extensas.

En la tabla ejemplo el espacio por fila es el siguinete:

espacio utilizado por file= 24 + 3 + 3 + 0 = 30 bytes por fila.

Dado que disponemos de 1.762 bytes y 30 bytes por fila, se puede incluir 58 filas pen cada bloque.

filas por bloque =TRUNC(1762 BYTES LIBRES / 30 BYTES OIR FILA) = 58 FILAS POR BLOQUE.

al poderse incluir 58 filas por bloque, en cuanto puedas estimar el número de filas que esperas que haya, podrás estimar eñ númro de bloques de datos de Oracle que se requieren.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Tamaño de la Tabla

Publicado por Jorge-DBA (123 intervenciones) el 29/11/2004 21:14:20
Quinto y ultimo mensaje:

Si tienes instalada la herramienta de Oracle Enterprise Manager puedes indicarle al producto que en base a una tabla ya creada puedes dimensionarla en la opción de "STORAGE" o "ALMACENAMIENTO" das un click en esa opcion y te va a dar 2 opciones
1)Cálculo Explícito
2)Cálculo Automático.

En explícito tienes que poner ma dedia en storage que se requiera con el cálculo que te di anteirormente,
y en el Cálculo Automático, solo tienes que poner la carga inicial de los registros por medio de radio de incremento, esta muy buena esta opcion por que solo pones el número de registros que se estima va almacenar en diferentes intervalos en el tiempo:

Diario, mensual, o anual.

Chécalo esta muy bien, la desventaja es que tienes que hacerlo tabla por tabla.

Saludos David y buen día.

Jorge - DBA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar