25/11/10

ORA -00054

Si al ejecutar la sentencia:
LOCK TABLE hr.employees IN EXCLUSIVE MODE NOWAIT;
Nos arroja el ORA-00054 es debido a que no ha podido bloquear la tabla u objeto sin ponernos en la cola de bloqueos. Ello es debido a la clausula NOWAIT hace que lo bloquee inmediatamente sin colas, pero si no puede nos arroja dicho error.

23/11/10

El paquete TEXT_IO

El paquete TEXT_IO permite a Oracle Forms, ya que es un paquet interno de Oracle Forms (y a cualquier otro basado en el sistema CDE) realizar operaciones de lectura y escritura en los archivos del sistema operativo.

El paquete TEXT_IO se encuentra del lado del cliente y no puede tener acceso a los archivos del lado del servidor (a menos que la configuración de la red de ficheros lo permita).

18/11/10

Componentes a medida en CakePHP

Como ya sabemos, un componente en CakePhp es un paquete de logica( clase ) que se va a compartir entre los diferentes controladores.

En este articulo voy a explicar como crear nuestros propios componentes, es decir componentes personalizados. Mas de uno se podra preguntar para que queremos utilizar los componentes, y aqui la explicacion: supongamos que tenemos un calculo que se repite en muchas partes del sistema, en este caso agrupamos la logica en un componente y de esta manera reautilizamos codigo, hacemos mas comprensible el codigo y si algun dia hay que hacer alguna modificacion en el calculo, esta se hara en un solo lado.

14/10/10

Sombras

Ayer me fijé en mi sombra, y pensé ¿realmente es mi sombra o lo soy yo?. Yo soy el que genera mi sombra o es ella la que me genera a mí.

28/9/10

Error 'Security.salt' en CakePHP

Concretamente nos sale este error:
Notice (1024): Please change the value of 'Security.salt' in app/config/core.php to a salt value specific to your application [CORE\cake\libs\debugger.php, line 684]

Notice (1024): Please change the value of 'Security.cipherSeed' in app/config/core.php to a numeric (digits only) seed value specific to your application [CORE\cake\libs\debugger.php, line 688]

Esto se soluciona si nos vamos al fichero app/config/core.php y cambiamos las cadenas que hay en estados lineas:
Configure::write('Security.salt', 'DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi');

Configure::write('Security.cipherSeed', '76859309657453542496749683645');

Se ponen otras de nuestra cosecha y todo correcto. La explicación de esto es que CakePHP utiliza estas cadenas para encriptar y desencriptar, y estas son las que vienen por defecto de tal manera que tendríamos un agujero de seguridad. Por ello nos salta este error.

17/9/10

Tabla periódica de los elementos HTML5

Copio y pego de desarrolloweb.com:
A medida que nos vamos aproximando al momento en que el nuevo estándar HTML 5 se implemente de forma plena, van surgiendo nuevos recursos creados para desarrolladores y diseñadores web con los que mejorar nuestro conocimiento en esta tecnología.

En concreto este nuevo recurso llamado Periodic Table of the Elements, muestra una tabla interactiva con los 104 elementos que figuran en el borrador de HTML5 además de 2 elementos (track y device) propuestos para formar parte y que han sido marcados con un asterisco mientras se decide su aceptación.

Cuando seleccionamos cada uno de los elementos de la tabla aparece una breve descripción en inglés además de uno o más enlaces hasta la página del World Wide Web Consortium (W3C) y otros portales sobre desarrollo web como w3schools o HTML5 Doctor.

Interesados pueden acceder a la Tabla periódica de elementos HTML5 desde joshduck.com.

15/9/10

ORA-38301

Está intentando borrar un objeto que está en la papelera de reciclaje(La papelera de reciclaje de Oracle10g: Recycle Bin)
Si esto se deve a un script generado para borrarlo todo, no debe de incluir los objetos que estén en la papelera de reciclaje.

Páginas con iconos libres

Un pequeña lista de páginas con iconos libres:

  • Gran variedad y catálogo on-line -> Enlace

Create Table INSERT (CTAS)

Con esta sentencia se crea una nueva tabla que se rellena con los datos que se obtengan en la consulta. Un uso simple sería:
CREATE TABLE <table_name> AS
SELECT <column_name, column_name, ..., column_name>
FROM <table_name>;
Fuentes
http://psoug.org/reference/select.html
http://www.orafaq.com/wiki/CTAS
http://www.dba-oracle.com/t_create_table_select_ctas.htm

10/9/10

PRAGMA EXCEPTION_INIT

PRAGMA EXCEPTION_INIT asocia un nombre de excepción con un número de error de Oracle. Con ello se puede interceptar cualquier error ORA- y escribir un controlador específico para él, en lugar de utilizar el controlador OTHERS.

Ejemplo
DECLARE
  deadlock_detected EXCEPTION;
  PRAGMA EXCEPTION_INIT(deadlock_detected, -60);
BEGIN
  NULL; -- Alguna operación que cause un error ORA-00060
EXCEPTION
  WHEN deadlock_detected THEN
    NULL; -- Aquí se trataría el error específico
END;

6/9/10

Estimación de tiempos en un proyecto

1.- Divida el proyecto en tareas.

2.- Enumere las tareas

