Oracle - Global temporary table

   
Vista:

Global temporary table

Publicado por Santiago (4 intervenciones) el 22/03/2018 10:33:23
Buenos días,

Tengo un problema al intentar crear una tabla temporal en una BBDD 11G.
Entrando como SYS puedo crearla sin problemas, pero si entro con el usuario con el cual necesito crearla me da el siguiente error:

ORA-00604: se ha producido un error a nivel 1 de sql recursivo
ORA-06550: linea 4, columna 21:
PL/SQL: ORA-00942: la tabla o vista no existe
ORA-065550: linea 4, columna 9:
PL/SQL: sql statement ignored

¿Alguien podría ayudarme?
¿Pudiera ser falta de permisos en alguna tabla del Sys?

El usuario en cuestión tiene permisos dentro del tablespace temporal.

Muchas gracias por adelantado.

Un saludo.
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

Global temporary table

Publicado por Daniel Rodas (7 intervenciones) el 22/03/2018 18:33:42
Hola

Lo ideal es que tengas roles y asignes al rol a los usuarios que desees y luego des grant al objeto. En efecto es como dices por permisos.
La solución sería mas o menos asi:

Rol: R99999999
Usuario: pepito -->Rol R99999999
Tabla: owner.mitabla. Si no pusiste owner a la hora de crear la tabla la crea como propiedad del usuario SYS, por lo que si lo hiciste así es aconsejable que le des DROP table y la vuelvas a crear mas o menos asi:

CREATE TABLE OWNER.MITABLA (
.
.
.);

Acuerdate de crearle de una vez el sinonimo publico

Luego viene el grant:
GRANT SELECT[, INSERT][, UPDATE][, DELETE] ON OWNER.MITABLA TO R99999999;

Despues te logueas con el usuario y haces select a MITABLA y listo.

Saludos
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

Global temporary table

Publicado por Santiago (4 intervenciones) el 23/03/2018 08:12:08
Muchas gracias por la respuesta.
Creo que no me he explicado bien.

El problema no es que no pueda acceder a la tabla, es que no me deja crearla.
Intento crear una tabla temporal con el siguiente comando:

1
2
3
4
5
Create global temporary tabla_temp
(
    C1 integer,
    C2 varchar2(50)
)  on commit delete rows;

Esto me proporciona el error indicado:

ORA-00604: se ha producido un error a nivel 1 de sql recursivo
ORA-06550: linea 4, columna 21:
PL/SQL: ORA-00942: la tabla o vista no existe
ORA-065550: linea 4, columna 9:
PL/SQL: sql statement ignore

De esta manera no puedo crear ninguna tabla temporal en mi bbdd con este usuario.
Mientras que si accedo con SYS si puedo hacerlo.

Muchas gracias.

Un saludo
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

Global temporary table

Publicado por Daniel Rodas (7 intervenciones) el 23/03/2018 20:25:41
Ohh

Bueno, deberias ver si el usuario que no es SYS, tiene grants de DBA o al menos para crear tablas. Si tu eres el DBA, es facil porque le das grant DBA to user y listo; pero si no tendrias que validarlo con el DBA.
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