top of page
tacobrigepara

Como Borrar Un Job En Oracle que se repite cada día



ApexSQL Clean puede ayudar a determinar todas las dependencias en una base de datos, las dependencias con objetos en una base de datos externa o proyectos .NET, Delphi, C++ y ASP. También analiza las dependencias de los objetos de la base de datos SQL, así como el impacto de los cambios potenciales y eliminaciones en su base de datos SQL, y determina las interrelaciones de objetos dentro de la base de datos, entre diferentes bases de datos, scripts e incluso aplicaciones.


En el pasado, las utilidades de exportación (exp) e importación (imp) tenían tres modos: Se podía exportar una sola tabla y sus dependencias, como los índices, se podían exportar todos los objetos que pertenecen a un usuario específico, o exportar la base de datos completa. Pero el tema de los tablespaces eran un problema.




Como Borrar Un Job En Oracle




Una vista materializada es como una vista común, pero almacena el resultado de la consulta y la materializa como un objeto persistente en la base de datos. La consulta puede hacerse de tablas, vistas o incluso otras vistas materializadas.Por definición, en una vista materializada no se permite realizar inserciones, actualizaciones ni borrados.


Para ello oracle tiene una serie de funciones tales como:REGEXP_REPLACE: Busca un patrón en la columna y reemplaza cada ocurrencia con el patrón especificado. Ej: Reemplazar los espacios por comas,


Y condiciones como:REGEXP_LIKE: Se usa en la cláusula WHERE y busca un patrón en la columna que se le indique. Devuelve las filas que coincidan con la expresión regular indicada. También se puede usar como constraint o como función PL/SQL devolviendo un boolean. Ej: filtramos personas cuyo apellido sea Steven or Stephen ,


For deleting listener, remote oracle dba is using oracle's default GUI tools. We can delete listener using Net Manager or Net Configuration Assistant. It is very easy to manage listener utility using said GUI tools of Oracle.


Al crear una instancia de Amazon RDS for Oracle Database, se crea el usuario maestro predeterminado y se conceden los permisos de usuario máximos en la instancia de base de datos con algunas limitaciones. Utilice esta cuenta para cualquier tarea administrativa, como crear cuentas de usuario adicionales en la base de datos. Como Amazon RDS es un servicio administrado, los usuarios de SYS y SYSTEM no se pueden usar de forma predeterminada.


Si no queremos eliminar todos los registros, sino solamente algunos, debemos indicar cuál o cuáles; para ello utilizamos el comando "delete" junto con la clausula "where" con la cual establecemos la condición que deben cumplir los registros a borrar.


