Archivo

Archivo para agosto, 2008

Buscar texto o string dentro de directorios en Linux

Viernes, 29 de agosto de 2008 Sin comentarios

Este tip tambien es bastante útil…

find . -type f | xargs fgrep "string" /dev/null
esto entrega el nombre del archivo y la línea donde se encuentra la ocurrencia “string”.

Otra alternativa puede ser:

find . -type f -exec egrep -i "expresion" /dev/nill {} ;

Categories: Linux Tags:

Listar,Eliminar archivos por fechas en linux

Viernes, 29 de agosto de 2008 Sin comentarios

Algo bastante común en la administración de sistemas operativos y bases de datos es la mantencion de archivos que ya no se usan como por ejemplo log del SO o archivos traces de BD. No hay problema cuando son pocos, digamos unos 500 mas o menos, aunque uno quede medio ciego con tantos archivos… En plataformas que generan “demasiados” archivos por hora o por dia, es una verdadera pesadilla hacerle mantencion, ya sea compresion o eliminación de los archivos y si es por fecha peor aún.

Para resolver este problema desde Linux es bastante practico usar una concatenacion de comandos para poder hacer esta tarea mas facil y practica.-

Para buscar archivos con fecha de modificacion de 3 días hacia atrás, en el directorio en donde uno se encuentra…

find . -name *.trc -mtime +3

Para buscar y eliminar archivos con fecha de modificacion de 3 días hacia atrás, en el directorio en donde uno se encuentra…

find . -name *.trc -mtime +3 -exec rm {} ;

Ahora bien si queremos listar esos archivos pero con una ruta relativa …

find /backup/test/[a-z]* -name *.sql -mtime +1

Lo mismo si queremos borrar esos archivos pero con una ruta relativa …

find /backup/test/[a-z]* -name *.sql -mtime +1 -exec rm {} ;

Podemos usar la funcion otras funciones del comando “find”:


-mmin n
Files data was last modified n minutes ago.


-mtime n
Files data was last modified n*24 hours ago.

Categories: Linux, Plataforma Tags: ,

Restaurar BD MSSQL en modo “SUSPECT”

Viernes, 29 de agosto de 2008 Sin comentarios

En estos simples pasos detallo como se puede corregir una base de datos en SQL Server que se encuentra en modo “SUSPECT” y por lo tanto no podemos acceder a ella.-

1.- Desde el SQL Query Analyzer, debemos ejecutar la query:

EXEC sp_detach_db 'BD_CON_PROBLEMAS', 'true'

Con esto “sacamos” la BD con problemas del entorno de administracion del SQL Server Enterprise manager.-

Sacar la BD del Enterprise manager de SQL Server

2.- Antes de ejecutar este paso, debemos saber cual es la ruta exacta de la BD y luego ejecutamos, con esto vamos a registrar la BD pero ahora estará OK

EXEC sp_attach_db @dbname = N'BD_CON_PROBLEMAS',
@filename1 = N'[UNIDAD]:[PATH]BD_CON_PROBLEMAS_data.mdf', --data
@filename2 = N'[UNIDAD]:[PATH]BD_CON_PROBLEMAS_log.ldf' --log

Registrar la BD que estaba con problemas

3.- Actualizamos la vista de las BD del Enterprise Manager y listo.-

BD ya corregida

Resumen de Objetos por Esquemas

Martes, 12 de agosto de 2008 Sin comentarios

Este script te permite saber la cantidad de objetos que tiene un esquema determinado en una instancia


select owner, object_type, count(*) TABLAS
from dba_objects
where owner='NOMBRE_ESQUEMA'
group by owner, object_type
order by 3 desc;

Cantidad de objetos que tiene un esquema determinado en una instancia

Este script te permite saber el tamaño de las tablas e indices que tiene un esquema determinado

select owner, segment_type, count(*) CANT, sum(bytes/1024/1024) MB from dba_segments
where owner='NOMBRE_ESQUEMA'
group by owner, segment_type
order by 4 desc;

Tamaño de las tablas e indices que tiene un esquema determinado

Este script te permite la cantidad de objetos por esquema que estan en diferentes tablespaces, esto es útil para hacer mantención de espacios en una instancia.-

