El error ORA-30926 como resultado de una operación Merge

El error ORA-30926 suele producirse cuando se realizan operaciones Merge, y lo normal es que nos deje algo descolocados, ya que la descripción del mismo no da demasiada información sobre lo que está pasando:
ORA-30926: unable to get a stable set of rows in the source tables.

Normalmente este error se produce cuando en la operación Merge a una fila destino que hay que actualizar le corresponden más de una fila en la tabla origen. Como el motor no sabe qué registro escoger devuelve un error. Es un problema de duplicidad en la tabla origen...

Vistas materializadas de Oracle para optimizar un Datawarehouse

Como las cargas de un Data warehouse se realizan de manera periódica, y además es habitual la creación de tablas agregadas para mejorar la eficiencia y tiempo de respuesta de nuestros informes, un recurso de optimización física que puede aportar grandes mejoras es la utilización de vistas materializadas.

La vista materializada no es más que una vista, definida con una sentencia SQL de Oracle, de la que además de almacenar su definición, se almacenan los datos que retorna, realizando una carga inicial y después cada cierto tiempo un refresco de los mismos..

Oracle SQL Developer

SQL DeveloperOracle SQL Developer es la herramienta gráfica gratuita que proporciona Oracle para desarrollar, o simplemente para ejecutar consultas o scripts SQL, tanto DML como DDL, sobre bases de datos Oracle.

La apariencia y funcionalidad es similar a la de otras herramientas de este tipo, por lo que es una buena opción si no tenemos especial predilección por otras herramientas...

GRANT WITH GRANT OPTION: La propiedad transitiva en la concesión de permisos de Oracle

La instrucción grant se utiliza para conceder determinados permisos genéricos o bien permisos sobre objetos a usuarios de bases de datos Oracle.

La sintaxis de GRANT para conceder permisos genéricos es la siguiente:

GRANT [privilegios_de_sistema | roles] 
TO [usuarios | roles |PUBLIC] {WITH GRANT OPTION } 

La sintaxis de GRANT para conceder  premisos sobre objetos es la siguiente:

GRANT [ALL {PRIVILEGES} | SELECT | INSERT | UPDATE | DELETE] ON objeto 
TO [usuario | rol | PUBLIC] {WITH GRANT OPTION} 

 