Bueno esta vez, escribo mi experiencia y sucesos que me pasaron en un proceso de migración o cambio de versión del software que actualmente administro. Cuando comencé con el proceso de migración de Oracle 10g a versión 11g, observe con extrañeza que el tablespace system tenia un crecimiento hasta del 500% en comparación con lo que tenia en versión 10g. Indagando y buscando cual era el posible problema, identifique que las tablas que manejan auditoria como las FGA_LOG$ y la AUD$ tenían un crecimiento exponencial, pero bueno encontré la solución a este tema y eso es lo que explicare a continuación.1. Verificamos la ubicación de estas tablas, con el fin de crear otro tablespace y mover estos objetos a ese nuevos.select x.table_name, x.tablespace_name, y.bytesfrom dba_tables x, dba_segments ywhere x.table_name in ('AUD$', 'FGA_LOG$')and x.table_name=y.segment_nameORDER BY x.table_name;TABLE_NAME TABLESPACE_NAME BYTES------------------------------ ------------------------------ ----------AUD$ SYSTEM 34603008FGA_LOG$ SYSTEM 251658240SYS@DESA >2. Debemos crear un tablespace nuevo para, pasar estos objetos a ese nuevo datafile;CREATE SMALLFILETABLESPACE "AUDITORIA"LOGGINGDATAFILE '/ruta/datafile/AUDIT.DBF' SIZE 8192M REUSE AUTOEXTEND ON NEXT 1024M MAXSIZE 12288M EXTENT MANAGEMENT LOCALSEGMENT SPACE MANAGEMENT AUTO;Tablespace creado.SYS@DESA >3. Ahora utilizamos el packague DBMS_AUDIT_MGMT, para mover estos objetos, este tiene algunos parametros, como el de set_audit_trail_location.BEGINDBMS_AUDIT_MGMT.set_audit_trail_location(audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD,audit_trail_location_value => 'AUDITORIA');END;/Procedimiento PL/SQL terminado correctamente.Ahora verificamos que efectivamente se realizo el transpaso de estos objetos.SELECT table_name, tablespace_nameFROM dba_tableswhere table_name in ('AUD$', 'FGA_LOG$')ORDER BY table_name;TABLE_NAME TABLESPACE_NAME------------------------------ ------------------------------AUD$ AUDITORIAFGA_LOG$ AUDITORIAAhora que hemos realizado el cambio, es necesario realizar una buena administración y depuración de estas tablas, para ello es necesario verificar los parámetros que tiene nuestra DB y debemos ejecutar el siguiente script.COLUMN parameter_name FORMAT A30COLUMN parameter_value FORMAT A20COLUMN audit_trail FORMAT A20SELECT * FROM dba_audit_mgmt_config_params;PARAMETER_NAME PARAMETER_VALUE AUDIT_TRAIL------------------------------ -------------------- --------------------AUDIT FILE MAX SIZE 10000 XML AUDIT TRAILAUDIT FILE MAX SIZE 10000 OS AUDIT TRAILAUDIT FILE MAX AGE 5 OS AUDIT TRAILAUDIT FILE MAX AGE 5 XML AUDIT TRAILDB AUDIT TABLESPACE AUDITORIA STANDARD AUDIT TRAILDB AUDIT TABLESPACE AUDITORIA FGA AUDIT TRAILDB AUDIT CLEAN BATCH SIZE 10000 STANDARD AUDIT TRAILDB AUDIT CLEAN BATCH SIZE 10000 FGA AUDIT TRAILOS FILE CLEAN BATCH SIZE 1000 XML AUDIT TRAILOS FILE CLEAN BATCH SIZE 1000 OS AUDIT TRAIL10 filas seleccionadas.SYS@DESA >En esta parte solamente nos interesan los parámetros de limpieza, con el fin de realizar la correcta depuración de esta información. Para eso debemos ejecutar lo siguiente:BEGIN DBMS_AUDIT_MGMT.init_cleanup( audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL, default_cleanup_interval => 24 /* hours */);END;/Procedimiento PL/SQL terminado correctamente.SYS@DESA >Bueno, ahora que hemos parametrizado el AUDIT_TRAIL, es necesario purgar los registros de auditoría que hay hasta el momento, para ello el pakcage DBMS_AUDIT_MGMT nos permite purgar todos los registros antes de la fecha señalada, el procedimiento SET_LAST_ARCHIVE_TIMESTAMP, que acepta tres parámetros.DECLAREv_timestamp DATE := sysdate -21;BEGINDBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS,LAST_ARCHIVE_TIME => v_timestamp );DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_XML,LAST_ARCHIVE_TIME => v_timestamp );DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,LAST_ARCHIVE_TIME => v_timestamp );DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD,LAST_ARCHIVE_TIME => v_timestamp );END;/Procedimiento PL/SQL terminado correctamente.Si deseamos realizar un purgar manualmente estos registros, podemos realizarlo asi:set linesize 150col audit_trail format a50col last_archive_ts format a80SELECT audit_trail, last_archive_ts FROM dba_audit_mgmt_last_arch_ts;AUDIT_TRAIL LAST_ARCHIVE_TS-------------------------------------------------- --------------------------------------------------------------------------------OS AUDIT TRAIL 06-JUN-12 09.01.24.000000 AM -05:00XML AUDIT TRAIL 06-JUN-12 09.01.24.000000 AM -05:00STANDARD AUDIT TRAIL 06-JUN-12 09.01.24.000000 AM +00:00FGA AUDIT TRAIL 06-JUN-12 09.01.24.000000 AM +00:00Contamos los registros que tiene la tabla aud$.SYS@DESA > SELECT COUNT(*) FROM aud$; COUNT(*)---------- 194334BEGIN DBMS_AUDIT_MGMT.clean_audit_trail( audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD, use_last_arch_timestamp => TRUE);END;09:25:55 6 /Procedimiento PL/SQL terminado correctamente.SYS@DESA > SELECT COUNT(*) FROM aud$; COUNT(*)---------- 7898Si queremos automatizar esta limpieza, podemos realizar un JOB que se ejecute esta limpieza, debemos ejecutar lo siguiente:BEGIN DBMS_AUDIT_MGMT.create_purge_job( audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL, audit_trail_purge_interval => 24 /* hours */, audit_trail_purge_name => 'PURGE_ALL_AUDIT_TRAILS', use_last_arch_timestamp => TRUE);END;/Para comprobar la pametrizacion del JOB, lo validamos asi:SELECT job_actionFROM dba_scheduler_jobsWHERE job_name = 'PURGE_ALL_AUDIT_TRAILS';JOB_ACTION---------------------------------------------------------BEGIN DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(15, TRUE); END;Fuentes: -base.com/articles/11g/auditing-enhancements-11gr2.php#moving_db_audit_trail _AUDIT_MGMT_CONFIG_PARAMS


