Oracle - Lio con creacion de usuarios

 
Vista:

Lio con creacion de usuarios

Publicado por augusto_jaramillo (6 intervenciones) el 06/01/2005 15:07:08
Hola amigos...

He creado una base de datos Oracle 10G, He creado el esquema y con el usuario propietario del esquema he trabajado normalmente (no problem)

He creado un nuevo usuario, le he asignado permisos de conexion (grant connect, resource to nuevouser), le he asignado permisos de seleccion (grant select any table to nuevouser), le he asignado permisos de creacion de sesion (grant create session to nuevouser identified by el_password).

Me logueo con ese usuario y trato de hacer select sobre alguna tabla (select * from la_tabla) y me reporta que la tabla o vista no existe, pero si lo hago identificando el propietario de la tabla me da el resultado que deseo (select * from owner.la_tabla).

Como puedo acceder a las tablas con otros usuarios sin que tenga que indicarle el propietario o usuario que crea las tablas ("owner"."la_tabla")?

Agradezco de antemano sus valiosos aportes

Felicidades pues....
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Lio con creacion de usuarios

Publicado por MiltonR (19 intervenciones) el 06/01/2005 20:38:30
Esto se debe a que ingresas con un usuario este por defecto trata de ver los objetos que estan en su esquema. Como bien mencionas para ver tablas y en general otros objetos es el nombre del esquema. nombre del objeto.
Para solucionar este engoroso tramite lo que debes hacer es crear sinonimos, por ejemplo:

CREATE SYNONYM NOMBRE_TABLE FOR ESQUEMA_PROPIETARIO.NOMBRE_TABLE;

Saludos MiltonR
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Lio con creacion de usuarios

Publicado por augusto_jaramillo (6 intervenciones) el 06/01/2005 23:29:03
Que tal Don Milton,

Agradezco tu respuesta... Lo que me indicas esta bien y canciona, pero es como engorroso ejecutar ese comando para todas las tablas de usuario que hay creadas en la BD, que para mi caso son unas 400 por pocas.

Habra alguna manera de asignar permisos a todas las tablas con un solo comando?

Felicidades pues...

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Lio con creacion de usuarios

Publicado por MiltonR (19 intervenciones) el 07/01/2005 16:23:36
Hola, claro que cuando tienes muchas tablas es un problema y seria engorroso crear de uno en uno sinonimos para tablas, vistas, etc. De lo que se NO hay un comando para hacer esto en un solo paso. Pero tengo un par de selects que son los que utilizo. Espero te sirvan
1. Conectarse al usuario propietario de las tablas,
2. Activar el spool
3. ejecutar el select:
SELECT 'CREATE SYNONYM '||OBJECT_NAME ||' FOR OWNER.'||OBJECT_NAME ||';'
FROM DBA_OBJECTS
WHERE OWNER='OWNER'
AND OBJECT_TYPE IN ('TABLE')
4. desactivar el spool
5. Editar el spool
6. Cambiar de usuario ... al usuario que va a tener los sinonimos y ejecutar el spool que tiene la creacion de synonymos para todas las tablas...

Saludos MiltonR
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Lio con creacion de usuarios

Publicado por augusto_jaramillo (6 intervenciones) el 07/01/2005 23:12:01
Mil Gracias Ingeniero....

Ahora mi pregunta es: que debo hacer para que en mis scripts no tenga que indicar el owner, es decir, para que el segundo usuario al hacer un query sobre una tabla no deba indicar el propietario.

Para mayor claridad, la loguearme con el segundo usuario debo hacer los querys de la siguiente forma:

SELECT * FROM propietario.tabla;

Deseo evitar el uso del "propietario.tabla" y hacerlo simplemente asi: "SELECT * FROM tabla"

Agradezco mucho tu colaboracion

Felicidades pues...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Lio con creacion de usuarios

Publicado por MiltonR (19 intervenciones) el 12/01/2005 15:43:04
Doctor ...Creo que estamos confundidos.....
Para eliminar la referencia al propietario de la tabla, es decir
SELECT * FROM propietario.tabla;

Lo quie debes hacer es crear sinonimos, de esa forma podras referenciar directamente a una tabla sin necesidad de hacer referencia al propietario de la tabla, por ejemplo:
SELECT * FROM propietario.tabla;

Como hacer esto es mucho trabajo si tienes varias tablas.... lo que debe hacer es usar los selects que te envie.... en eso generas el codigo de creacion de sinonimos de un plumazo.

Saludos MiltonR
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar