Entradas

Qué es Oracle Real Application Clusters?

Real Application Clusters es un software que permite utilizar un cluster de servidores ejecutando multiples instancias sobre una misma base de datos. Los archivos de base de datos quedan almacenados en discos física o lógicamente conectados a cada nodo, de modo tal que todas las instancias activas pueden leerlos o escribirlos. El software de RAC maneja el acceso a los datos, de modo tal que los cambios en los datos son coordinados entre las instancias y cada instancia ve imágenes consistentes de la base. El interconnect del cluster permite que las instancias se pasen entre ellas información de coordinación e imágenes de los datos. Esta arquitectura permite que los usuarios y aplicaciones se beneficien de la potencia de procesamiento de múltiples máquinas. La arquitectura RAC también ofrece redundancia; por ejemplo, en el caso de que un nodo quede inutilizado, la aplicación continuará accediendo a los datos via el resto de las instancias disponibles. La base y la instancia Una base de d...

Cursores Explicitos en PL/SQL

Declaración de cursores explicitos Los cursores explicitos se emplean para realizar consultas SELECT que pueden devolver cero filas, o más de una fila. Para trabajar con un cursor explicito necesitamos realizar las siguientes tareas: * Declarar el cursor. * Abrir el cursor con la instrucción OPEN. * Leer los datos del cursor con la instrucción FETCH. * Cerrar el cursor y liberar los recursos con la instrucción CLOSE. Para declarar un cursor debemos emplear la siguiente sintaxis: CURSOR nombre_cursor IS instrucción_SELECT También debemos declarar los posibles parametros que requiera el cursor: CURSOR nombre_cursor(param1 tipo1, ..., paramN tipoN) IS instrucción_SELECT Para abrir el cursor OPEN nombre_cursor; o bien (en el caso de un cursor con parámetros) OPEN nombre_cursor(valor1, valor2, ..., valorN); Para recuperar los datos en variables PL/SQL. FETCH nombre_cursor INTO lista_variables; -- o bien .....

Cursores Implicitos

Declaración de cursores implicitos. Los cursores implicitos se utilizan para realizar consultas SELECT que devuelven un único registro. Deben tenerse en cuenta los siguientes puntos cuando se utilizan cursores implicitos: * Con cada cursor implicito debe existir la palabra clave INTO. * Las variables que reciben los datos devueltos por el cursor tienen que contener el mismo tipo de dato que las columnas de la tabla. * Los cursores implicitos solo pueden devolver una única fila. En caso de que se devuelva más de una fila (o ninguna fila) se producirá una excepcion. No se preocupe si aún no sabe que es una excepcion, le valdrá conocer que es el medio por el que PL/SQL gestiona los errores. El siguiente ejemplo muestra un cursor implicito: declare vdescripcion VARCHAR2(50); begin SELECT DESCRIPCION INTO vdescripcion from PAISES WHERE CO_PAIS = 'ESP'; dbms_output.put_line('La lectura del cursor es: ' || vdescripcion); end; La salida del programa g...

What is stored procedure?

A stored procedure is a schema object. It is a group of SQL and PL/SQL statements. It is created in a user's schema A stored procedure can be used to implement business logic or as a security mechanism, but it is not executed automatically. executed interactively by using an Oracle tool, such as SQL*PLUS, or by calling it explicitly through a SQL statement by calling it in other procedures or triggers. A stored procedure provides better performance because it does not require created and compiled. Three types of parameters can be passed in a stored procedure: IN OUT INOUT

What is trigger?

What is trigger? Trigger is a kind of stored procedure that is executed implicitly when an UPDATE, INSERT, or DELETE statement is can be fired or executed, either before or after the triggering event. A trigger has three parts: A triggering event or statement A trigger restriction A trigger action A triggering event can be a SQL statement, a database event, or a user event. It includes: DML statements like INSERT, UPDATE, and DELETE on a table or view. DDL statements like CREATE, ALTER, and DROP on a schema object. Database operations like LOGON, LOGOFF, SERVERERROR, STARTUP, and SHUTDOWN. A trigger restriction specifies a logical expression. A trigger fires only when this logical expression is TRUE. A trigger action is a procedure that executes when the triggering event is issued and the trigger restriction evaluates Note: Important points regarding triggers: The STARTUP trigger can only be an AFTER event trigger. The SHUTDOWN trigger can only be a BEFO...

Bind Peeking

Imagen
Estoy seguro que muchos de nosotros hemos tenido algun problema de mayor o menor escala con Bind Peeking introducido en Oracle 9i, especialmente los que migramos hace años de 8i a 9i. Lo que hace bind peeking es si se utiliza las variables bind el primer parsing de un cursor (sentencia SQL) la variable se sustituye por el valor real y con ese valor se genera el plan de ejecucion, esto esta bien si todas las consultas usan ese valor que se ha generado el plan. Por ejemplo cuando consultas contra una tabla (con 500000 resgirtos) de facturas y quieres consultar las pendientes (estado), que podria representar solamente el 1% de la tabla, lo ideal es que el optimizador utilice un indice sobre el campo de estado, imaginense el primer parsing de la query es una consulta que en vez de consultar por el estado pendiente va por el estado cobrado, el plan de ejecucion seria un Full Table Scan sin embargo el resto de la gente que van a consultar por el estado pendiente seran las victimas de ese pla...

COALESCE

Devuelve la primera expresión distinta de NULL entre sus argumentos. Sintaxis COALESCE ( expression [ ,...n ] ) Argumentos expression: Es una expresión de cualquier tipo. Tipos de valor devueltos Devuelve el tipo de datos de expression con la precedencia de tipo de datos más alta. Nota: Si todos los argumentos son NULL , COALESCE devuelve NULL . Al menos uno de los valores NULL debe ser NULL con tipo. COALESCE (expression1,...n) es equivalente a esta función CASE : CASE WHEN (expression1 IS NOT NULL) THEN expression1 ... WHEN (expressionN IS NOT NULL) THEN expressionN ELSE NULL END ISNULL y COALESCE , aunque son equivalentes, pueden comportarse de forma diferente. Una expresión que contenga ISNULL con parámetros diferentes de NULL se considera que es NOT NULL , mientras que las expresiones que contienen COALESCE con parámetros que son diferentes de NULL se consideran NULL . En este ejemplo, la tabla pruebas incluye tres columnas con información acerca del sueldo anual d...