Bueno, esta vez escribo por que en varias ocasiones tuve problemas con la base de datos que actualmente administro, y esto debido a que cuando se generaba demasiadas transacciones esto genera mucho archivos de archive, lo que tocaba era entrar al RMAN y borrar todo el archive generado arriesgando posible perdida de datos (RMAN> delete archivelog until time 'sysdate + (11+00/60)/24';). Pero esto se acabo, me he puesto a investigar y encontre la foma de que esto no me vuelva a pasar, y la idea es utilizar todas las posible formas de solución que Oracle nos ofrece y es habilitando rutas en LOG_ARCHIVE_DEST_n. Para ello debemos realizar lo siguiente:1. Debemos verificar en que modo se encuentra nuestra DB.SYS@TEST > archive log listModo log de la base de datos Modo de ArchivadoArchivado automatico ActivadoDestino del archivo USE_DB_RECOVERY_FILE_DESTSecuencia de log en linea mas antigua 193951Siguiente secuencia de log para archivar 193953Secuencia de log actual 193953SYS@TEST >2. Verificamos, como se encuentra actualmente, nuestro ambiente.SYS@TEST > show parameter LOG_ARCHIVE_DEST_1NAME TYPE VALUE------------------------------------ ----------- ------------------------------log_archive_dest_1 string LOCATION=USE_DB_RECOVERY_FILE_DEST MANDATORY REOPEN=3003. Listo modificamos el parametro LOG_ARCHIVE_DEST_1, para indicarle cual es la segunda ruta opcional.SYS@TEST > ALTER SYSTEM SET "LOG_ARCHIVE_DEST_1"='LOCATION=USE_DB_RECOVERY_FILE_DEST MANDATORY MAX_FAILURE=1 NOREOPEN ALTERNATE=LOG_ARCHIVE_DEST_2' scope=both;Habilitamos el espacio de trabajo (LOG_ARCHIVE_DEST_1).SYS@TEST > ALTER SYSTEM SET "LOG_ARCHIVE_DEST_STATE_1"=ENABLE scope=both;Habilitamos el espacio de trabajo No.2 (LOG_ARCHIVE_DEST_2).SYS@TEST > ALTER SYSTEM SET "LOG_ARCHIVE_DEST_2"='LOCATION=/u06/flash_recovery_area/PROD MANDATORY' scope=both;Y ahora cambiamos el estado de espacio de trabajo No.2.SYS@TEST > ALTER SYSTEM SET "LOG_ARCHIVE_DEST_STATE_2"=ALTERNATE scope=both;Bueno, hasta aquí no tenemos ningún problema, pero cuando se llena el espacio de trabajo No.1 de los Online Redo Logs (Archivos de Archive), el espacio de trabajo No.2 queda listo para trabajar si hemos realizados los pasos anteriormente configurados. Este cambio oracle lo hace permanente, por esa razón cuando suceda este evento, es necesario solucionar el problema de espacio en el destino No.1, y es necesario revertir la configuración que hace Oracle para que todo quede en su normalidad. Por eso necesitamos realizar ejecutar lo siguiente:SYS@TEST > ALTER SYSTEM SET "LOG_ARCHIVE_DEST_STATE_1"=ENABLE scope=both;SYS@TEST > ALTER SYSTEM SET "LOG_ARCHIVE_DEST_STATE_2"=ALTERNATE scope=both; 2ff7e9595c


0 views0 comments

Recent Posts

See All

Commentaires


bottom of page