La sintaxis de GRANT es muy sencilla, y los privilegios los puede conceder el usuario propietario de los objetos, o un usuario con privilegios de concesión de permisos sobre objetos que no son suyos (DBA's).

Lo que quería comentar es la utilización de la opción de grant WITH GRANT OPTION, que permite que el usuario al que le han concedido permisos pueda a su vez concederlos a otros usuarios.

 

Ejemplo de GRANT WITH GRANT OPTION

Mostraré la utilidad de esta opción con un ejemplo:

Construcción de scripts Oracle SQL con ayuda del diccionario

Es bastante habitual si se trabaja con bases de datos que a menudo se tenga que realizar alguna tarea de creación o alteración de estructuras, análisis, recompilación, etc. sobre objetos de la base de datos. Para ello se suele crear un script con numerosas sentencias DDL, en las que la mayoría de las veces lo único que cambia es el nombre del objeto a tratar. En estos casos puede ahorrarnos mucho trabajo la utilización del diccionario de la base de datos para construir estas sentencias dinámicamente..

Oracle Warehouse Builder 10g disponible sin cargo

Si trabajas con bases de datos Oracle y te estás planteando la posibilidad de utilizar una herramienta ETL (Extract, Transform & Load) para la alimentación de un Data warehouse, o simplemente para facilitar integraciones o migraciones de datos, te puede ir muy bien saber que Oracle permite la utilización de la versión básica de su herramienta de ETL Oracle Warehouse Builder 10g Release 2, sin coste adicional de licencias.

Eso sí, has de disponer de al menos una licencia de Oracle Database Standard Edition One, Oracle Database Standard Edition o Oracle Database Enterprise Edition.

Para más detalles, consultar el artículo de Oracle Press Oracle Anuncia la Disponibilidad General de Oracle Warehouse Builder 10g Release 2


Coméntalo en el foro de OWB

Crear BD Oracle en Windows y Linux

En el site www.ajpdsoft.com se publica el manual online Instalacion Oracle 9i sobre Windows, donde se explica paso a paso y con captura de pantallas cómo instalar una BD Oracle 9i sobre windows, cómo solucionar algunos de los errores típicos que suelen aparecer durante la instalación, cómo levantar el listener, comprobar el estado de la base de datos, y alguna cosa más..

Utilización de sinónimos para compartir objetos

Cómo utilizar los sinónimos de Oracle para que un usuario pueda ver/utilizar objetos de un esquema que pertenezca a otro usuario.
Es algo muy sencillo y realmente útil. Lo único que hay que hacer es crear un sinónimo para cada objeto que queramos 'compartir', y después asignar los permisos que interese al esquema que quiere acceder al objeto.

-- Creación del sinónimo
CREATE  PUBLIC SYNONYM "MI_TABLA"
    FOR "YO"."MI_TABLA";

Utilizamos un sinónimo público para compartirlo para diferentes esquemas. La asignación de permisos sí que es específica para cada esquema que tenga que acceder al objeto

-- Asignación de permisos para el usuario EL
GRANT SELECT ON  "YO"."MI_TABLA" TO "EL";
GRANT UPDATE ON  "YO"."MI_TABLA" TO "EL";
GRANT INSERT ON  "YO"."MI_TABLA" TO "EL";
GRANT DELETE ON  "YO"."MI_TABLA" TO "EL";
-- Si se quiere dar acceso sólo de consulta a esta misma tabla para otro usuario, bastaría con hacer
GRANT SELECT ON  "YO"."MI_TABLA" TO "ELLA";

Ahora "EL" y "ELLA" ya pueden trabajar sobre "MI_TABLA" cada uno con los permisos que el propietario de la tabla ha decidido

Documentación online de Oracle database

Si quieres acceder a la documentación online de Oracle 9i puedes hacerlo a través del enlace adjunto. Es la ayuda oficial de Oracle.

Logo Oracle 9iOracle 9i Database Online Documentation
 

Si prefieres consultar la documentación online de Oracle 10g:

Logo Oracle 10gOracle Database 10g Online Documentation

Encontrarás los manuales oficiales de Oracle de todo lo relativo a la base de datos, tanto para principiantes como para usuarios avanzados, y en formato PDF y HTML.

Encuentro especialmente útiles el 2 Day DBA y la SQL Reference, y si tienes o vas a implementar un Datawarehouse sobre una base de datos Oracle ya tardas en descargarte la Data Warehousing Guide 

Y si ya estás utilizando una base de datos Oracle 11g:

Oracle sobre Linux

Tradicionalmente las bases de datos Oracle de una cierta envergadura se han ido instalando sobre servidores con SO UNIX, y también sobre sistemas servidores windows.

Con el reconocimiento de Linux como un SO suficientemente fiable para su utilización en grandes servidores, las grandes corporaciones comienzan a plantearse la utilización de este sistema por la flexibilidad, y acceso al código fuente que ofrece, y por la ausencia de costes en licencias.

Así, una opción que cada vez ganará más adeptos es la instalación de BBDD Oracle sobre Linux.

En el caso de éxito descrito por Oracle en el pdf adjunto se muestra el interesante ejemplo del Grupo Gas Natural, donde se tomó la decisión de migrar la base de datos Oracle que albergaba el Data Warehouse corporativo desde potentes máquinas en plataforma UNIX a servidores más modestos en cluster sobre una plataforma Linux.

Concretamente, la base de datos se migró a Oracle 9i con Real Application Cluster sobre Linux RedHat.