"En las profundidades del invierno aprendí por fin que dentro de mí hay un verano invencible." Albert Camus
lunes, 16 de marzo de 2015
jueves, 12 de marzo de 2015
Kilobytes, Megabyetes, Gigabytes,...
24 de Noviembre de 2004 / 0 Comentarios / GLOSARIO
El kilobyte es la unidad de medida de la capacidad de memoria y de dispositivos de almacenamiento informático (disquete, disco duro, CD-ROM, DVD, etc.). Un KB corresponde a 1.024 bytes. Otras medidas y sus equivalencias:
Abreviatura | Nombre | Usualmente | Real |
Kb | Kilobyte | 1.000 b | 1.024 |
Mb | Megabyte | 1.000 Kb | 1.048.576 |
Gb | Gigabyte | 1.000 Mb | 1.073.741.824 |
Tb | Terabyte | 1.000 Gb | 1.099.511.627.776 |
Pb | Petabyte | 1.000 Tb | 1.125.899.906.842.624 |
Eb | Exabyte | 1.000 Pb | 1.152.921.504.606.846.976 |
Java 8 Help
http://docs.oracle.com/javase/8/docs/api/
http://docs.oracle.com/javase/tutorial/java/index.html
http://docs.oracle.com/javase/8/javase-books.htm
http://docs.oracle.com/javase/tutorial/java/index.html
http://docs.oracle.com/javase/8/javase-books.htm
Forks
Comparativas entre los forks
Característica | MySQL | Percona | MariaDB | OurDelta | Drizzle |
Mantenido por | Oracle Corp. | Percona | Comunidad | OpenQuery | Brian Aker |
Licencia | GPL o propietaria | GPL | GPL v2 | GPL | BSD, GPL v2 |
Soporte Windows | Si | No | Si | No | No |
Soporte Unix/Linux | Si | Si | Si | Si | Si |
ACID | Si | Si | Si | Si | Si |
Integridad referencial | Si | Si | Si | Si | Si |
Transacciones | Si | Si | Si | Si | Si |
Unicode | Si | Si | Si | Si | Si |
Tamaño máximo DB | Ilimitado | Ilimitado | Ilimitado | Ilimitado | Ilimitado |
Tamaño máximo tabla | MyISAM 256 TB; InnoDB 64 TB | MyISAM 256 TB; InnoDB 64 TB | MyISAM 256 TB; InnoDB 64 TB | MyISAM 256 TB; InnoDB 64 TB | 64 TB |
Máximo de columnas por fila | MyISAM 4096; InnoDB 1000 | MyISAM 256 TB; InnoDB 64 TB | MyISAM 256 TB; InnoDB 64 TB | MyISAM 4096; InnoDB 1000 | 1000 |
Tablas temporales | No | No | No | No | No |
Vistas materializadas | No | No | No | No | No |
Índices Árboles R-/R+ | Si (MyISAM) | Si (MyISAM) | Si (MyISAM) | Si (MyISAM) | No |
Índices HASH | Si (InnoDB) | Si (InnoDB – XtraDB) | Si (InnoDB – XtraDB) | Si (InnoDB – XtraDB) | No |
Índices FULL TEXT | Si (MyISAM) | Si (MyISAM) | Si (MyISAM – Aria) | Si (MyISAM) | No |
Índices SPATIAL | Si (MyISAM) | Si (MyISAM) | Si (MyISAM) | Si (MyISAM) | No |
Triggers y Stored Procedures | Si | Si | Si (MyISAM) | Si | Con plugins |
Particionado | Si | Si | Si | Si | Si |
Certificado de Seguridad | No | No | No | No | No |
http://investigacionit.com.ar/?s=Forks
Cluster Control
http://www.severalnines.com/blog/how-manage-and-monitor-your-existing-postgres-servers
sábado, 7 de marzo de 2015
viernes, 6 de marzo de 2015
Administrando Datafiles y Tablespaces de la base de datos Oracle.
Administrando Datafiles y
Tablespaces de la base de datos Oracle.
A continuación se indican algunos comandos de administración de los espacios
A continuación se indican algunos comandos de administración de los espacios
que alojan los datos de la base de datos. También se agregan algunas
recomendaciones de cómo mantener los recursos.
Consulta de DATAFILES
/**
Consulta de DATAFILES
/**
SELECT * FROM DBA_DATA_FILES ORDER BY TABLESPACE_NAME,FILE_ID ;
Consulta de TABLESPACES
SELECT * FROM dba_tablespaces;
Crea un tablespace
CREATE TABLESPACE cbar01
DATAFILE '/oradata/bdcr/data/cbar01.dbf' SIZE 1024M
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO;
COMMIT;
**/
Aumenta el anterior tablespace
/*
Consulta de TABLESPACES
SELECT * FROM dba_tablespaces;
Crea un tablespace
CREATE TABLESPACE cbar01
DATAFILE '/oradata/bdcr/data/cbar01.dbf' SIZE 1024M
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO;
COMMIT;
**/
Aumenta el anterior tablespace
/*
ALTER DATABASE DATAFILE '/oradata/bdcr/data/cbar01.dbf' AUTOEXTEND ON;
Consulta el tamaño de un tablespace
select sum(bytes) from dba_free_space where TABLESPACE_NAME='SYSTEM';
Consulta el espacio libre de la base de datos por tablespace y blocks
SELECT * from dba_free_space
Consulta el tamaño de un tablespace
select sum(bytes) from dba_free_space where TABLESPACE_NAME='SYSTEM';
Consulta el espacio libre de la base de datos por tablespace y blocks
SELECT * from dba_free_space
**/
Otro ejemplo de creación de tablespace, en que el incremento se define por NEXT 320k.
Es un aumento menor y esta afectando la columna de: INCREMENT_BY
Otro ejemplo de creación de tablespace, en que el incremento se define por NEXT 320k.
Es un aumento menor y esta afectando la columna de: INCREMENT_BY
/*
CREATE TABLESPACE cbar04
DATAFILE '/oradata/bdcr/data/cbar04.dbf' SIZE 5120k
AUTOEXTEND ON NEXT 320 K
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO;
COMMIT;
*/
Ejemplo en cómo se adiciona un datafile a un tablespace existente en este caso al SYSTEM.
En este ejemplo estamos aumentado aproximadamente medio giga.
Dando un incremento INCREMENT_BY, de next 102240K,
CREATE TABLESPACE cbar04
DATAFILE '/oradata/bdcr/data/cbar04.dbf' SIZE 5120k
AUTOEXTEND ON NEXT 320 K
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO;
COMMIT;
*/
Ejemplo en cómo se adiciona un datafile a un tablespace existente en este caso al SYSTEM.
En este ejemplo estamos aumentado aproximadamente medio giga.
Dando un incremento INCREMENT_BY, de next 102240K,
que en el INCREMENT_BY se refleja como 1280
/*
ALTER TABLESPACE SYSTEMxxxx
ADD DATAFILE '/oradata/bdcr/data/system_02xxxx.dbf' SIZE 488281k
AUTOEXTEND ON
NEXT 10240K;
**/
El siguiente es un ejemplo de cómo aumentar el tamaño de un datafile,
ALTER TABLESPACE SYSTEMxxxx
ADD DATAFILE '/oradata/bdcr/data/system_02xxxx.dbf' SIZE 488281k
AUTOEXTEND ON
NEXT 10240K;
**/
El siguiente es un ejemplo de cómo aumentar el tamaño de un datafile,
el anterior que hemos creado, y ahora lo estamos aumentando a 1G.
/*
alter database datafile '/oradata/bdcr/data/system_02xx.dbf' RESIZE 1G;
**/
Cuando estamos haciendo cambios en datafiles y tablespaces, debemos de
/*
alter database datafile '/oradata/bdcr/data/system_02xx.dbf' RESIZE 1G;
**/
Cuando estamos haciendo cambios en datafiles y tablespaces, debemos de
manera continúa verificar los cambios con la siguiente consulta a los datafiles.
/*
SELECT * FROM dba_data_files ORDER BY TABLESPACE_NAME,FILE_ID;
**/
Dentro de la verificación debemos de ir viendo el tamaño que asignamos a los recursos
Dentro de la verificación debemos de ir viendo el tamaño que asignamos a los recursos
de datafiles y tablespace.
Retomemos la consulta de espacios libres de los recursos mencionados,
Retomemos la consulta de espacios libres de los recursos mencionados,
para que cualquier implementación sea vigilada y controlada de manera
diaria y permanente.
/*
SELECT df.tablespace_name TABLESPACE, df.total_space TOTAL_SPACE,
fs.free_space FREE_SPACE, df.total_space_mb TOTAL_SPACE_MB,
(df.total_space_mb - fs.free_space_mb) USED_SPACE_MB,
fs.free_space_mb FREE_SPACE_MB,
ROUND(100 * (fs.free_space / df.total_space),2) PCT_FREE
FROM (SELECT tablespace_name, SUM (bytes) TOTAL_SPACE,
ROUND( SUM (bytes) / 1048576) TOTAL_SPACE_MB
FROM dba_data_files
GROUP BY tablespace_name) df,
(SELECT tablespace_name, SUM (bytes) FREE_SPACE,
ROUND( SUM (bytes) / 1048576) FREE_SPACE_MB
FROM dba_free_space
GROUP BY tablespace_name) fs
WHERE df.tablespace_name = fs.tablespace_name(+)
ORDER BY fs.tablespace_name;
/*
SELECT df.tablespace_name TABLESPACE, df.total_space TOTAL_SPACE,
fs.free_space FREE_SPACE, df.total_space_mb TOTAL_SPACE_MB,
(df.total_space_mb - fs.free_space_mb) USED_SPACE_MB,
fs.free_space_mb FREE_SPACE_MB,
ROUND(100 * (fs.free_space / df.total_space),2) PCT_FREE
FROM (SELECT tablespace_name, SUM (bytes) TOTAL_SPACE,
ROUND( SUM (bytes) / 1048576) TOTAL_SPACE_MB
FROM dba_data_files
GROUP BY tablespace_name) df,
(SELECT tablespace_name, SUM (bytes) FREE_SPACE,
ROUND( SUM (bytes) / 1048576) FREE_SPACE_MB
FROM dba_free_space
GROUP BY tablespace_name) fs
WHERE df.tablespace_name = fs.tablespace_name(+)
ORDER BY fs.tablespace_name;
**/
RECOMENDACIONES:
1. Todo datafile no debe contar con un crecimiento al máximo permitido,
RECOMENDACIONES:
1. Todo datafile no debe contar con un crecimiento al máximo permitido,
ya que su portabilidad, manejo y respaldo, puede verse
afectada en caso de cualquier posible contingencia.
2. Ejemplo de ellos es en tener archivos muy grandes de 34 gigas por ejemplo.
3. Que los archivos dificulten su paso a otros espacios.
4. Que el respaldo sea muy grande en solo un archivo.
5. Que se dañe con mayor facilidad el archivo y su recuperación sea compleja,
2. Ejemplo de ellos es en tener archivos muy grandes de 34 gigas por ejemplo.
3. Que los archivos dificulten su paso a otros espacios.
4. Que el respaldo sea muy grande en solo un archivo.
5. Que se dañe con mayor facilidad el archivo y su recuperación sea compleja,
hasta tener un dato total de todo su contenido.
6. Lo mejor es ir agregando información clasificada, sea por históricos, de proceso,
6. Lo mejor es ir agregando información clasificada, sea por históricos, de proceso,
de recepciones, de periodos, por fechas.
7. Sea que queden en un esquema o varios esquemas.
8. En el caso del SYSTEM también es lo necesario, acumular en
7. Sea que queden en un esquema o varios esquemas.
8. En el caso del SYSTEM también es lo necesario, acumular en
archivos datafiles pequeños.
9. Hay un proceso de recuperación de los contenidos de los datafiles
9. Hay un proceso de recuperación de los contenidos de los datafiles
y sus tablespaces, pero sólo a casos necesarios se debe realizar.
10. Los datafiles no deben tener RESIZE decrementables,
10. Los datafiles no deben tener RESIZE decrementables,
y menos cuando hay
contenido de datos,
ya que puede ser perdida de los datos indiscutiblemente, para ello hay un proceso
a seguir que se verá en otro documento complementario.
11. Este proceso se relaciona con el incremento que sufren los tablespaces,
11. Este proceso se relaciona con el incremento que sufren los tablespaces,
hay que relacionar ese crecimiento para poder ir cuadrando cambios.
12. Los índices deben ir separados por tablespaces de sus respectivas tablas.
12. Los índices deben ir separados por tablespaces de sus respectivas tablas.
Consulta de espacios en datafiles y tablespaces.
Consulta de espacios en datafiles y tablespaces.
A continuación se indican algunos comandos de administración de los espacios que alojan los datos de la base de datos, en los datafiles.
Esta revisión debe ser continua y permanente, del diario, y se deben de guardar registros del crecimiento a lo largo de los periodos vitales de la empresa, esto debido a que hay que recordar que nos indicará de qué manera hay que ir incrementado los espacios de datafiles y tablespaces en la base de datos.
Conformamos esta información de vital importancia ya que nos indica cómo crece la base de datos, y entonces podremos decidir cómo agregar más espacios para el almacenamiento de datos.
Consulta compacta de espacio libre
SELECT a.tablespace_name,
b.size_MB,
a.free_MB,
Trunc((a.free_MB/b.size_MB) * 100) "FREE_%"
FROM (SELECT tablespace_name,
Trunc(Sum(bytes)/1024/1024) free_MB
FROM dba_free_space
GROUP BY tablespace_name) a,
(SELECT tablespace_name,
Trunc(Sum(bytes)/1024/1024) size_MB
FROM dba_data_files
GROUP BY tablespace_name) b
WHERE a.tablespace_name = b.tablespace_name
order by 4
/
Consulta de los datafiles, es necesaria por si hay cambios.
SELECT * FROM dba_data_files ORDER BY FILE_ID, TABLESPACE_NAME;
Consulta detallada del espacio libre de almacenamiento
SELECT df.tablespace_name TABLESPACE, df.total_space TOTAL_SPACE,
fs.free_space FREE_SPACE, df.total_space_mb TOTAL_SPACE_MB,
(df.total_space_mb - fs.free_space_mb) USED_SPACE_MB,
fs.free_space_mb FREE_SPACE_MB,
ROUND(100 * (fs.free_space / df.total_space),2) PCT_FREE
FROM (SELECT tablespace_name, SUM (bytes) TOTAL_SPACE,
ROUND( SUM (bytes) / 1048576) TOTAL_SPACE_MB
FROM dba_data_files
GROUP BY tablespace_name) df,
(SELECT tablespace_name, SUM (bytes) FREE_SPACE,
ROUND( SUM (bytes) / 1048576) FREE_SPACE_MB
FROM dba_free_space
GROUP BY tablespace_name) fs
WHERE df.tablespace_name = fs.tablespace_name(+)
ORDER BY fs.tablespace_name;
Consulta de espacios libres por tablespace y bloques.
SELECT * FROM dba_free_space;
Consulta de espacio libre a un tablespace, en este caso SYSTEM
select (select sum(bytes)/1024/1024 from dba_data_files where tablespace_name = 'SYSTEM') MB,
(select sum(bytes)/1024/1024 from dba_segments where tablespace_name = 'SYSTEM') MB_USED,
(select sum(bytes)/1024/1024 from dba_free_space where tablespace_name = 'SYSTEM') MB_FREE
from dual;
Consulta por segmentos del SYSTEM, por menos de 10 segundos.
with segs as (select owner, segment_type, segment_name, partition_name, ceil(bytes/1024/1024) mb
--SELECT *
from dba_segments where tablespace_name = 'SYSTEM'
order by 5 desc)
select * from segs where rownum <= 10;
Otra consulta de espacio libre
SELECT dd.tablespace_name tablespace_name, dd.file_name file_name, dd.bytes/1024 TABLESPACE_KB, SUM (fs.bytes)/1024 KBYTES_FREE, MAX(fs.bytes)/1024 NEXT_FREE
FROM sys.dba_free_space fs, sys.dba_data_files dd
WHERE dd.tablespace_name = fs.tablespace_name
AND dd.file_id = fs.file_id
GROUP BY dd.tablespace_name, dd.file_name, dd.bytes/1024
ORDER BY dd.tablespace_name, dd.file_name;
Consulta de detallada del espacio libre
SELECT /* + RULE */ df.tablespace_name "Tablespace",
df.bytes / (1024 * 1024) "Size (MB)",
SUM(fs.bytes) / (1024 * 1024) "Free (MB)",
Nvl(Round(SUM(fs.bytes) * 100 / df.bytes),1) "% Free",
Round((df.bytes - SUM(fs.bytes)) * 100 / df.bytes) "% Used"
FROM dba_free_space fs,
(SELECT tablespace_name,SUM(bytes) bytes
FROM dba_data_files
GROUP BY tablespace_name) df
WHERE fs.tablespace_name (+) = df.tablespace_name
GROUP BY df.tablespace_name,df.bytes
UNION ALL
SELECT /* + RULE */ df.tablespace_name tspace,
fs.bytes / (1024 * 1024),
SUM(df.bytes_free) / (1024 * 1024),
Nvl(Round((SUM(fs.bytes) - df.bytes_used) * 100 / fs.bytes), 1),
Round((SUM(fs.bytes) - df.bytes_free) * 100 / fs.bytes)
FROM dba_temp_files fs,
(SELECT tablespace_name,bytes_free,bytes_used
FROM v$temp_space_header
GROUP BY tablespace_name,bytes_free,bytes_used) df
WHERE fs.tablespace_name (+) = df.tablespace_name
GROUP BY df.tablespace_name,fs.bytes,df.bytes_free,df.bytes_used
ORDER BY 4 DESC;
Una forma global de ver el espacio de toda la base de datos
SELECT
TABLESPACE_SIZE/(1024*1024) TABLESPACE_SIZE,
ALLOCATED_SPACE/(1024*1024) ALLOCATED_SPACE,
FREE_SPACE/(1024*1024) FREE_SPACE
FROM dba_temp_free_space
/
Verificar los tablespaces para detalles
SELECT *FROM dba_tablespaces;
Otra forma de consulta
-- ALMACENAMIENTO:
SELECT tablespace_name,
ROUND(sum(bytes)/1024/1024,0)
FROM dba_free_space
WHERE tablespace_name NOT LIKE 'TEMP%'
GROUP BY tablespace_name
UNION
-- MÁXIMO ALMACENAMIENTO:
SELECT tablespace_name,
round(sum(BYTES/1024/1024),0)
FROM dba_data_files b
WHERE tablespace_name NOT LIKE 'TEMP%'
GROUP BY b.tablespace_name ;
-- ESPACIO DISPONIBLE:
(se hace la operación del resultado para el valor de un tablespace((almacenamiento*100)/maximo)
select (1308*100)/ 28990
from dual ;
A continuación se indican algunos comandos de administración de los espacios que alojan los datos de la base de datos, en los datafiles.
Esta revisión debe ser continua y permanente, del diario, y se deben de guardar registros del crecimiento a lo largo de los periodos vitales de la empresa, esto debido a que hay que recordar que nos indicará de qué manera hay que ir incrementado los espacios de datafiles y tablespaces en la base de datos.
Conformamos esta información de vital importancia ya que nos indica cómo crece la base de datos, y entonces podremos decidir cómo agregar más espacios para el almacenamiento de datos.
Consulta compacta de espacio libre
SELECT a.tablespace_name,
b.size_MB,
a.free_MB,
Trunc((a.free_MB/b.size_MB) * 100) "FREE_%"
FROM (SELECT tablespace_name,
Trunc(Sum(bytes)/1024/1024) free_MB
FROM dba_free_space
GROUP BY tablespace_name) a,
(SELECT tablespace_name,
Trunc(Sum(bytes)/1024/1024) size_MB
FROM dba_data_files
GROUP BY tablespace_name) b
WHERE a.tablespace_name = b.tablespace_name
order by 4
/
Consulta de los datafiles, es necesaria por si hay cambios.
SELECT * FROM dba_data_files ORDER BY FILE_ID, TABLESPACE_NAME;
Consulta detallada del espacio libre de almacenamiento
SELECT df.tablespace_name TABLESPACE, df.total_space TOTAL_SPACE,
fs.free_space FREE_SPACE, df.total_space_mb TOTAL_SPACE_MB,
(df.total_space_mb - fs.free_space_mb) USED_SPACE_MB,
fs.free_space_mb FREE_SPACE_MB,
ROUND(100 * (fs.free_space / df.total_space),2) PCT_FREE
FROM (SELECT tablespace_name, SUM (bytes) TOTAL_SPACE,
ROUND( SUM (bytes) / 1048576) TOTAL_SPACE_MB
FROM dba_data_files
GROUP BY tablespace_name) df,
(SELECT tablespace_name, SUM (bytes) FREE_SPACE,
ROUND( SUM (bytes) / 1048576) FREE_SPACE_MB
FROM dba_free_space
GROUP BY tablespace_name) fs
WHERE df.tablespace_name = fs.tablespace_name(+)
ORDER BY fs.tablespace_name;
Consulta de espacios libres por tablespace y bloques.
SELECT * FROM dba_free_space;
Consulta de espacio libre a un tablespace, en este caso SYSTEM
select (select sum(bytes)/1024/1024 from dba_data_files where tablespace_name = 'SYSTEM') MB,
(select sum(bytes)/1024/1024 from dba_segments where tablespace_name = 'SYSTEM') MB_USED,
(select sum(bytes)/1024/1024 from dba_free_space where tablespace_name = 'SYSTEM') MB_FREE
from dual;
Consulta por segmentos del SYSTEM, por menos de 10 segundos.
with segs as (select owner, segment_type, segment_name, partition_name, ceil(bytes/1024/1024) mb
--SELECT *
from dba_segments where tablespace_name = 'SYSTEM'
order by 5 desc)
select * from segs where rownum <= 10;
Otra consulta de espacio libre
SELECT dd.tablespace_name tablespace_name, dd.file_name file_name, dd.bytes/1024 TABLESPACE_KB, SUM (fs.bytes)/1024 KBYTES_FREE, MAX(fs.bytes)/1024 NEXT_FREE
FROM sys.dba_free_space fs, sys.dba_data_files dd
WHERE dd.tablespace_name = fs.tablespace_name
AND dd.file_id = fs.file_id
GROUP BY dd.tablespace_name, dd.file_name, dd.bytes/1024
ORDER BY dd.tablespace_name, dd.file_name;
Consulta de detallada del espacio libre
SELECT /* + RULE */ df.tablespace_name "Tablespace",
df.bytes / (1024 * 1024) "Size (MB)",
SUM(fs.bytes) / (1024 * 1024) "Free (MB)",
Nvl(Round(SUM(fs.bytes) * 100 / df.bytes),1) "% Free",
Round((df.bytes - SUM(fs.bytes)) * 100 / df.bytes) "% Used"
FROM dba_free_space fs,
(SELECT tablespace_name,SUM(bytes) bytes
FROM dba_data_files
GROUP BY tablespace_name) df
WHERE fs.tablespace_name (+) = df.tablespace_name
GROUP BY df.tablespace_name,df.bytes
UNION ALL
SELECT /* + RULE */ df.tablespace_name tspace,
fs.bytes / (1024 * 1024),
SUM(df.bytes_free) / (1024 * 1024),
Nvl(Round((SUM(fs.bytes) - df.bytes_used) * 100 / fs.bytes), 1),
Round((SUM(fs.bytes) - df.bytes_free) * 100 / fs.bytes)
FROM dba_temp_files fs,
(SELECT tablespace_name,bytes_free,bytes_used
FROM v$temp_space_header
GROUP BY tablespace_name,bytes_free,bytes_used) df
WHERE fs.tablespace_name (+) = df.tablespace_name
GROUP BY df.tablespace_name,fs.bytes,df.bytes_free,df.bytes_used
ORDER BY 4 DESC;
Una forma global de ver el espacio de toda la base de datos
SELECT
TABLESPACE_SIZE/(1024*1024) TABLESPACE_SIZE,
ALLOCATED_SPACE/(1024*1024) ALLOCATED_SPACE,
FREE_SPACE/(1024*1024) FREE_SPACE
FROM dba_temp_free_space
/
Verificar los tablespaces para detalles
SELECT *FROM dba_tablespaces;
Otra forma de consulta
-- ALMACENAMIENTO:
SELECT tablespace_name,
ROUND(sum(bytes)/1024/1024,0)
FROM dba_free_space
WHERE tablespace_name NOT LIKE 'TEMP%'
GROUP BY tablespace_name
UNION
-- MÁXIMO ALMACENAMIENTO:
SELECT tablespace_name,
round(sum(BYTES/1024/1024),0)
FROM dba_data_files b
WHERE tablespace_name NOT LIKE 'TEMP%'
GROUP BY b.tablespace_name ;
-- ESPACIO DISPONIBLE:
(se hace la operación del resultado para el valor de un tablespace((almacenamiento*100)/maximo)
select (1308*100)/ 28990
from dual ;
Ejecución de Estadísticas en la base de datos Oracle.
Ejecución
de Estadísticas en la base de datos Oracle.
A continuación se indica el proceso de ejecución de las estadísticas en
las tablas de la base de datos Oracle.
Consultando
las tablas para un esquema y contando cuantas se tienen.
|
SELECT
* from all_tables where owner =
'CS'
SELECT
Count(*) from all_tables where owner
= 'CS'
|
Consultando
el último análisis realizado a una tabla y sus índices.
|
SELECT table_name, table_name
Object_name, num_rows, last_analyzed
from user_tables
where table_name = 'S_X'
union
select table_name,index_name Object_name,
num_rows, last_analyzed
from user_indexes
where table_name = 'S_X'
|
Consultando
el ultimo análisis a todas las tablas y los índices.
|
SELECT table_name, table_name
Object_name, num_rows, last_analyzed
from user_tables
union
select table_name,index_name Object_name,
num_rows, last_analyzed
from user_indexes
|
Consultando
el último análisis a las tablas de ciertos esquemas.
|
SELECT owner, table_name,
table_name Object_name, num_rows, last_analyzed
from all_tables
WHERE owner = 'CS' OR
owner
= 'ADM' OR
owner
= 'CS' OR
owner
= 'CKEP' OR
owner
= 'CB001' OR
owner
= 'CB008' OR
owner
= 'CBN001' OR
owner
= 'ORUS' OR
owner
= 'ORAUS' OR
owner
= 'USRN'
ORDER BY
LAST_ANALYZED
|
Una ejemplo
de consulta que genera el script de todas las tablas de un esquema, en que
nos arroja el comando con el esquema y tabla a ejecutar su análisis.
Lo relevante
en este caso es que al ejecutar la estadística por tabla, genera a la par el
análisis de los índices que cuenta la tabla.
|
select 'EXEC
DBMS_STATS.gather_table_stats('''||OWNER ||''', '''||TABLE_NAME||''',
estimate_percent => 30);' from all_tables where owner = 'CS'
|
A
continuación vemos la salida de los comandos ya armados con algunas tablas y
su esquema respectivo.
|
EXEC
DBMS_STATS.gather_table_stats('CS', 'SSO_LIBRE_B',
estimate_percent => 30);
EXEC
DBMS_STATS.gather_table_stats('CS', 'SDAS',
estimate_percent => 30);
EXEC
DBMS_STATS.gather_table_stats('CS', 'SSMOS',
estimate_percent => 30);
EXEC
DBMS_STATS.gather_table_stats('CS', 'SICTA', estimate_percent
=> 30);
EXEC
DBMS_STATS.gather_table_stats('ORAUS', 'SCH',
estimate_percent => 30);
|
Podemos
ejecutar el select para formar el script de las tablas que contienen un
número determinado de registros para poder evitar arrojar de golpe las
estadísticas.
|
select 'EXEC
DBMS_STATS.gather_table_stats('''||OWNER ||''', '''||TABLE_NAME||''',
estimate_percent => 30);' from all_tables where owner = 'CS'
AND
NUM_ROWS < 500000
|
Recordemos la
recomendación por parte de la consultoría, no ejecutar el analyze, y
realizarlo mediante estas funciones.
|
En la versión 11, se debe ejecutar con unos
nuevos procedimientos:
GATHER_SCHEMA_STATS
GATHER_TABLE_STATS
GATHER_INDEX_STATS
|
NOTA IMPORTANTE:
1.
NO EJECUTAR por
esquema, ni muchas tablas, puede afectar el rendimiento del servicio de bases
de datos, debe hacerse en horas que no afecte los procesos en línea que
continuamente se viven.
2.
Es mejor
realizarlo paulatino por tabla, sobre todo cuidar las tablas de muchos
registros.
|
martes, 3 de marzo de 2015
Suscribirse a:
Entradas (Atom)