select owner, tablespace_name,segment_type, count(segment_type)
from dba_segments
group by tablespace_name,owner,segment_type
order by 1 asc

Cantidad de obejtos por esquemas en diferentes tablespaces

Detectar sesiones bloqueadas

Lunes, 11 de agosto de 2008 Sin comentarios

Un problema común que siempre se encuentra en la administracion de BD, son los problemas de performance en donde por lo general se encuentran sesiones bloqueadas, desde Oracle-Base podemos utilizar este script para poder detectar este tipo de problemas


-- File Name : http://www.oracle-base.com/dba/monitoring/locked_objects.sql
-- Author : DR Timothy S Hall
-- Description : Lists all locked objects for whole RAC.
-- Requirements : Access to the V$ views.
-- Call Syntax : @locked_objects
-- Last Modified: 15/07/2000


SET LINESIZE 500
SET PAGESIZE 1000
SET VERIFY OFF
COLUMN owner FORMAT A15
COLUMN username FORMAT A20
COLUMN object_owner FORMAT A15
COLUMN object_name FORMAT A25
COLUMN locked_mode FORMAT A15
SELECT b.inst_id AS id,
b.session_id AS sid,
NVL(b.oracle_username, '(oracle)') AS username,
a.owner AS object_owner,
a.object_name,
Decode(b.locked_mode, 0, 'None',
1, 'Null (NULL)',
2, 'Row-S (SS)',
3, 'Row-X (SX)',
4, 'Share (S)',
5, 'S/Row-X (SSX)',
6, 'Exclusive (X)',
b.locked_mode) locked_mode,
b.os_user_name
FROM dba_objects a,
gv$locked_object b
WHERE a.object_id = b.object_id
ORDER BY 1, 2, 3, 4;
SET PAGESIZE 14
SET VERIFY ON

Datos de la PGA

Lunes, 11 de agosto de 2008 Sin comentarios

Aca dejo un script bastante bueno para ver informacion de la PGA, los creditos a Database Journal

set lines 160 pages 60 echo off
col value format 999,999,999,999,999

SELECT NAME, VALUE FROM v$pgastat;

SELECT
low_optimal_size/1024 "Low (K)",
(high_optimal_size + 1)/1024 "High (K)",
optimal_executions "Optimal",
onepass_executions "1-Pass",
multipasses_executions ">1 Pass"
FROM v$sql_workarea_histogram
WHERE total_executions <> 0;

SELECT
optimal_count "Optimal",
round(optimal_count * 100 / total,2) "Optimal %",
onepass_count "OnePass",
round(onepass_count * 100 / total,2) "Onepass %",
multipass_count "MultiPass",
round(multipass_count * 100 / total,2) "Multipass %"
FROM (
SELECT
DECODE (SUM(total_executions), 0, 1, SUM(total_executions)) total,
SUM(optimal_executions) optimal_count,
SUM(onepass_executions) onepass_count,
SUM(multipasses_executions) multipass_count
FROM v$sql_workarea_histogram
-- Limits consideration of queries with LOW_OPTIMAL_SIZE limit <64K WHERE low_optimal_size > 64*1024);

SELECT
ROUND(pga_target_for_estimate /(1024*1024)) "Target (M)",
estd_pga_cache_hit_percentage "Est. Cache Hit %",
estd_overalloc_count "Est. Over-Alloc"
FROM V$PGA_TARGET_ADVICE;

Automatizar el proceso de estadisticas de un esquema

Lunes, 11 de agosto de 2008 Sin comentarios

En varias ocaciones me ah sucedido que se debe automatizar el proceso de actualización de estadisticas del motor o bien de un esquema en particular, suponiendo que en dicho esquema estan los datos mas importantes y que mas utiliza el cliente.-

Para esto es posible dejar en un crontab (Unix/Linux) o bien en una tarea programada (Windows) un pequeño script que identidique todas las tablas de un esquema, elimine las estadisticas antiguas y luego las actualice, para esto les dejo el siguiente script que hace ésta labor.-

Por crontab puede quedar programado para alguna hora ya sea en la noche o bien durante el fin de seman…

#!/bin/bash
export NLS_LANG=spanish_spain.WE8ISO8859P1
export PATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/oracle/bin::/opt/j2sdk1.4.1/bin:/opt/oracle/product/9.2.0/bin
export ORACLE_HOME=
export ORACLE_SID=
RUTA=export ORACLE_SID ORACLE_HOME RUTA
rm -f $RUTA/ejecuta_estadisticas_esquema.sql
#Genera script SQL para estadisticas ...
sqlplus user/pass @$RUTA/estadisticas_esquema.sql
#Ejecuta las estadisticas
sqlplus user/pass @$RUTA/ejecuta_estadisticas_esquema.sql

Detalle script estadisticas_esquema.sql

set pages 0
set feed off
set head off
set lines 90
spool /ejecuta_estadisticas_esquema.sql
select rtrim(a.an1||' delete statistics;'),rtrim(b.an1||' compute statistics;')
from (select 'analyze table '|| a.owner ||'.'|| a.table_name as an1 from dba_tables a
where owner =''
) a
,(select 'analyze table '|| b.owner ||'.'|| b.table_name as an1 from dba_tables b
where owner =''
) b
where a.an1 = b.an1
;
select 'exit' from dual
;
spool off
exit

identificar objetos con muchos extents

Lunes, 11 de agosto de 2008 Sin comentarios

Aca dejo un script para poder identificar que objetos son los candidatos para una mantencion de espacios, para lo cual es necesario determinar que objetos son los que han tenido mas extents por lo cual se podría reducir su espacio.-

select owner, segment_name, tablespace_name, segment_type, bytes/1024/1024 MB, extents
from dba_segments
where extents > 100
order by extents desc

Generar Export/Import compresos

Lunes, 11 de agosto de 2008 Sin comentarios

Revisando algunos sitios de Oracle me percaté que en la web de Oracle-Books hay muchos tips bastante buenos de los que me gustaría destacar la generación de Export directamente a archivos compresos y lo mismo para la importación de data, algo bastante útil cuando no hay mucho espacio disponible

para realiza un export de datos a un archivo compresos:
/etc/mknod pipename p
compress < pipename > newfilename.Z &
exp / file=pipename
rm -f pipename

para realiza un import de datos a un archivo compresos:
/etc/mknod pipename p
uncompress < newfilename.Z > pipename &
imp / file=pipename
rm -f pipename

Determinar el comportamiento de una instancia en el tiempo (STATPACK)

Viernes, 8 de agosto de 2008 Sin comentarios

una buena herramienta que te indica el comportamiento de una instancia es el llamado StatPack, esta utilidad se utiliza mucho para realizar Tuning de BD.-

Esta utilidad lo que hace es que realiza una comparación entre Snapshot o fotos de la BD que se van tomando cada cierto tiempo, los snapshot a medida que se van acumulando en el tiempo se debe tener cuidado ya que van a consumir mas espacio en el tablespace en donde se guarden

Aca dejo algunos script basicos para instalar y capturar.-

REPORTE STATPACK

Para Unix/Linux
connect perfstat/password
@?/rdbms/admin/spreport.sql

Para Windows
connect perfstat/password
@%ORACLE_HOME%/rdbms/admin/spreport.sql

connect perfstat/password
define begin_snap=<1>
define end_snap=<2>
define report_name=
@?/rdbms/admin/spreport.sql

connect perfstat/password
define begin_snap=<1>
define end_snap=<2>
define hash_value=
define report_name=
@spreport.sql

INSTALACION STATPACK

Este es el script que se utiliza y que viene con la BD para instalar el statpack, tener cuidado si se va a utilizar un tablespace exclusivo o bien alguno ya existente, por lo general se utiliza el SYSAUX, pero recomendacion es mejor utilizar un tablespace exclusivo

connect /as sysdba
define default_tablespace='SYSAUX'
define temporaly_tablespace='TEMP'
define perfstat_password= @?/rdbms/admin/spcreate.sql
undefine perfstat_password

CAPTURAR STATPACK

connect perfstat/password
execute statspack.snap;

variable snap number;
begin :snap := statspack.snap; end;/
print snap