Privilegios

Buenos dias a todos

Queria pedirles ayuda. Hace poco retorne a mi trabajo despues de haber estado con salida de maternidad y me encuentro con la sorpresa que en la maquina que trabajabamos la ordenaron y clasificaron para tener un mayor control. asignando roles entre otras cosas.. El problema es que me he encontrado con limitantes que a ratos me dejan como animacion japonesa con la nube sobre la cabeza... Porque no tengo privilegios en mi propio esquema para compilar procedimientos almacenados.(siendo mi perfil de desarrolladora). Existe alguna forma de que yo pueda ver que privilegios tengo y asi poder enviar un listado de habilitacion.. Y no estar a empujones programando?

Muchas Gracias

Lo mejor sería que pudieras consultar las vistas DBA_TAB_PRIVS, DBA_SYS_PRIVS y DBA_ROLE_PRIVS del diccionario de datos para ver los provilegios asignados a cualquier usuario o rol, pero como seguro que no tienes privilegios de DBA para consultar estas vistas hay otras específicas para el usuario con el que estás conectado, que son USER_TAB_PRIVS, USER_SYS_PRIVS y USER_ROLE_PRIVS.

 

Para consultar todos los objetos sobre los que tu usuario tiene privilegios, y qué GRANTs tiene:

SELECT * FROM USER_TAB_PRIVS;

Para consultar todos los privilegios de sistema que tiene tu usuario:

SELECT * FROM USER_SYS_PRIVS;

Por último, para consultar los roles que tiene asignados tu usuario:

SELECT * FROM USER_ROLE_PRIVS;

 

Espero que las consultas te sean de ayuda,

 

Ya probe y me resulto lo siguiente ..la verdad me aclara  porque no puedo ver ni acceder a mas objetos..

Hare mi listado jeje para comenzar con el pedido de permisos.... Muchas gracias

 

Ejecute los select que Carlos que facilito y las cabeceras de informacion son las siguientes(con negrita)...ademas les agregue parte de llos privilegios que tengo como usuario.

--select * from USER_TAB_PRIVS

GRANTEE - OWNER   -  TABLE_NAME  - GRANTOR - PRIVILEGE - GRANTABLE - HIERARCHY
ALEM       - VENTAS   - VEN_VENTAS   - VENTAS  - SELECT        - NO                - NO

--select * from USER_SYS_PRIVS

USERNAME - PRIVILEGE                     -       ADMIN_OPTION
ALEM          - CREATE PROCEDURE     - NO
ALEM          - CREATE SEQUENCE      - NO
ALEM          - CREATE TABLE              - NO


--select * from USER_ROLE_PRIVS

USERNAME - GRANTED_ROLE -  ADMIN_OPTION - DEFAULT_ROLE  - OS_GRANTED
ALEM          -  PL_DES              -  NO                     - YES                    - NO

Por lo que veo sí que tienes permisos para crear procedures en tu schema, y te han asignado un rol de desarrollador.

¿No será que el Procedure que intentas crear accede a un objeto sobre el que tu usuario no tenga privilegios, de otro esquema, por ejemplo?

 

En respuesta a por Carlos

Si efectivamente mirandolo ahora tengo varios permisos. Pero inicialmente parti en 0.

Llamando constantemente ald DBA para decirle ... Sabes no puedo crear tablas.. ok no te preocupes yo te voy a dar permisos.. llamando de nuevo sabes no puedo crear procedimientos.. ok no te preocupes yo te voy a dar permisos..Sabes no puedo compilar.. no puedo crear sequencias, y asi me la lleve buena parte ...

Hasta que quise hacer debug y me encontre conque el DBA estaba visitando a clientes y no pudo ayudarme ..ahi tuve que esperar pacientemente a que llegara pasada la tarde y yo desarrollando a ciegas...

Por eso en la mañana siguiente varios me intentaron apoyar.. Y yo recurri a ustedes para poder tener algo mas en la mano y solicitar con mas propiedad mas permisos sobre los objetos o esquemas donde normalmente me muevo..

Y aca consiguieron darme algunos jeje entrando como DBA.. Pero con las queritas que me enseñaste puedo ahora solicitarle exactamente los permisos que me van faltando sobretodo para los nuevos requerimientos que me estan llegando.

 

Muchas gracias Carlos

 Hola....antes que nada, super buena la información que proporcionan....yo tengo un problema un poco parecido al de AleMarch..... Lo que pasa es que me pasarón una conexión de oracle, me dicen que si puedo crear stored procedures pero en cuanot quiero correr uno muy basico.... (select * from X) obtengo un error de privilegios....corrí los comandos que mostró Carlos...el primero (USER_TAB_PRIVS) y obtengo los mismos permisos que Ale en mi tabla, corrí el segundo (USER_SYS_PRIVS) pero con este no obtengo ningún registro y al correr el 3ro (USER_ROLE_PRIVS) también obtengo los mismos permisos que Ale....Carlos...sabes a qué puede deberse esto? No sé si en verdad puedo crear stored procedures o más bien mi stored esta mal :(

 

El stored procedure que estoy corriendo es:

  create procedure p1  as begin select cve_vol from desa01.Producto;   De antemano, muchas gracias :)

 

En respuesta a por Irmool_01

Si no obtienes ningún registro en USER_SYS_PRIVS es que no tienes ningún privilegio de sistema. Para poder crear procedures deberías tener al menos el privilegio CREATE PROCEDURE, por lo que sí que parece que el problema es que te faltan los permisos. Seguramente vas a tener que hablar con tu DBA :)

 

 Muchas gracias Carlos, en efecto, ya me comentaron que no tengo permisos y me cambiaran a una Bd que no sea de producción :P

 

Aún así, muchas gracias por tu ayuda.

 

Saludos,

Bue día, Me gustaría saber de qué maner puedo crear un rol que tenga todos los permisos sobre un esquema (Este esquema tiene 100 tablas) y después asignar ese rol a un nuevo usuario. Muchísimas gracias. Saludos

En respuesta a por Ale9810 (no verificado)

Buenos días,

Primero tienes que crear el rol, vamos a llamarle "mi_rol":

CREATE ROLE mi_rol;

Después asígnale los permisos. Para una tabla "mi_tabla" sería algo así:

GRANT select, insert, update, delete ON mi_tabla TO mi_rol;

o más corto:

GRANT all ON mi_tabla TO mi_rol;

 

Y para crear las sentencias de asignación de permisos para todas las tablas de un esquema "mi_esquema" puedes hacer esto:

SELECT 'GRANT select, insert, update ON '|| t.owner||'.'||t.table_name ||' TO mi_rol;'
FROM all_tables t WHERE owner = 'mi_esquema';

 Finalmente, para asignar el rol a un usuario:

GRANT mi_rol TO usuario;

 

hola a todos! alguien me podria decir como saber que privilegio tengo sobre una BD, ya que no puedo agregar un campo nuevo a una tabla existente.. gracias

Buenas,

creo un rol con permisos sobre varios objetos de un esquema y cuando se lo asigno a un usuario este no puede acceder a los mismos.

En cambio si se los asigno directamente al usuario funciona correctamente, alguien sabe porque puede pasar esto.

GRacias de antemano