Ir al contenido principal

Entradas

Mostrando las entradas con la etiqueta oracle

Auditoria de Cambios en Oracle

Para poder saber los cambios en cualquier esquema en oracle como cambios de columna en alguna tabla, drop de algun objeto etc. podemos utilizar un trigger. El primer paso es crear una tabla como la que sigue: CREATE TABLE "SYS"."AUDIT_TABLE" ("D" DATE, "OSUSER" VARCHAR2(255) ,"CURRENT_USER" VARCHAR2(255), "HOST" VARCHAR2(255), "TERMINAL" VARCHAR2(255), "OWNER" VARCHAR2(30), "TYPE" VARCHAR2(30), "NAME" VARCHAR2(30), "SYSEVENT" VARCHAR2(30)) Una vez creada creamos el trigger: CREATE OR REPLACE TRIGGER "SYS"."AUDIT_DDL_TRG" AFTER DDL ON DATABASE begin insert into audit_table( d, osuser, current_user, host,terminal, owner, type, name, sysevent ) values( sysdate, sys_context('USERENV','OS_USER') , sys_context('USERENV','CURRENT_USER') , sys_c...

ORA-01555 snapshot too old

Este tipo de errores, se presenta cuando alguna transaccion trata de leer algo que ya no esta en el undo tablespace o en uno de los segmentos de rollback. Puede ser por que el tablespace de undo ya no tuvo espacio para crecer o por que el undo_rentention es insuficiente y oracle sobreescribe datos que ya no entran dentro de la ventana de retencion. La solucion es aumentar el undo_retention hasta para que sea igual al query de mayor duracion que tengamos. Espero que ayude.

Eliminar archive logs antiguos.

Para eliminar viejos archive logs de las BD de oracle en windows, que ya fueron enviados a cinta, podemos utilizar el siguiente script de VBS. Para generar el arhivo vbs simplemente pegar en un notepad el codigo, modificarlo de acuerdo a nuestros requerimientos y guardar con extension vbs. El codigo es: Set objFSO = CreateObject("Scripting.FileSystemObject") objStartFolder = "[ruta a borrar]" set objfolder = objFSO.GetFolder(objStartFolder) Set colFiles = objFolder.Files For Each objFile in colFiles if objFile.DateCreated fullpath = objFile.Path objFSO.DeleteFile(fullpath) end if Next para ejecutarlo en la linea de comandos seria cscript [nombre del script] Saludos.

Como mover un datafile de oracle

Para mover un datafile fisicamente, en este caso es con la base de datos montada. La sintaxis es : alter database rename file '{ruta actual }' to '{ruta nueva}'; Un ejemplo seria: startup mount; alter database rename file '/data/orcl/datafiles/UNTOTBS_b.dbf' to '/u03/data/orcl/UNTOTBS_b.dbf';

Inicio Automatico de la instancia en HPUX

1.- Hay que loguearse al server con el usuario root. 2.- Editar el archivo oratab que esta en /etc/orartab y configurar las instancias que queremos que inicien automaticamente, en el archivo generalmente ya vienen las instancias si se crearon con el DBCA, en caso de que no el formato es el siguiente: SID:ORACLE_HOME:{Y|N|W} Ejemplo: test:/u01/oracle9i/home:Y Lo cual iniciara la instancia test que tiene como home la ruta /u01/oracle9i/home (la ruta es ejemplo solamente, lo recomendable es seguir las reglas del OFA) y la "Y" al final indica que la inicie al iniciar el server, en caso de mantenimientos o cosas por el estilo que no deseemos que inicie hay que cambiar la "Y" por "N". 3.- Crear un archivo que se llame dbora (El codigo viene abajo) en /sbin/init.d Hay que tener cuidado de cambiar las rutas para que refleje el oracle home real y el usuario owner de la instalacion de oracle (en este caso oracle) 4.- Cambiar los privilegios del archivo dbora como s...

ORA-12560: TNS: protocol adapter error

Primero se tiene que revisar que la variable ORACLE_SID este correctamente asignada. Si esta correcta, este error comunmente pasa cuando estando conectado a un server con queremos accesar al SQL PLUS o al SVRMGR localmente utilizando el remote desktop de windows 2000 o 2003. Para evitarlo necesitamos conectarnos DIRECTAMENTE a la consola del servidor. Con windows 2003 hay que ejecutar desde linea de comando "mstsc /console" y conectarnos como normalmente. En windows 2000 necesitamos alguna herramienta como "PC Anywhere" o "Dameware" para conectar directamente a la consola. Espero que esto ayude. Saludos.

ORA-12571: TNS:packet writer failure

Ocasinalmente algunos clientes marcan el siguiente error: ORA-12571: TNS:packet writer failure Para solucionarlo hay que comentar esta linea o modificar el archivo sqlnet.ora de la siguiente manera SQLNET.AUTHENTICATION_SERVICES= (NTS) cambiar a SQLNET.AUTHENTICATION_SERVICES= ( NONE ) El resultado es el mismo si se comenta en el archivo con el simbolo # al principio. Saludos.

Memoria utilizada por Oracle

Ocasionalmente al estar trabajando con oracle, algunos clientes pueden recibir errores de que hace falta memoria, mas sin embargo en el task manager vemos que oracle no esta usando toda la memoria que esta asignada para el proceso. Esto es por el diseño de los servidores de windows a 32 bits, que solo pueden asignar a una aplicacion alrededor de 2 GB (no recuerdo el numero exacto) y como en windows los procesos de usuarios son en realidad Threads del proceso de oracle, toda la memoria es agrupada bajo el proceso de oracle. Para ver la memoria realmente usada por oracle podemos utilizar el siguiente query. select sum(bytes)/1024/1024 Mb from (select bytes from v$sgastat union select value bytes from v$sesstat s, v$statname n where n.STATISTIC# = s.STATISTIC# and n.name = 'session pga memory' ); Este query nos regresa la memoria usada por oracle junto con todos sus procesos de usuario ( y su respectiv...

ORA-12537 Usando un listener de 9i para conectar a una BD 10g

Cuando se tienen 2 instalaciones de oracle con versiones diferentes, hay que utilizar siempre el listener de la version mas nueva. Segun metalink Oracle 8i funcionara con listeners de 8 y de 9 la version 9 con listeners versiones 9 y 10 y la 10 con listeners de 10 y 11. En este caso el error ORA-12537 se presenta cuando se utiliza por ejemplo para una BD de 10g un listener de 9i. En este caso lo que hay que hacer es copiar el listener.ora al directorio network/admin del home de la instalacion de 10 bajar el listener de 9 e iniciar el de 10. Con esto todas las BD de oracle 9 se conectaran usando el listener de la Version 10g. Saludos.

Error al instalar Oracle 10g en Linux

Al estar Instalando Oracle 10g (en mi caso fue con la versión 5 de enterprise linux " unbreakable ") aparece el siguiente error: Checking operating system version : must be redhat -2.1, UnitedLinux -1.0, redhat -3 or SuSE -9 Failed Para solucionarlo simplemente hay que editar el archivo oraparam . ini que se seencuentra en Disk 1/ Install / oraparam . ini En la seccion de [ Certified Versions ] hay que agregar " redhat -5" (sin comillas) y volver a iniciar la instalación . Saludos.

VMware para servidores de pruebas (Cluster MSSQL, RAC ORACLE)

Tener un ambiente de pruebas o de desarrollo algunas veces es difícil de tener y mas aun en la época actual. Puede ser mas difícil el tratar de probar tecnologías de Alta Disponibilidad como RAC en el caso de Oracle o los Clusters de SQL Server. Una Herramienta que he encontrado invaluable para estos casos es VMWare. Este software permite "emular" una maquina corriendo dentro de otra como cualquier aplicacion. Se tienen además varias opciones de conflagración para agregar mas hardware como tarjetas, discos, cpu's memoria etc. Aunque todo esto esta limitado por el hardaware físico que se tenga. En el caso de su servidor tengo varios "servidores" corriendo RAC, Clusters, en ambientes tanto Windows como Linux, todo esto en mi laptop dual core con 2GB de RAM, que cabe dentro de la categoria de una laptop "normal". VMware Server esta disponible para bajar desde su pagina oficial, lo mejor de todo es que es gratis!! Claro no es para producción pero para nues...

Envio de mail desde oracle. (9i,10g)

Que tal, Esta noche les paso un script que nos permitira enviar mails desde oracle, este script funciona en la version 9i y en la 10g (por tiempo solo la pude probar en 9i, pero segun san Oracle tambien funciona en 10g, si alguien lo puede corroborar antes que yo se le agradece.) Este script esta publicado en la pagina de Metalink de Oracle, pero como se que no todo mundo tiene acceso ahí, pues aqui lo comparto con ustedes. Cabe mencionar que no cualquiera puede llegar a mandar mails desde oracle, el requisito es que tengan un servidor desde el cual puedan hacer SMTP Relay, si no lo saben contacten a su administrador de Exchange que les diga que server pueden usar para esto. Si van a mandar attachments necesitan crear un directorio para oracle, para que pueda leer el archivo, por ejemplo create directory 'mi_directorio' as 'c:\logs' El script para el procedimiento para el envio de mails es el siguiente: CREATE OR REPLACE PROCEDURE "SYS"."MAIL_FILES...

Reduccion de Costos. (SQL Developer)

En estos tiempos de "Crisis" (No me gusta usar esa palabra, pero es la que esta de "moda") , me di a la tarea de buscar algún software que estuviera disponible y que fuera gratis o ya por lo menos barato. Al igual que muchos de los DBAs de Oracle soy un usuario de las herramientas de Quest , en especial del famoso "sapo" (TOAD). Quien tenga tiempo trabajando en este ambiente de oracle , sabrá que la interfaz del SQLplus es bastante arcaica y no es nada amigable para trabajar, y mas aun, si eres alguien que viene del mundo del SQL Server, (es raro pero si hay gente asi) . El uso de TOAD para tus consultas era indispensable ademas de todas la monerias que tiene ( graficacion de espacio, trace de sesiones con un solo click, etc) . En fin, el chiste de todo esto fue que, como ya no nos podian aprobar el comprar mas licencias de TOAD para su servidor y para la gente que utiliza oracle (todos los usuarios de oracle querian licencias de toad pues el sql ...