Pular para o conteúdo
Visualizando 8 posts - 1 até 8 (de 8 do total)
  • Autor
    Posts
  • #84282
    erivelton
    Participante

      SQL> grant dba to GS_TESTE;

      Grant succeeded.

      SQL> ALTER TABLE ALVO_UI
      ADD CONSTRAINT ALVO_UI_TIPO_PELE_FK1 FOREIGN KEY
      ( SK_TIPO_PELE ) REFERENCES TIPO_PELE
      ( ID_TIPO_PELE ) ; 2 3 4
      ALTER TABLE ALVO_UI
      *
      ERROR at line 1:
      ORA-00604: error occurred at recursive SQL level 1
      ORA-01031: insufficient privileges

      Alguém tem alguma idéia do que pode ser?

      (Release 10.2.0.1.0)

      #84284
      Avatar photoLeonardo Litz
      Participante

        Por acaso esta tabela na esta lockada?

        #84286
        erivelton
        Participante

          Verifiquei e a tabela não está locked.

          Em outro objetos o problema também acontece:

          ALTER TABLE TIPO_PELE
          MODIFY CONSTRAINT TIPO_FLG__CHK__621141764 ENABLE;
          Error report:
          SQL Error: ORA-00604: ocorreu um erro no nível 1 SQL recursivo
          ORA-01031: privilégios insuficientes
          00604. 00000 - "error occurred at recursive SQL level %s"
          *Cause: An error occurred while processing a recursive SQL statement
          (a statement applying to internal dictionary tables).
          *Action: If the situation described in the next error on the stack
          can be corrected, do so; otherwise contact Oracle Support.

          Na sessão do user GS_TESTE:


          select * from user_sys_privs;

          USERNAME PRIVILEGE ADMIN_OPTION


          GS_TESTE UNLIMITED TABLESPACE NO
          GS_TESTE CREATE SEQUENCE NO
          GS_TESTE CREATE ANY DIRECTORY NO
          GS_TESTE CREATE TABLE NO
          GS_TESTE DEBUG ANY PROCEDURE NO
          GS_TESTE ALTER SESSION NO
          GS_TESTE DEBUG CONNECT SESSION NO
          GS_TESTE CREATE ANY TABLE YES
          GS_TESTE SELECT ANY DICTIONARY NO

          #84287
          Avatar photoLeonardo Litz
          Participante

            Verifique se não há nenhuma trigger de sistema que ao se executar uma ddl log o registro.

            #84288
            erivelton
            Participante

              Litz,

              Já tinha observado isso, sendo que a única trigger
              de sistema que eu tenho é AFTER LOGON:

              create or replace TRIGGER data_logon_trigger
              AFTER LOGON ON DATABASE
              BEGIN
              IF (USER IN ('GS_TESTE')) THEN
              execute immediate 'alter session set nls_date_format = "YYYY-MM-DD HH24:MI:SS"';
              END IF;
              END;

              #84289
              Avatar photoLeonardo Litz
              Participante

                Tente dar o privilegio de alter table diretor, para este usuario.
                grant alter any table on user;

                #84292
                Marcio68Almeida
                Participante

                  O que está acontecendo não é um problema de privilégio e sim de lógica.
                  Ao que tudo indica, você está tentando criar uma recursividade em algum lugar…
                  Por exemplo, a tabela A tem FK apontando para B e você está tentando criar uma FK em B apontando para A
                  É claro que isso pode ser um pouco mais complexo, por exemplo, A apontando para B que aponta para C que tenta apontar para A
                  Procure algo nesse sentido…

                  #84294
                  erivelton
                  Participante

                    Obrigado pela atenção.

                    Márcio,

                    Não era problema de lógica, pois não tinha ninguém apontando para está tabela


                    SELECT other.TABLE_NAME,
                    other.owner,
                    other.constraint_name
                    FROM sys.dba_constraints this,
                    sys.dba_constraints other
                    WHERE this.constraint_name = other.r_constraint_name
                    AND this.owner = 'GS_TESTE'
                    AND this.TABLE_NAME = 'TIPO_PELE'
                    AND other.constraint_type = 'R'
                    AND other.r_owner = this.owner;


                    TABLE_NAME OWNER CONSTRAINT_NAME


                    0 rows selected

                    Apesar disso, descobri o problema:

                    Era um índice funcional (uma função determinística) na tabela TIPO_PELE,
                    sendo que está função estava em outro schema:


                    CREATE UNIQUE INDEX GS_TESTE.XIE1TIPO_PELE ON GS_TESTE.TIPO_PELE (GS.TO_KEY(TIPO_PELE)) ;

                    Criei a função no mesmo schema e ficou assim:


                    CREATE UNIQUE INDEX XIE1TIPO_PELE ON TIPO_PELE ( TO_KEY(TIPO_PELE)) ;

                    Obrigado a todos.

                  Visualizando 8 posts - 1 até 8 (de 8 do total)
                  • Você deve fazer login para responder a este tópico.