Leonardo Pedroso Costa
MongoDB | SQL Server | Oracle

Corrigindo o erro ORA-00604: error occurred at recursive SQL level 1 após atualizar o Oracle de 11g para 12c

Ao atualizar nossas instâncias de 11g para 12c começamos a receber o erro abaixo ao criar packages, triggers e procedures no SQL Developer:

Error report –
ORA-00604: error occurred at recursive SQL level 1
ORA-00904: “DECL_OBJ#”: invalid identifier
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.

O código que eu tava tentando executar era de uma trigger de DDL, que por ventura, rodava com sucesso no SQLPlus. Levando a crer que fosse um problema exclusivo do SQL Developer:

 

[code lang=”sql”]
create or replace TRIGGER ADMIN.TG_AUDIT_DDL after ddl on DATABASE
begin
if (ora_dict_obj_name like ‘ORA_TEMP%’)
then
null;
else
insert into AUDITORIA.TB_ALTERACOES values(
sysdate,
sys_context(‘USERENV’,’OS_USER’),
sys_context(‘USERENV’,’CURRENT_USER’),
sys_context(‘USERENV’,’HOST’),
sys_context(‘USERENV’,’TERMINAL’),
ora_dict_obj_owner,
ora_dict_obj_type,
ora_dict_obj_name,
ora_sysevent
);
end if;
end;
[/code]

Para solucionar o problema, precisamos fazer o seguinte ajuste no SQL Developer:

Clique em Tools > Preferences > Database > PL/SQL Compiler > PLScope identifiers e troque de All para None conforme imagens abaixo.

Após alterar o campo PLScope Identifiers para NONE seu SQL Developer voltará a funcionar normalmente.

Leonardo Pedroso

Leonardo Pedroso

Profissional de TI experiência em administração de banco de dados: SQL Server 2000 a 2019, Oracle 11g a 19c, PostgreSQL, MySQL, MongoDB, Cassandra. Atua realizando análise de desempenho, DR e HA, implantação, administração de banco de dados em cluster e implementação de projetos de banco de dados NoSQL (MongoDB, Cassandra), bem como automação de processos utilizando Shell script, Powershell (dbatools), e players de Cloud: Azure e Aws.