Creación de esquemas en Oracle

No replies
Preparando imágenes virtuales de VMWare ESXi para hacer pruebas de software en mi servidor
Imagen de carlos
User is online Conectado
Joined: 28/12/2005
puntos: 259
Versión para impresión

Este tema es para recoger comentarios acerca de la creación de nuevos esquemas en Oracle, creación de tablespaces, usuarios, asignación de permisos, etc.

Anonimo (no verificado)

Un esquema es un owner o un user ???

Preparando imágenes virtuales de VMWare ESXi para hacer pruebas de software en mi servidor
Imagen de carlos
User is online Conectado
Joined: 28/12/2005
puntos: 259

El esquema lo componen todos los objetos propiedad de un usuario, en el ejemplo el User APP será el Owner de todas las tablas, índices, secuencias, etc que cree, y todos estos objetos formarán su esquema.

Carlos Fernández

Analista de sistemas

José (no verificado)

Tengo una Instancia en Oracle 10g, con varios esquemas, y necesito que uno de ellos pueda ver y consultar todas las tablas de todos los otros usuarios o esquemas.

¿como puedo hacer esto?

Preparando imágenes virtuales de VMWare ESXi para hacer pruebas de software en mi servidor
Imagen de carlos
User is online Conectado
Joined: 28/12/2005
puntos: 259

Para conceder permisos de consulta a este usuario sobre todas las tablas de los demás esquemas lo mejor es que utilices el diccionario de datos para crear los permisos. Entra con un usuario de sistema (SYS o SYSTEM) que 'vea' todas las tablas y ejecuta una sentencia como esta:

select 'Grant select on '|| t.owner||'.'||t.table_name ||' to usuario;'
from all_tables t
where owner not like '%SYS%';

Si quieres, en el artículo Construcción de scripts con ayuda del diccionario puedes consultar cómo crear un script con estas sentencias y lanzarlo desde la linea de comandos.

Otra opción sería asignar al usuario el rol SELECT_CATALOG_ROLE, o darle permisos de SELECT ANY DICTIONARY, pero con la que te propongo puedes restringir los permisos a lo que quieras en la misma select si, por ejemplo, no te interesa que el usuario tenga acceso a las tablas de sistema.

Carlos Fernández

Analista de sistemas

Esper (no verificado)

El Schéma es un user...

Anonimo (no verificado)

Entonces puedo entender que la conexion seria  la siguiente.

Usuario: APP

Password: APPPWD

Base de Datos: APPDAT

Estos seran mis parametros desde mi toad o pl/sqldev no es asi? o me equivoco?

 

Saludos.

Henry

Preparando imágenes virtuales de VMWare ESXi para hacer pruebas de software en mi servidor
Imagen de carlos
User is online Conectado
Joined: 28/12/2005
puntos: 259

Los datos del usuario y el password serían correctos, pero APPDAT es el tablespace, que no tiene nada que ver con el nombre de la base de datos.

El tablespace es el lugar donde se crean los objetos de uno o varios usuarios, y una base de datos tiene varios tablespaces. En este caso, al crear el usuario, le dices que todos los objetos (tablas, índices, procedures, etc.) que cree este user lo haga por defecto sobre el tablespace APPDAT.

El nombre de la base de datos lo puedes encontrer en el fichero tnsnames.ora, que estará en el directorio donde se haya instalado esta base de datos.

Es recomendable crear un tablespace para cada usuario que vaya a crear objetos, pero si te lo quieres ahorrar, si no especificas nada la base de datos utiliza el tablespace USERS como tablespace por defecto para cada nuevo usuario que se crea.

Manuel (no verificado)

Carlos, que tal, evidentemente sabes bastante de oracle. Tengo 1 esquema creado para dos usuarios:

 

Esquema: x

Usuario: Y

Usuario: YY

 

Uso un soft que se conecta a la base de datos, es un soft de piping, pero la pregunta es, como se conectan estos dos usarios

a la base de datos??? les instalo cliente de oracle, pero cuando pongo en sqlplus, el nombre de usurario: Y y la pass asignada me dice que no tiene privilegios, error ORA-01031? via toad es mejor??

 

Slds compas y gracias de antemano

Preparando imágenes virtuales de VMWare ESXi para hacer pruebas de software en mi servidor
Imagen de carlos
User is online Conectado
Joined: 28/12/2005
puntos: 259

Hola Manuel, la mejor prueba es lo que hagas desde SQLPLUS.

Si te da ese error significa que estos usuarios no tienen permisos para conectar a este esquema. Supongo que especificas el esquema en la conexión, no?
En tu caso:

$ sqlplus Y/passwd@x

Si esto está bien también podría ser que los usuarios no tuvieran permisos de conexión. Asegurate de haberles asignado antes los roles CONNECT y RESOURCE con un usuario DBA de la BD:

GRANT "CONNECT" TO "Y";
GRANT "RESOURCE" TO "Y";