miércoles, 9 de junio de 2010

ORACLE, export data pump, script desde S.O. Linux

Este script desde SO Linux dispara un export full de la BD, ideal para un plan de backups programado (aunque export data pump no es la herramienta primaria de backups en Oracle), se debe tener en cuenta que las ubicaciones "HOME" y el mismo script tengan los debidos permisos para el usuario de S.O. asi como el archivo log... Personalmente lo uso como segundo backup programado despues de mi politica de RMAN

export ORACLE_SID=XXXX
export ORACLE_HOME=/XXXXXXXXXXXXXXXXXX
export PATH=$ORACLE_HOME/bin:$PATH
export FECHA_EXP=`date +%d%m%Y`
export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
export EXPORT_HOME=/XXXXXXXXXXXXXXXXXXXXXXXXXXX

expdp user/mypassword dumpfile=xxxxx.dmp logfile=xxxxx.log full=yes

Oracle, listar objetos con mas llamadas a disco

select segment_name Nombre,
segment_type tipo,
extents extensiones,
max_extents max_extenciones
from user_segments seg
where extents > 10
order by extents;

Oracle, visualize los objetos invalidos

select substr(object_name,1,50) object_name, object_type, status from dba_objects where status != 'VALID';

ORACLE, Script (Linux) para reconstruir indices

ORACLE_SID=XXX
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_HOME
export ORACLE_SID
export PATH
sqlplus -s /nolog << EOF
conn / as sysdba

alter index propietario.indice rebuild;

exit
EOF

ORACLE, Compila objetos invalidos

select 'alter ' || decode(object_type, 'PACKAGE BODY', 'PACKAGE', object_type)
|| ' ' || owner || '.' || object_name || ' compile'
|| decode(object_type, 'PACKAGE BODY', ' body;', ';')
from dba_objects
where status='INVALID'
order by owner,
decode(object_type, 'PACKAGE BODY', 'AAA', 'PACKAGE', 'AAB',
substr(object_type, 1, 3)) desc,
object_name;

ORACLE, ver tablas bloqueadas

Este query lista las tablas con bloqueos


SELECT
decode(L.TYPE,'TM','TABLE','TX','Record(s)') TYPE_LOCK,
decode(L.REQUEST,0,'NO','YES') WAIT,
S.OSUSER OSUSER_LOCKER,
S.PROCESS PROCESS_LOCKER,
S.USERNAME DBUSER_LOCKER,
O.OBJECT_NAME OBJECT_NAME,
O.OBJECT_TYPE OBJECT_TYPE,
concat(' ',s.PROGRAM) PROGRAM,
O.OWNER OWNER
FROM v$lock l,dba_objects o,v$session s
WHERE l.ID1 = o.OBJECT_ID
AND s.SID =l.SID
AND l.TYPE in ('TM','TX');

lunes, 7 de junio de 2010

LINUX, Programación de tareas vía crontab

El servicio cron per mite programar o agendar en el tiempo la ejecución de tareas, donde podemos especificar minuto, hora, dia del mes, mes del a#o, dia de la semana y a continuación la línea de comandos que queremos que se ejecute en dicho o dichos momentos.

#crontab -e -- edita el archivo del crontab
#crontab -l -- lista el contenido del archivo del crontab

Las líneas del crontab tienen el siguiente contenido

* * * * * línea de comandos de sistema operacional a utilizar

El primer campo corresponde a los minutos
El segundo campo corresponde a las horas
El tercer campo corresponde al dia del mes
El cuarto campo corresponde al mes (1-enero, 2 –febrero, etc)
El quinto campo corresponde al día de la semana (0-domingo, 1-lunes, 2-martes, 3-miercoles, 4-jueves, 5-viernes y 6-sabado)
El sexto campo corresponde a la línea de comandos que se quiera ejecutar, veamos algunos ejemplos

00 * * * * /home/oracle/script.sh -- ejecuta cada hora a los 00 minutos el contenido del archivo script.sh

30 08 * * 0 reboot -- ejecuta comando “reboot” todos los domingos a las 08:30 horas

*/30 * * * * /home/oracle/script.sh >> --ejecuta el contenido del archivos script.sh al minuto 30 de cada hora

Hay que tener en cuenta que dicha programación es única por usuario y que el usuario en cuestión debe tener el debido permiso de ejecución sobre los scripts y/o comandos a ejecutar.