miércoles, 7 de octubre de 2009

Administracion de Oracle Sinónimos

Administración de Oracle Sinónimos.
Los sinónimos a veces traen un poco de confusión pero ahi la definicon para que sea claro.
Los Sinónimos en Oracle permite crear un puntero a un objeto que existe en otro lugar para acceder, porque cuando se inicia sesión en oracle busca todos los objetos que está consultando en el esquema. Si no están ahí te darán un resultado de error.
Supongamos que a partir del esquema "RMQ”. Se ejecuta la consulta a la tabla "CLIENTE" y no tiene el sinónimos respectivo mostrara el siguente error,

SQL> SELECT * FROM CLIENTE;
SELECT * FROM CLIENTE
*
ERROR en línea 1:
ORA-00942: la tabla o vista no existe


La tabla existe en la Base de datos, pero no en ese esquema, confirmaremos con la siguiente consulta.

SQL> Select table_name From user_tables Where table_name = 'CLIENTE';
ninguna fila seleccionada

Pero verificaremos en la base de datos y el propietario es un usuario llamado 'FACTU' y nos damos cuenta que la tabla existe en la base de datos.

SQL> Select owner, table_name From dba_tables Where table_name = 'CLIENTE';

OWNER TABLE_NAME
------------------------------ ------------------------------
FACTU CLIENTE


Entonces como vemos que el usuario FACTU es propietario de la tabla CLIENTE. y asumiendo que tiene los permisos de SELECT. Ejecutamos la siguiente consulta, donde nos muestra la información de la tabla.

SQL>SELECT * FROM FACTU.CLIENTE

CODIGO NOMBRE
01 RAUL
02 CARLOS
03 JUAN


Se debe tener en cuenta que hemos agregado la referencia del usuario FACTU para poder acceder.
Un esquema es otra palabra para un usuario. Mientras un usuario es una cuenta a la que se puede acceder; cada usuario también tiene un "esquema" que es un espacio virtual para el usuario para poder crear sus objetos. Entonces "Usuarios" y esquema? Sinónimos por supuesto.
Habría un forma más sencilla, umm; pues ORACLE define de esa forma.
Si nos damos cuenta, entonces tendríamos que estar accediendo con la referencia, que sería un poco incomodo
Más adelante se define la creación y eliminación de sinónimos, y ahí se explica el acceso sin referencia.

Creacion de Sinonimos.
Ante de continuar con el caso. Debemos saber que existe
Sinónimo Privado
Sinónimo Publio

Sinónimo privado para acceder en el mismo esquema
Sinónimo privado para acceder de varios esquema.

Pero se puede tener dos sinónimos al mismo tiempo y con el mismo nombre. por ejemplo 'CLIENTE' en el mismo esquema
Es algo confuso al identificar cual objeto se está utilizando (y creo que particularmente debería haber una forma más clara)
En genera el DBA, por facilidad usa sinónimos publico ello hace que la gestión de la base de datos sea un poco mas fácil sino que tiene problemas de seguridad y rendimiento asociado a ellas.
Por lo tanto tratar de usar menos los sinónimos publico sería conveniente, a menos que usted tenga que hacerlo.

Hay un orden de prioridad con respecto al uso de sinónimos y objetos locales.
1. Objetos locales siempre tendrá acceso en primer lugar
2. Si un objeto local no existe, el objeto con un sinónimo privado tendrá el acceso.
3. Si un objeto con sinónimo privado no existe o el objeto no existe, entonces el sinónimo publico se utilizara.

Ejemplo del caso.
Creando sinónimo privado
SQL> CREATE SYNONYM CLIENTE FOR FACTU.CLIENTE;

Sinónimo creado.


Creando sinónimo publico
SQL> CREATE PUBLIC SYNONYM CLIENTE FOR CLIENTE;

Sinónimo creado.

Debemos tener en cuenta que se puede crear un sinónimo sin que el objeto no exista, como también un objeto con sinónimo asociado se puede quitar sin quitar el sinónimo. Esto puede causar todo tipo de problemas interesantes al DBA. así que con cuidado.

Eliminación de sinónimo

eliminando sinonimo privado
drop synonym CLIENTE;

eliminando sinonimo publico
drop public synonym CLIENTE;

viernes, 25 de septiembre de 2009

Bienvenidos

Hola y a conocer algo mas de oracle