3.- Decida el tiempo que tardaría en realizar una tarea si supiese exactamente el tiempo que tardaría en efectuarla. Posteriormente utilizaremos este tiempo como unidad de medida.


4.- Decida el riesgo de cada tarea según esta escala:
  • a) He realizado esta tarea y se exactamente como hacerla. Ni siquiera voy a consultar la sintaxis en un libro. No se requiere ninguna investigación.

  • b) He hecho esto antes pero no recuerdo exactamente como encajan las cosas. Seguramente tenga que buscar información.

  • c) He visto que se ha hecho previamente, probablemente “Ricardo” o “Laura” sepan como hacerlo.

  • d) Parece que toda la información esta disponible para resolver el problema, es decir, existe una solución. Sin embargo todavía no se como encontrar el cómo hacerlo.

  • e) No se como hacerlo pero lo voy a intentar.

  • f) Creo que es imposible hacerlo, pero no lo puedo demostrar aun.

5.- Ahora asigne valores a las letras (observar que son potencias de 2):
  • A=1
  • B=2
  • C=4
  • D=8
  • E = 16
  • F = 32
6.- Multiplique su unidad de estimación por el tiempo de cada letra asociada a la tarea. Obtendrá los tiempos medios para sus tareas.

7.- Sume los tiempos totales y tendrá la estimación del tiempo del proyecto.

Por último es interesante comprobar como variaría su tiempo si una tarea de nivel C pasase a nivel B y otra de nivel D pasase a un E. Esto habrá que simularlo con mayor número de elementos cuantas más tareas entren en juego, de esta manera podrá acotar un tiempo máximo y mínimo para el proyecto.

Fuente
Java. Sin errores
Will David Mitchell
Editorial McGraw-Hill

2/9/10

La papelera de reciclaje de Oracle10g: Recycle Bin

A partir de Oracle10g se incorpora esta nueva funcionalidad, denominada FLASHBACK DROP, que se viene a unir a las demás características que conforman el capítulo de las funcionalidades FLASHBACK. La idea es la misma que tienen algunos sistemas operativos con su papelera de reciclaje, es decir, disponer de una ubicación donde colocar los objetos borrados con el fin de poder recuperarlos después. Por supuesto, todo esto se hace de forma transparente para el usuario.

TOOL_ERR

Este paquete proporciona todos los mensajes de error que actualmente se encuentran en la pila de errores de PL/SQL. En el ejemplo de abajo muestra cómo se puede construir el manejador de excepción para mostrar varios mensajes.
BEGIN

....

EXCEPTION
WHEN OTHERS THEN
LOOP
EXIT WHEN TOOL_ERR.NERRORS = 0;
MESSAGE (TO_CHAR(TOOL_ERR.CODE) || ': ' || TOOL_ERR.MESSAGE);
TOOL_ERR.POP;
END LOOP;
END;

ORA-06502

ORA-06502: PL/SQL: error numérico o de valor (PL/SQL: numeric or value error string).
La causa suele ser un cálculo numérico, cadena, conversión o limitación se ha producido un error. Por ejemplo, este error se produce si se hace un intento de asignar el valor NULL a una variable declarada NOT NULL, o si se hace un intento de asignar un número entero mayor que 99 a una variable declarada NÚMERO (2).

Forms developer: Consulta de usuario en tiempo real

Muchas veces es necesario obtener la consulta de un bloque de datos de Oracle Forms, o realizar un EXECUTE_QUERY. El problema reside en que si el usuario ha hecho una consulta, es decir, metido condiciones en de búsqueda, y ejecutamos un EXECUTE_QUERY se pierden esas condiciones.
Para recuperar la última consulta realizada se ejecuta lo siguiente:
GET_BLOCK_PROPERTY(vBloque, LAST_QUERY);
Esta función nos devuelve un VARCHAR2 que consistente en una cadena que contiene la última consulta realizada, incluyendo las secciones de WHERE, ORDER BY, etc.

Detectar dinámicamente los nombres de columna en PL/SQL

El paquete SYS.DBMS_SQL puede ser utilizado para obtener los nombres de columna de una consulta SQL. En el siguiente bloque PL/SQL se detectan los nombre de columna y se imprimen por pantalla.

30/8/10

Generar un PDF en APEX a través de BI publisher

Este procedimiento, encontrado en el foro de APEX, permite generar un PDF de un report layout de APEX a través de una llamada interna al BI publisher.
En este caso nos lo almacena en la tabla pdf_to_mail.

23/8/10

ORA-01720

En la concesión de privilegios (GRANT) a vistas (VIEW) en Oracle se puede producir un error inexperado (ORA-01720) cuando se otorgan privilegios a un usuario sobre una vista que hace referencia a objetos que pertenecen a otro usuario.

Ejemplo

Veamos un ejemplo. Empezamos con un usuario y una tabla simple:

Export e import en Oracle

Para copiar un esquema o la base de datos completa, los pasos básicos son los siguientes:

Validar los datos tabular form en APEX

Para validar un Tabular form de APEX según si se quiere analizar sólo los seleccionados o todo el form:

20/8/10

¿Por qué un blog?

Pues tras probar varios sistemas (Wikimedia, Joomla) me decido por un blog para ir almacenando aquello que considero importante ya se personal o del trabajo.

¿El nombre? pues porque no se me ocurría otro.