Anónimo
Dudas iniciales ORACLE
Hola! Es la primera vez que escribo y soy un novatillo en esto de las bases de datos. Resulta que estoy haciendo una practica en la universidad y tengo algunas dudas. Espero que puedas resolvermelas. Hay van:
1- Mostrar el tamaño del bloque de la base de datos, el nombre de la base de datos, y el nombre de la instancia a la que se está conectado.
2 - Mostrar con un SELECT los ficheros de datos y los tablespaces a los que están asociados, los ficheros de control, y los ficheros de redo log de la base de datos (tipo de fichero -DATAFILE, CONTROLFILE, o REDOLOGFILE-, nombre del fichero, estado, y nombre del tablespace si es un fichero de datos).
3 - Mostrar con un SELECT la última sentencia SQL cargada en la sharedpool(fecha y hora en que se cargó, texto de la sentencia, cuántas veces se ha ejecutado, y cuántos usuarios la han ejecutado).
4 - Mostrar con un SELECT los tablespaces de rollback que están
Definidos en la base de datos (nombre del tablespace y tipo de contenido).
5 - Mostrar con un SELECT información sobre los segmentos de rollback(si es público o privado, nombre del segmento, nombre del tablespace al que pertenece, y estado).
Son muchas cosas, lo se pero al ser la primera practica supongo que serán cosas facilillas y para un experto como tu no son nada je je
Espero que puedas ayudarme gracias y saludos!
1- Mostrar el tamaño del bloque de la base de datos, el nombre de la base de datos, y el nombre de la instancia a la que se está conectado.
2 - Mostrar con un SELECT los ficheros de datos y los tablespaces a los que están asociados, los ficheros de control, y los ficheros de redo log de la base de datos (tipo de fichero -DATAFILE, CONTROLFILE, o REDOLOGFILE-, nombre del fichero, estado, y nombre del tablespace si es un fichero de datos).
3 - Mostrar con un SELECT la última sentencia SQL cargada en la sharedpool(fecha y hora en que se cargó, texto de la sentencia, cuántas veces se ha ejecutado, y cuántos usuarios la han ejecutado).
4 - Mostrar con un SELECT los tablespaces de rollback que están
Definidos en la base de datos (nombre del tablespace y tipo de contenido).
5 - Mostrar con un SELECT información sobre los segmentos de rollback(si es público o privado, nombre del segmento, nombre del tablespace al que pertenece, y estado).
Son muchas cosas, lo se pero al ser la primera practica supongo que serán cosas facilillas y para un experto como tu no son nada je je
Espero que puedas ayudarme gracias y saludos!
1 Respuesta
Respuesta de neosys
1
1
neosys, Desde versiones 6 de experiencia en entornos ORACLE (1990)
Lo siento. Pero me da la impresión de que me estás pasando los 'deberes' que te mandan en clase para que te haga el trabajo.
Te podría contestar ... pero de esta forma no aprenderías nada!
Todo lo que te piden es TRIVIAL, haz un poco de esfuerzo y ya veras como no tienes ningún problema.
Lo hago en beneficio tuyo.
De todas formas, si aún así ... deseas obtener la información que me pides y no quieres estudiar ... hay en Internet miles de sitios donde te dan el 'script' para obtener toda esa información.
Lo siento y espero que me entiendas ... Trabaja un poco y será beneficioso para ti.
Sorry
Te podría contestar ... pero de esta forma no aprenderías nada!
Todo lo que te piden es TRIVIAL, haz un poco de esfuerzo y ya veras como no tienes ningún problema.
Lo hago en beneficio tuyo.
De todas formas, si aún así ... deseas obtener la información que me pides y no quieres estudiar ... hay en Internet miles de sitios donde te dan el 'script' para obtener toda esa información.
Lo siento y espero que me entiendas ... Trabaja un poco y será beneficioso para ti.
Sorry
La verda esk puede k lleves razon, pero en momentos de desesperacion uno acude donde puede. No me enroyo mas, e seguido tu consejo y me e puesto a investigar. Ya se como saber el nombre de la base de datos copn el comando DEFINE y el tamaño de los bloques de la base de datos con SHOW PARAMETERS DB_BLOCK_SIZE. Lo que no encuentro por ningun sitio es como saber el nombre de la instancia a la que se está conectado. Aver si con eso me exas una mano.
Seguire investigando y si tengo mas dudas pues te las preguntare. De todas formas no estaria mal saber donde puedo conseguir esos SCRIPT de los que ablas, porque si me veo apurao me vendrian de lujo.
Saludos!
Seguire investigando y si tengo mas dudas pues te las preguntare. De todas formas no estaria mal saber donde puedo conseguir esos SCRIPT de los que ablas, porque si me veo apurao me vendrian de lujo.
Saludos!
Hola de nuevo! Esta noche pasada estuve dándole duro a Oracle je je y creo que he hecho progresos. En mi ultima aclaración te pregunte como podía saber el nombre de la instancia a la que se está conectado. Te pongo aquí como lo hice yo para que me digas si el comando que utilice es correcto o no.
SQL> select * from V$INSTANCE;
En otro ejercicio me pide mostrando con un SELECT:
Los ficheros de datos y los tablespaces a los que están asociados.
Los ficheros de control.
Los ficheros de redo log de la base de datos: (tipo de fichero -DATAFILE, CONTROLFILE, o REDOLOGFILE-, nombre del fichero, estado, y nombre del tablespace si es un fichero de datos).
Y yo he puesto esto.
Ficheros de datos --------- select * from V$DATAFILE;
Tablespaces --------------- select * from DBA_TABLESPACES;
Ficheros de control ------- select * from V$CONTROLFILE;
Ficheros de Redo Log ------ select * from V$LOGFILE;
Mi duda es cuando hago un select, debo poner SELECT * o tengo que poner otra cosa.
Saludos! Y gracias de nuevo.
SQL> select * from V$INSTANCE;
En otro ejercicio me pide mostrando con un SELECT:
Los ficheros de datos y los tablespaces a los que están asociados.
Los ficheros de control.
Los ficheros de redo log de la base de datos: (tipo de fichero -DATAFILE, CONTROLFILE, o REDOLOGFILE-, nombre del fichero, estado, y nombre del tablespace si es un fichero de datos).
Y yo he puesto esto.
Ficheros de datos --------- select * from V$DATAFILE;
Tablespaces --------------- select * from DBA_TABLESPACES;
Ficheros de control ------- select * from V$CONTROLFILE;
Ficheros de Redo Log ------ select * from V$LOGFILE;
Mi duda es cuando hago un select, debo poner SELECT * o tengo que poner otra cosa.
Saludos! Y gracias de nuevo.
Vaya! Muy Bien! De verdad ... En ningún momento esperaba esta respuesta tan positiva a mis comentarios. T elo has 'currado' bastante. Y lo mejor, esa es la 'satisfacción que se lleva uno cuando consigue esos resultados.
Me alegra tu respuesta! Me he encontrado ya con algunos casos. Les he recomendado que por su bien investiguen y ME HAN ACABADO CONTESTANDO MAL!
Me puedes hacer la pregunta que desees, yo te contestaré. Pero de esta forma, ¿no te has dado cuenta de lo bueno que es para ti? No sólo aprobaras, sino que aprenderás. Y eso es lo mejor de todo.
Bueno ... paro de 'discursos' que parezcoun cura! :-)
(De todas formas, por la pregunta final que haces ... te he 'pillado'! Jajaja, vaya copiada que te has metido ... en fin).
A ver, las consultas que realizas, las está haciendo sobre 'vistas' del diccionario de Oracle. Donde se guarda toda la informaciñon sobre la configuración de la instancia.
De hecho el 'show parameters' es lo mismo que hacer un 'Select * from V$PARAMETER'.
(Él auntomáticamente lo interpreta así y hace la consulta internamente y te devuelve los datos de la consulta que te he indicado).
A ver, me has dicho que eras, novatillo. Y yo hablándote de 'vistas'! Las vistas 'view, s' so nobjetos de la BB. DD. De Oracle en los que defines un tipo de consulta (sobre tablas o sobre otras vistas ... etc) y la tratas como objetos a consultar sin necesidad de escribir las relaciones ... o uniones entre tablas. Por ejemplo, quieres trabajar siempre con un conjunto de datos que te dé información de algunis datos de las "lineas de facturas" y "datos del número y fecha de factura" ... crearías una vista 'view' de la siguiente forma :
CREATE OR REPLACE my_vista as
select fac_num_fac num_factura, fac_data_fact, lin_num_lin linea, lin_artículo, lin_cantidad, lin_importe
from facturas, lienas_facturas
where fac_num_fac = lin_num_fact;
Se podrian poner más datos, o más restricciones, o agrupaciones ... etc.
Luego, en tu aplicación cuando quieras saber información de las lineas de facturas puedes hacer por ejemplo :
Select * from my_vista
where num_factura = 1
De alguna forma no tienes que saber las relaciones internas entre facturas y lineas. En cuerta forma encapsulas el contenido y no tienes que repetir siempre el mismo código.
Aunque sirve para más cosas! Ya lo iras viendo.
Respecto a el pequeño 'toque' que te he hecho sobre tu pregunta, ahora entenderás porque lo he hecho (y porque me he dado cuenta de que has cogido todo de Internet).
Cuando haces : "Select * from ..." lo que haces es que te enseñe todas las columnas de la tabla. Así no tienes que escribir columna a columna. Aunque lo más normal es que hagas :
SQL > desc Nombre_tabla o Vista y te enseña las columnas que quieres ver.
Después sólo pones en la sentencia de consulta : "Select columna_1, columna_8, ..."
Las que te interesan. ¿OK? :-)
Te voy a dar un ainformación añadida respecto a como indagar en Oracle ... Espero que la entiendas y hagas uso de ella, ya que te servirá de mucha información :
Oracle guarda todo lo relativo a la configuración de la INSTANCIA (~BB. DD.) En unas vistas del diccionario (realizan vistas para que no te tengas que acoradar del modelo interno Entidad-Relación de estas y de nombre de tablas com obj$ y otros más complicados.
Tan solo haz lo siguiente ... Cuando quieras saber indormación de Oracle (diccionario) realiza la siguiente consulta :
Select View_name from dba_views
Where owner in ('sys', 'system')
Te saldrá una relación de todas las vistas del diccionario y 'por el nombre' te indicarán más o menos que información tienen. (De hecho las que me has indicado Saldrán, ya lo veras ...).
En teoría, el diccionario también guarda 'comentarios explicativos' de todos los objetos pero siempre hay excepciones (y no sólo de la gente que desarrolla aplicaciones!, incluso en el mismo diccionario de Oracle suele pasar -grave error-, pero ...).
Si haces :
Select a.owner, a.view_name, b.comments
from dba_views a, dba_tab_comments b
Where a.owner = b.owner
and a.view_name = b.table_name
Te saldrá la relación de vistas del diccionario con sus comentarios explicativos y contarás con muchísima información. Una vez identificadas y haciendo consulta sobre ellas.
NOTA : Sorry, te lo digo de memoria, 'puede que en lugar de poner 'dba_tab_comments', debas de utilizar 'dba_view_comments' ... Pero creo que no me equivoco. Es que aqui no tengo instalado el Oracle. Sino te lo confirmaria. Si es asi, que creo recordad que no, entonces cambia tambien el 'a.view_name = b.view_name'. NO OBSTANTE ES CORRECTA LA SENTENCIA. Vamos lo 'juraría' ... de todas formas, te lo dejo como ejercicio ;-) Ok?
Y nada ... sigue así. Creo que evaldrá la pena. Ya me lo dirás con el tiempo!
Piensa que si eres informático. ORACLE es por hoy el mejor Gestor de BB. DD. Del mercado (aunque el 'MAgic Quadrant de Gatner coloque por encima a "Teradata"). Aprende y tendrás salida laboral segura!
En fin, espero haberte ayudado.
Pero no tiendas a pedir por pedir -cúrratelo un poco- y a sólo buscar en Internet, Copiar y Pegar. Eso ha llevado a mucha gente al fracaso. Indaga porque te dan esa solución y si es veraz.
Ánimo y escríbeme cuando quieras o tengas una duda.
Me alegra tu respuesta! Me he encontrado ya con algunos casos. Les he recomendado que por su bien investiguen y ME HAN ACABADO CONTESTANDO MAL!
Me puedes hacer la pregunta que desees, yo te contestaré. Pero de esta forma, ¿no te has dado cuenta de lo bueno que es para ti? No sólo aprobaras, sino que aprenderás. Y eso es lo mejor de todo.
Bueno ... paro de 'discursos' que parezcoun cura! :-)
(De todas formas, por la pregunta final que haces ... te he 'pillado'! Jajaja, vaya copiada que te has metido ... en fin).
A ver, las consultas que realizas, las está haciendo sobre 'vistas' del diccionario de Oracle. Donde se guarda toda la informaciñon sobre la configuración de la instancia.
De hecho el 'show parameters' es lo mismo que hacer un 'Select * from V$PARAMETER'.
(Él auntomáticamente lo interpreta así y hace la consulta internamente y te devuelve los datos de la consulta que te he indicado).
A ver, me has dicho que eras, novatillo. Y yo hablándote de 'vistas'! Las vistas 'view, s' so nobjetos de la BB. DD. De Oracle en los que defines un tipo de consulta (sobre tablas o sobre otras vistas ... etc) y la tratas como objetos a consultar sin necesidad de escribir las relaciones ... o uniones entre tablas. Por ejemplo, quieres trabajar siempre con un conjunto de datos que te dé información de algunis datos de las "lineas de facturas" y "datos del número y fecha de factura" ... crearías una vista 'view' de la siguiente forma :
CREATE OR REPLACE my_vista as
select fac_num_fac num_factura, fac_data_fact, lin_num_lin linea, lin_artículo, lin_cantidad, lin_importe
from facturas, lienas_facturas
where fac_num_fac = lin_num_fact;
Se podrian poner más datos, o más restricciones, o agrupaciones ... etc.
Luego, en tu aplicación cuando quieras saber información de las lineas de facturas puedes hacer por ejemplo :
Select * from my_vista
where num_factura = 1
De alguna forma no tienes que saber las relaciones internas entre facturas y lineas. En cuerta forma encapsulas el contenido y no tienes que repetir siempre el mismo código.
Aunque sirve para más cosas! Ya lo iras viendo.
Respecto a el pequeño 'toque' que te he hecho sobre tu pregunta, ahora entenderás porque lo he hecho (y porque me he dado cuenta de que has cogido todo de Internet).
Cuando haces : "Select * from ..." lo que haces es que te enseñe todas las columnas de la tabla. Así no tienes que escribir columna a columna. Aunque lo más normal es que hagas :
SQL > desc Nombre_tabla o Vista y te enseña las columnas que quieres ver.
Después sólo pones en la sentencia de consulta : "Select columna_1, columna_8, ..."
Las que te interesan. ¿OK? :-)
Te voy a dar un ainformación añadida respecto a como indagar en Oracle ... Espero que la entiendas y hagas uso de ella, ya que te servirá de mucha información :
Oracle guarda todo lo relativo a la configuración de la INSTANCIA (~BB. DD.) En unas vistas del diccionario (realizan vistas para que no te tengas que acoradar del modelo interno Entidad-Relación de estas y de nombre de tablas com obj$ y otros más complicados.
Tan solo haz lo siguiente ... Cuando quieras saber indormación de Oracle (diccionario) realiza la siguiente consulta :
Select View_name from dba_views
Where owner in ('sys', 'system')
Te saldrá una relación de todas las vistas del diccionario y 'por el nombre' te indicarán más o menos que información tienen. (De hecho las que me has indicado Saldrán, ya lo veras ...).
En teoría, el diccionario también guarda 'comentarios explicativos' de todos los objetos pero siempre hay excepciones (y no sólo de la gente que desarrolla aplicaciones!, incluso en el mismo diccionario de Oracle suele pasar -grave error-, pero ...).
Si haces :
Select a.owner, a.view_name, b.comments
from dba_views a, dba_tab_comments b
Where a.owner = b.owner
and a.view_name = b.table_name
Te saldrá la relación de vistas del diccionario con sus comentarios explicativos y contarás con muchísima información. Una vez identificadas y haciendo consulta sobre ellas.
NOTA : Sorry, te lo digo de memoria, 'puede que en lugar de poner 'dba_tab_comments', debas de utilizar 'dba_view_comments' ... Pero creo que no me equivoco. Es que aqui no tengo instalado el Oracle. Sino te lo confirmaria. Si es asi, que creo recordad que no, entonces cambia tambien el 'a.view_name = b.view_name'. NO OBSTANTE ES CORRECTA LA SENTENCIA. Vamos lo 'juraría' ... de todas formas, te lo dejo como ejercicio ;-) Ok?
Y nada ... sigue así. Creo que evaldrá la pena. Ya me lo dirás con el tiempo!
Piensa que si eres informático. ORACLE es por hoy el mejor Gestor de BB. DD. Del mercado (aunque el 'MAgic Quadrant de Gatner coloque por encima a "Teradata"). Aprende y tendrás salida laboral segura!
En fin, espero haberte ayudado.
Pero no tiendas a pedir por pedir -cúrratelo un poco- y a sólo buscar en Internet, Copiar y Pegar. Eso ha llevado a mucha gente al fracaso. Indaga porque te dan esa solución y si es veraz.
Ánimo y escríbeme cuando quieras o tengas una duda.
Muchas gracias por la respuesta. Este finde le dedicare tiempo a indagar un poco más y si tengo alguna duda te la hago saber ;). Ahora te quería consultar una cosilla. En principio supongo que alguna pregunta más te haré xD y lo que quisiera saber es cuando puedo puntuar tus respuestas. ¿Solo puedo puntuarte cuando finalize la consulta? Es que me da "palo" estar preguntadote cosas y no poder puntuarte. Ya me dices algo Ramón.
Saludos!
Juan
Saludos!
Juan
Juan,
Lo dejo a tu criterio. Aquí tampoco me pagan ni me dan ningún regalo por responder.
Puedes puntuar, si quieres cerrando. Y cuando tengas nuevas dudas me haces referencia a ti.
Pero como lo desees.
Lo dejo a tu criterio. Aquí tampoco me pagan ni me dan ningún regalo por responder.
Puedes puntuar, si quieres cerrando. Y cuando tengas nuevas dudas me haces referencia a ti.
Pero como lo desees.
Hola Ramón! Este finde como te dije iba a seguir con la practica y tengo algunas dudas. Antes de nada quiero que sepas que el desc Nombre_tabla o Vista me ha sido de gran ayuda para saber todos los atributos de todas las tablas y así saber lo que tengo que poner. Pero nos surge otra pequeña duda. Nos dice el enunciado que mostremos con un SELECT el espacio libre del tablespace creado (nombre del tablespace, espacio libre). Vale. He estado mirando en libros e Internet y he encontrado esta sentencia.
SELECT tablespace_name,
ROUND(sum(bytes)/1024/1024,0)
FROM dba_free_space
WHERE tablespace_name = '(xxxxxx)_INDICES'
GROUP BY tablespace_name;
El nombre de mi tablespace es (xxxxxx)_INDICES como pone ahí, pero mi duda es que no se que atributo es espacio libre, porque cuando hago desc dba_free_space; me aparecen los atributos TABLESPACE_NAME, FILE_ID, BLOCK_ID, BYTES, BLOCKS y RELATIVE_FNO. ¿De esos atributos cual es espacio libre para ponerlo en el SELECT junto a tablespace_name? En la sentencia que te puse arriba no termino de entender muy bien lo que quiere decir la linea ROUND(sum(bytes)/1024/1024,0) pero imagino que sera para establecer el tamaño de la base de datos o algo así. Mi tablespace lo cree de 512KB, pero ahí pone bytes y no se como ponerlo en KB. ¿Dónde pone 1024 debo poner 512 que es el tamaño de mi tablespace? No te pienses que te lo pregunto sin haberme mirado nada pero es que llevo todo el findesemana liado con el espacio libre del dichoso
tablespace y estoy desesperado je je.
Y una ultima cosilla y dejo de darte el follón ya. En un ejercicio necesito mostrar con un SELECT el tablespace creado con algunos atributos. Dos de esos atributos son forma de manejo de las extensiones y forma de manejo del espacio de los segmentos. Cuando hago desc dba_tablespaces; me salen muchos atributos y creo que son EXTENT_MANAGEMENT y SEGMENT_SPACE_MANAGEMENT. ¿Estoy en lo cierto? Eso es todo Ramón.
Gracias de antemano, Juan.
SELECT tablespace_name,
ROUND(sum(bytes)/1024/1024,0)
FROM dba_free_space
WHERE tablespace_name = '(xxxxxx)_INDICES'
GROUP BY tablespace_name;
El nombre de mi tablespace es (xxxxxx)_INDICES como pone ahí, pero mi duda es que no se que atributo es espacio libre, porque cuando hago desc dba_free_space; me aparecen los atributos TABLESPACE_NAME, FILE_ID, BLOCK_ID, BYTES, BLOCKS y RELATIVE_FNO. ¿De esos atributos cual es espacio libre para ponerlo en el SELECT junto a tablespace_name? En la sentencia que te puse arriba no termino de entender muy bien lo que quiere decir la linea ROUND(sum(bytes)/1024/1024,0) pero imagino que sera para establecer el tamaño de la base de datos o algo así. Mi tablespace lo cree de 512KB, pero ahí pone bytes y no se como ponerlo en KB. ¿Dónde pone 1024 debo poner 512 que es el tamaño de mi tablespace? No te pienses que te lo pregunto sin haberme mirado nada pero es que llevo todo el findesemana liado con el espacio libre del dichoso
tablespace y estoy desesperado je je.
Y una ultima cosilla y dejo de darte el follón ya. En un ejercicio necesito mostrar con un SELECT el tablespace creado con algunos atributos. Dos de esos atributos son forma de manejo de las extensiones y forma de manejo del espacio de los segmentos. Cuando hago desc dba_tablespaces; me salen muchos atributos y creo que son EXTENT_MANAGEMENT y SEGMENT_SPACE_MANAGEMENT. ¿Estoy en lo cierto? Eso es todo Ramón.
Gracias de antemano, Juan.
Primera respuesta (Recuerda que en las 'vistas' del diccionario todo se graba en mayúsculas) -lo digo por las búsquedas que hagas- :
TABLESPACE_NAME es el nombre del TABLESPACE
FILE_ID Identificador Interno del 'DATAFILE' que está asociado a ese TABLESPACE (ya que TABLESPACE es algo lógico donde se pueden asignar 'n' ficheros del Sistema Operativo).
BLOCK_ID Identificador de Bloque donde hay espacio libre (BLOQUE ORACLE)
BYTES Tamaño en Bytes libre dentro del bloque y dentro del DATAFILE y dentro del TABLESPACE -definido en Bytes-
BLOCKS Tamaño de la extensión del Bloque ORACLE
RELATIVE_FNO Numero relativo del Fichero que contiene el la extensión (espacio) en referencia al número de ficheros DATAFILES que está asociados al TABLESPACE.
Lo que haces en la consulta es : sumar todos los 'BYTES' libres de todas las lineas (una por 'extent') de ese TABLESPACE. Pero al sumar Bytes, para pasarlos a KB lo divides entre 1024, y para pasar a MB vuelves a dividir entre 1024. Y con el ROUND haces el redondeo -que está puesto a 0- por tanto sin decimales. Esa fórmula ROUND( ...) es el ESPACIO LIBRE EN MB DE TU TABLESPACE.
Segunda pregunta :
Muy bien! Estas en lo cierto! EXTENT_MANAGEMENT es una modalidad de tipo de gestión de Extensiones que Oracle creo que empezó a sacar en la 9i (aunque no sé si en la 8i ya lo tenia, creo que no -no estoy seguro-). Y lo que indica es que si el control de Extensiones -Espacios en el Tablespace- lo gestiona el Diccionario o se realiza en Local.
Oracle en las nuevas versiones casi te obliga a que lo pongas en local. De esa forma no tiene que ser gestionado por el DICCIONARIO y liberas un punto de mantenimiento del DICCIONARIO donde gestionaba TODAS las extensiones de TODOS los TABLESPACES. Concentrándose trabajo y bloqueos en el TABLESPACE DEL SISTEMA (donde guardaba esta información).
El otro parámetro o columna se refieres a la forma de gestionar los segmentos dentro del TABLESPACE. Y lo que indica es que si es 'AUTO' el gestor gestiona internamente las extensiones para que todos esos pedacitos dentro del TABLESPACE no se convierta en un 'queso lleno de agujeros' (Fragmentado). Intenta que sea continuo. También hay la opción de 'MANUAL'. Con lo cual la gestión de distribución de extensiones en el TABLESPACE la tendrías que regularizar para no tener 'huecos' -con export, borrado de tabla, import-.
En las últimas versiones se recomienda los valores de 'LOCAL', para el primero y 'AUTO' para el segundo.
En las últimas versiones ya es incluso obligatorios estos valores!
Espero hacer solventado tus dudas ...
Lo que me parece bastante extraño es que estés indagando en temas de la Arquitectura de Oracle ~ DBA y que eno hayáis empezado con temas fundamentales e iniciales como el SQL!
:-O
En fin ... Venga.
TABLESPACE_NAME es el nombre del TABLESPACE
FILE_ID Identificador Interno del 'DATAFILE' que está asociado a ese TABLESPACE (ya que TABLESPACE es algo lógico donde se pueden asignar 'n' ficheros del Sistema Operativo).
BLOCK_ID Identificador de Bloque donde hay espacio libre (BLOQUE ORACLE)
BYTES Tamaño en Bytes libre dentro del bloque y dentro del DATAFILE y dentro del TABLESPACE -definido en Bytes-
BLOCKS Tamaño de la extensión del Bloque ORACLE
RELATIVE_FNO Numero relativo del Fichero que contiene el la extensión (espacio) en referencia al número de ficheros DATAFILES que está asociados al TABLESPACE.
Lo que haces en la consulta es : sumar todos los 'BYTES' libres de todas las lineas (una por 'extent') de ese TABLESPACE. Pero al sumar Bytes, para pasarlos a KB lo divides entre 1024, y para pasar a MB vuelves a dividir entre 1024. Y con el ROUND haces el redondeo -que está puesto a 0- por tanto sin decimales. Esa fórmula ROUND( ...) es el ESPACIO LIBRE EN MB DE TU TABLESPACE.
Segunda pregunta :
Muy bien! Estas en lo cierto! EXTENT_MANAGEMENT es una modalidad de tipo de gestión de Extensiones que Oracle creo que empezó a sacar en la 9i (aunque no sé si en la 8i ya lo tenia, creo que no -no estoy seguro-). Y lo que indica es que si el control de Extensiones -Espacios en el Tablespace- lo gestiona el Diccionario o se realiza en Local.
Oracle en las nuevas versiones casi te obliga a que lo pongas en local. De esa forma no tiene que ser gestionado por el DICCIONARIO y liberas un punto de mantenimiento del DICCIONARIO donde gestionaba TODAS las extensiones de TODOS los TABLESPACES. Concentrándose trabajo y bloqueos en el TABLESPACE DEL SISTEMA (donde guardaba esta información).
El otro parámetro o columna se refieres a la forma de gestionar los segmentos dentro del TABLESPACE. Y lo que indica es que si es 'AUTO' el gestor gestiona internamente las extensiones para que todos esos pedacitos dentro del TABLESPACE no se convierta en un 'queso lleno de agujeros' (Fragmentado). Intenta que sea continuo. También hay la opción de 'MANUAL'. Con lo cual la gestión de distribución de extensiones en el TABLESPACE la tendrías que regularizar para no tener 'huecos' -con export, borrado de tabla, import-.
En las últimas versiones se recomienda los valores de 'LOCAL', para el primero y 'AUTO' para el segundo.
En las últimas versiones ya es incluso obligatorios estos valores!
Espero hacer solventado tus dudas ...
Lo que me parece bastante extraño es que estés indagando en temas de la Arquitectura de Oracle ~ DBA y que eno hayáis empezado con temas fundamentales e iniciales como el SQL!
:-O
En fin ... Venga.
Muchas gracias Ramón. Entonces, ¿en la segunda pregunta en vez de los atributos EXTENT_MANAGEMENT y SEGMENT_SPACE_MANAGEMENT tengo que poner los atributos LOCAL y AUTO?
Y con respecto a lo de que no haya empezado con temas fundamentales e iniciales de SQl no es del todo cierto. Te dije que era novatillo, pero me refería a la administración y gestión de bases de datos. En realidad las asginaturas de Fundamentos de bases de datos y Diseño de bases de datos las tengo aprobadas, pero mis profesores eran unos paquetes jaja. Buen pues eso es todo Ramón. No te imaginas la ayuda tan importante que me estas prestando, porque aparte de darme las soluciones me explicas algo de las bases de datos y me vienen muy bien.
Saludos y mil gracias,
Juan.
Y con respecto a lo de que no haya empezado con temas fundamentales e iniciales de SQl no es del todo cierto. Te dije que era novatillo, pero me refería a la administración y gestión de bases de datos. En realidad las asginaturas de Fundamentos de bases de datos y Diseño de bases de datos las tengo aprobadas, pero mis profesores eran unos paquetes jaja. Buen pues eso es todo Ramón. No te imaginas la ayuda tan importante que me estas prestando, porque aparte de darme las soluciones me explicas algo de las bases de datos y me vienen muy bien.
Saludos y mil gracias,
Juan.
Juan' que realizan este curso en España (en el caso de que Juan no sea un alias) y que ninguno de tus profesores lea estos foros. Entre otras cosas porque se creerán los 'tuertos en el país de los ciegos' (expertos jajaja).
No sé cuanto te falta en acabar la carrera ... Pero si quieres trabajar de 'becario' cursando los últimos cursos de la carrera y eres de BCN. Coméntamelo e igual te puedo echar un cable.
Respecto a lo que me has dicho, no me has leído la última parte bien ...
En ella digo que aciertas pletamente en las columnas consultadas, pero que en las versiones últimas de Oracle estas toman el valor de : 'LOCAL' y 'AUTO' respectivamente.
Haz la consulta con las columnas que has indicado y veras como los Tablespaces tienen ese valor que te he comentado.
No sé cuanto te falta en acabar la carrera ... Pero si quieres trabajar de 'becario' cursando los últimos cursos de la carrera y eres de BCN. Coméntamelo e igual te puedo echar un cable.
Respecto a lo que me has dicho, no me has leído la última parte bien ...
En ella digo que aciertas pletamente en las columnas consultadas, pero que en las versiones últimas de Oracle estas toman el valor de : 'LOCAL' y 'AUTO' respectivamente.
Haz la consulta con las columnas que has indicado y veras como los Tablespaces tienen ese valor que te he comentado.
Muchas gracias Ramon. Lamentablemente no soy de Barcelona, soy de Murciapero gracias de todas formas. Estoy en tercero de carrera pero me voy hasta los 5 años creo. Cuando dices que las AUTO y LOCAL se utilizan en las ultimas versiones de ORACLE me asalta una duda, porque yo trabajo en ORACLE 10g y no se si sera de las ultimas versiones. De todas formas se lo preguntare a mi profesor y así quedo de puta madre. MUchas gracias de nuevo y saludos!
PD: siento lo del Barca.
Juan.
PD: siento lo del Barca.
Juan.
Jajaja ... A ver si tienes suerte.
Pero ya en la 10g creo que son casi obligatorias estas opciones.
De todas formas, si se lo preguntas, igual le pones en un aprieto! Y dile el porque estas opciones son mejores y sobre todo insístele en que explique el porque mejor LOCAL que DICTIONARIO (yo te he escrito la respuesta). Lo de 'AUTO' o 'MANUAL' ya es más debatible. Pero igual te luces también ... jajaja
Ya me contarás :-)
Pero ya en la 10g creo que son casi obligatorias estas opciones.
De todas formas, si se lo preguntas, igual le pones en un aprieto! Y dile el porque estas opciones son mejores y sobre todo insístele en que explique el porque mejor LOCAL que DICTIONARIO (yo te he escrito la respuesta). Lo de 'AUTO' o 'MANUAL' ya es más debatible. Pero igual te luces también ... jajaja
Ya me contarás :-)
Bueno Ramon, pues acabo de salir de clase y el profesor se ha llevado una buena impresión. Pero solo he tenido una hora para preguntarle y se me quedo esta duda en el tintero. El ejercicio en cuestión pide:
Mostrar con un SELECT los ficheros de datos y los tablespaces a los que están asociados, los ficheros de control, y los ficheros de redo log de la base de datos (tipo de fichero -DATAFILE, CONTROLFILE, o REDOLOGFILE-, nombre del fichero, estado, y nombre del tablespace si es un fichero de datos).
Pues hemos puesto lo siguiente:
</br>Select 'DATAFILE', file#, status from V$DATAFILE
UNION
Select 'CONTROLFILE', status from V$CONTROLFILE
UNION
Select 'REDOLOGFILE', status, from V$LOGFILE
UNION
Select status, tablespace_name from DBA_TABLESPACES;
¿Esta bien?
Saludos Ramón!,
Juan.
Mostrar con un SELECT los ficheros de datos y los tablespaces a los que están asociados, los ficheros de control, y los ficheros de redo log de la base de datos (tipo de fichero -DATAFILE, CONTROLFILE, o REDOLOGFILE-, nombre del fichero, estado, y nombre del tablespace si es un fichero de datos).
Pues hemos puesto lo siguiente:
</br>Select 'DATAFILE', file#, status from V$DATAFILE
UNION
Select 'CONTROLFILE', status from V$CONTROLFILE
UNION
Select 'REDOLOGFILE', status, from V$LOGFILE
UNION
Select status, tablespace_name from DBA_TABLESPACES;
¿Esta bien?
Saludos Ramón!,
Juan.
No es que esté mal ... pero yo lo intentaría hacer mejor ...
Dejame, y el viernes como trabajo te hago la select y te la envío.
Dejame, y el viernes como trabajo te hago la select y te la envío.
Ok, Ramón. Muchas gracias.
Saludos!,
Juan.
Saludos!,
Juan.
Eyyy Ramón! Que me tienes olvidado xD
Saludos!,
Juan.
Saludos!,
Juan.
Lo siento Juan, pero estoy enfermo y no te he podido contestar antes. Pero como me aburría, he encontrado
un hueco.
Espero que ya no sea tarde, o como mínimo el que lo comentes con tu TUTOR para que las cosas queden los
suficientemente claras, tanto para él -si lo necesita-, como para bien tuyo y de tus compañeros (aunque
a estas edades pasáis de todo con sólo aprobar! ;-) ).
Lo que indicas tú, no está mal. El único problema que hay se encuentra en el enunciado.
No se pueden mezclar 'ajos con cebollas'. De ahí que la utilización del operador UNION, aunque por respuesta
sea correcto, en la lógica NO LO ES!
Te explico un poco. Los Tablespaces (TBS) guardan diferente tipo de información, son objetos de BB. DD. Lógicos
y por tanto un TBS puede estar asociado a 'n' DATAFILES (o ficheros físicos en el Disco y con un orden de creación).
Los Ficheros de Control, son elementos de la Arquitectura de Oracle que gestionan y sincronizan todos los procesos
que se llevan a cabo en la Instancia. Por tanto son objetos de la Estructura -o sea, nada que ver con los TBS-.
Y respecto a los ficheros de Log o REDOLog, es una estructura paralela asociada a las interaccones entre la BB. DD. y
Los usuarios, donde se guarda información para poder recuperar datos cuando ocurre un error.
Estos, están organizados en GRUPOS ('n' grupos) y cada grupo cuenta con 1 o 'n' miembros asociados a un Fichero físico
del Sistema operativo.
Si se utilizan los Redolog para recuperar una BB. DD. (Ahí más sistemas) se tiene que contar con una política de copias
de seguridad de estos! Por utilizan el algoritmo de 'robin-in' -si no recuerdo mal el nombre-, que significa que son
cíclicos. Es decir, cuando se llega al último miembro y se llena, este se cierra y toma posesión del primer miembro
escribiendo -machando- datos anteriormente guardados. Si no has hecho copia previa. Adiós al sistema de recuperación
por Redo Log, s.
Una vez explicado esto, te añado como se podría hacer dejando bien claro lo que significa cada cosa, sin juntarlas,
ya que no tendría sentido -más que el de confundiros- ...
1.- Ejecuta el siguiente 'script' en 'sqlplus', por ejemplo (Juan.sql) :
SET FEEDBACK OFF
SET LINESIZE 180
SET ECHO OFF
select '1 - TBS CON DATAFILES ASOCIADOS ORDEN DE CREACIÓN : ' CONCEPTO
from dual;
select tablespace_name TBS, status ESTADO, file_name FICHERO_FÍSICO_ASOCIADO from dba_data_files
order by tablespace_name, file_id;
select '2 - FICHEROS DE CONTROL : ' CONCEPTO
from dual;
select 'NO TIENEN VINCULACIÓN CON OBJETOS LÓGICOS -ESTRUCTURA BB.DD.-' CARACTERISTICA, status ESTADO, name FICHERO_FÍSICO
from v$controlfile;
select '3 - FICHEROS DE CONTROL SEGÚN AGRUPADOR Y ORDENADO POR MIEMBRO DEL AGRUPADOR : ' CONCEPTO
from dual;
select a.group# AGRUPADOR, a.members MIEMBRO_DENTRO_GRUPO, a.status ACTIVADO_O_ESPERA_CICLICA,
b.status ESTADO_MIEMBRO, b.type ON_LINE_O_DESACTIVADO, b.member FICH_FÍS_ASOCIADO_AL_MIEMBRO from v$log a, v$logfile b
where a.group# = b.group#
order by a.group#, a.members;
(Continua ...)
un hueco.
Espero que ya no sea tarde, o como mínimo el que lo comentes con tu TUTOR para que las cosas queden los
suficientemente claras, tanto para él -si lo necesita-, como para bien tuyo y de tus compañeros (aunque
a estas edades pasáis de todo con sólo aprobar! ;-) ).
Lo que indicas tú, no está mal. El único problema que hay se encuentra en el enunciado.
No se pueden mezclar 'ajos con cebollas'. De ahí que la utilización del operador UNION, aunque por respuesta
sea correcto, en la lógica NO LO ES!
Te explico un poco. Los Tablespaces (TBS) guardan diferente tipo de información, son objetos de BB. DD. Lógicos
y por tanto un TBS puede estar asociado a 'n' DATAFILES (o ficheros físicos en el Disco y con un orden de creación).
Los Ficheros de Control, son elementos de la Arquitectura de Oracle que gestionan y sincronizan todos los procesos
que se llevan a cabo en la Instancia. Por tanto son objetos de la Estructura -o sea, nada que ver con los TBS-.
Y respecto a los ficheros de Log o REDOLog, es una estructura paralela asociada a las interaccones entre la BB. DD. y
Los usuarios, donde se guarda información para poder recuperar datos cuando ocurre un error.
Estos, están organizados en GRUPOS ('n' grupos) y cada grupo cuenta con 1 o 'n' miembros asociados a un Fichero físico
del Sistema operativo.
Si se utilizan los Redolog para recuperar una BB. DD. (Ahí más sistemas) se tiene que contar con una política de copias
de seguridad de estos! Por utilizan el algoritmo de 'robin-in' -si no recuerdo mal el nombre-, que significa que son
cíclicos. Es decir, cuando se llega al último miembro y se llena, este se cierra y toma posesión del primer miembro
escribiendo -machando- datos anteriormente guardados. Si no has hecho copia previa. Adiós al sistema de recuperación
por Redo Log, s.
Una vez explicado esto, te añado como se podría hacer dejando bien claro lo que significa cada cosa, sin juntarlas,
ya que no tendría sentido -más que el de confundiros- ...
1.- Ejecuta el siguiente 'script' en 'sqlplus', por ejemplo (Juan.sql) :
SET FEEDBACK OFF
SET LINESIZE 180
SET ECHO OFF
select '1 - TBS CON DATAFILES ASOCIADOS ORDEN DE CREACIÓN : ' CONCEPTO
from dual;
select tablespace_name TBS, status ESTADO, file_name FICHERO_FÍSICO_ASOCIADO from dba_data_files
order by tablespace_name, file_id;
select '2 - FICHEROS DE CONTROL : ' CONCEPTO
from dual;
select 'NO TIENEN VINCULACIÓN CON OBJETOS LÓGICOS -ESTRUCTURA BB.DD.-' CARACTERISTICA, status ESTADO, name FICHERO_FÍSICO
from v$controlfile;
select '3 - FICHEROS DE CONTROL SEGÚN AGRUPADOR Y ORDENADO POR MIEMBRO DEL AGRUPADOR : ' CONCEPTO
from dual;
select a.group# AGRUPADOR, a.members MIEMBRO_DENTRO_GRUPO, a.status ACTIVADO_O_ESPERA_CICLICA,
b.status ESTADO_MIEMBRO, b.type ON_LINE_O_DESACTIVADO, b.member FICH_FÍS_ASOCIADO_AL_MIEMBRO from v$log a, v$logfile b
where a.group# = b.group#
order by a.group#, a.members;
(Continua ...)
(Continuación ...)
2.- Obtendrás como resultado (mucho más lógico) -en mi caso en una 9i- :
Concepto
----------------------------------------------------
1 - tbs con datafiles asociados orden de creación :
TBS ESTADO FICHERO_FÍSICO_ASOCIADO
------------------------------ --------- -------------------------------------------------------------------------------------------------------------------------------------------
CWMLITE Available c:\distribucion_oracle\oracle9I\oradata\oracle9I\CWMLITE01.DBF
DRSYS Available c:\distribucion_oracle\oracle9I\oradata\oracle9I\DRSYS01.DBF
DSITSD01 Available c:\distribucion_oracle\oracle9I\oradata\oracle9I\DSITSD01.ORA
DSITSD01 Available c:\distribucion_oracle\oracle9I\oradata\oracle9I\DSITBD02.ORA
DSITSD01 Available c:\distribucion_oracle\oracle9I\oradata\oracle9I\DSITSD03.ORA
DSITSD01_32 Available c:\distribucion_oracle\oracle9I\oradata\oracle9I\DSITSD01_32.ORA
DSITSI01 Available c:\distribucion_oracle\oracle9I\oradata\oracle9I\DSITSI01.ORA
EXAMPLE Available c:\distribucion_oracle\oracle9I\oradata\oracle9I\EXAMPLE01.DBF
INDX Available c:\distribucion_oracle\oracle9I\oradata\oracle9I\INDX01.DBF
ODM Available c:\distribucion_oracle\oracle9I\oradata\oracle9I\ODM01.DBF
SYSTEM Available c:\distribucion_oracle\oracle9I\oradata\oracle9I\SYSTEM01.DBF
TOOLS Available c:\distribucion_oracle\oracle9I\oradata\oracle9I\TOOLS01.DBF
UNDOTBS1 Available c:\distribucion_oracle\oracle9I\oradata\oracle9I\UNDOTBS01.DBF
USERS Available c:\distribucion_oracle\oracle9I\oradata\oracle9I\USERS01.DBF
XDB Available c:\distribucion_oracle\oracle9I\oradata\oracle9I\XDB01.DBF
Concepto
--------------------------
2 - FICHEROS DE CONTROL :
(Como puedes ver, al ser de la estructura si estado es 'NULL').
CARACTERISTICA ESTADO FICHERO_FÍSICO
------------------------------------------------------------- ------- ---------------------------------------------------------------------------------------------------------------
No tienen vinculación con objetos lógicos -Estructura BB.DD.- c:\distribucion_oracle\oracle9I\oradata\oracle9I\CONTROL01.CTL
No tienen vinculación con objetos lógicos -Estructura BB.DD.- c:\distribucion_oracle\oracle9I\oradata\oracle9I\CONTROL02.CTL
No tienen vinculación con objetos lógicos -Estructura BB.DD.- c:\distribucion_oracle\oracle9I\oradata\oracle9I\CONTROL03.CTL
Concepto
-------------------------------------------------------------------------------
3 - FICHEROS DE CONTROL SEGÚN AGRUPADOR Y ORDENADO POR MIEMBRO DEL AGRUPADOR :
AGRUPADOR MIEMBRO_DENTRO_GRUPO ACTIVADO_O_ESPERA_CICLICA ESTADO_MIEMBRO ON_LINE_O_DESACTIVADO FICH_FÍS_ASOCIADO_AL_MIEMBRO
--------- -------------------- ------------------------- -------------- --------------------- --------------------------------------------------------------------------------------
1 1 CURRENT ONLINE c:\distribucion_oracle\oracle9I\oradata\oracle9I\REDO01.LOG
2 1 INACTIVE STALE ONLINE c:\distribucion_oracle\oracle9I\oradata\oracle9I\REDO02.LOG
3 1 INACTIVE STALE ONLINE c:\distribucion_oracle\oracle9I\oradata\oracle9I\REDO03.LOG
Bueno,
Espero que como mínimo te sirva para entender un poco mejor las cosas (y si lo aclaras en clase, mejor). Aquí quien se ha equivocado
es el TUTOR en el enunciado ... 'Mezclar ajos con Cebollas' ... Eso os confundirá!
4.- El robocop ... jajaja
Espero que te sirva.
He tenido que poner todos los datos en minúsculas (los de retorno) ya que a parte de que este editor
no acepta 180 caracteres por linea, encima se queja de las MAYÚSCULAS! Y la respuesta anterior me la ha borrado!
A ver si me lee, el Web-Manager y hace algo al respecto.
Bueno, un saludo
(Ah! Y cierra ya este hilo y puntúa. Ya que se está haciendo muy largo para leer).
Abre otro cuando tengas dudas.
2.- Obtendrás como resultado (mucho más lógico) -en mi caso en una 9i- :
Concepto
----------------------------------------------------
1 - tbs con datafiles asociados orden de creación :
TBS ESTADO FICHERO_FÍSICO_ASOCIADO
------------------------------ --------- -------------------------------------------------------------------------------------------------------------------------------------------
CWMLITE Available c:\distribucion_oracle\oracle9I\oradata\oracle9I\CWMLITE01.DBF
DRSYS Available c:\distribucion_oracle\oracle9I\oradata\oracle9I\DRSYS01.DBF
DSITSD01 Available c:\distribucion_oracle\oracle9I\oradata\oracle9I\DSITSD01.ORA
DSITSD01 Available c:\distribucion_oracle\oracle9I\oradata\oracle9I\DSITBD02.ORA
DSITSD01 Available c:\distribucion_oracle\oracle9I\oradata\oracle9I\DSITSD03.ORA
DSITSD01_32 Available c:\distribucion_oracle\oracle9I\oradata\oracle9I\DSITSD01_32.ORA
DSITSI01 Available c:\distribucion_oracle\oracle9I\oradata\oracle9I\DSITSI01.ORA
EXAMPLE Available c:\distribucion_oracle\oracle9I\oradata\oracle9I\EXAMPLE01.DBF
INDX Available c:\distribucion_oracle\oracle9I\oradata\oracle9I\INDX01.DBF
ODM Available c:\distribucion_oracle\oracle9I\oradata\oracle9I\ODM01.DBF
SYSTEM Available c:\distribucion_oracle\oracle9I\oradata\oracle9I\SYSTEM01.DBF
TOOLS Available c:\distribucion_oracle\oracle9I\oradata\oracle9I\TOOLS01.DBF
UNDOTBS1 Available c:\distribucion_oracle\oracle9I\oradata\oracle9I\UNDOTBS01.DBF
USERS Available c:\distribucion_oracle\oracle9I\oradata\oracle9I\USERS01.DBF
XDB Available c:\distribucion_oracle\oracle9I\oradata\oracle9I\XDB01.DBF
Concepto
--------------------------
2 - FICHEROS DE CONTROL :
(Como puedes ver, al ser de la estructura si estado es 'NULL').
CARACTERISTICA ESTADO FICHERO_FÍSICO
------------------------------------------------------------- ------- ---------------------------------------------------------------------------------------------------------------
No tienen vinculación con objetos lógicos -Estructura BB.DD.- c:\distribucion_oracle\oracle9I\oradata\oracle9I\CONTROL01.CTL
No tienen vinculación con objetos lógicos -Estructura BB.DD.- c:\distribucion_oracle\oracle9I\oradata\oracle9I\CONTROL02.CTL
No tienen vinculación con objetos lógicos -Estructura BB.DD.- c:\distribucion_oracle\oracle9I\oradata\oracle9I\CONTROL03.CTL
Concepto
-------------------------------------------------------------------------------
3 - FICHEROS DE CONTROL SEGÚN AGRUPADOR Y ORDENADO POR MIEMBRO DEL AGRUPADOR :
AGRUPADOR MIEMBRO_DENTRO_GRUPO ACTIVADO_O_ESPERA_CICLICA ESTADO_MIEMBRO ON_LINE_O_DESACTIVADO FICH_FÍS_ASOCIADO_AL_MIEMBRO
--------- -------------------- ------------------------- -------------- --------------------- --------------------------------------------------------------------------------------
1 1 CURRENT ONLINE c:\distribucion_oracle\oracle9I\oradata\oracle9I\REDO01.LOG
2 1 INACTIVE STALE ONLINE c:\distribucion_oracle\oracle9I\oradata\oracle9I\REDO02.LOG
3 1 INACTIVE STALE ONLINE c:\distribucion_oracle\oracle9I\oradata\oracle9I\REDO03.LOG
Bueno,
Espero que como mínimo te sirva para entender un poco mejor las cosas (y si lo aclaras en clase, mejor). Aquí quien se ha equivocado
es el TUTOR en el enunciado ... 'Mezclar ajos con Cebollas' ... Eso os confundirá!
4.- El robocop ... jajaja
Espero que te sirva.
He tenido que poner todos los datos en minúsculas (los de retorno) ya que a parte de que este editor
no acepta 180 caracteres por linea, encima se queja de las MAYÚSCULAS! Y la respuesta anterior me la ha borrado!
A ver si me lee, el Web-Manager y hace algo al respecto.
Bueno, un saludo
(Ah! Y cierra ya este hilo y puntúa. Ya que se está haciendo muy largo para leer).
Abre otro cuando tengas dudas.
- Compartir respuesta
- Anónimo
ahora mismo