Tempo aproximado para leitura: 00:04:46 min
Ocorrência
Durante a execução de qualquer processos em que tabelas auditadas estejam envolvidas poderá exibir a mensagem: ORA-02289: a sequência não existe
Ambiente
Framework - Framework (Linha RM) - Banco de Dados - A partir da versão 12.1.24
Causa
Essa inconsistência pode ser apresentada após o processo de migração para o log de auditoria. Ocorre quando há uma inconsistência no gatilho de um objeto específico.
Solução
Para solucionar a inconsistência apresentada, seguir os seguintes procedimentos:
1.Execute os grants abaixo utilizando o usuário SYS, com privilégio de SYSDBA:
A execução dos comandos de permissões abaixo, são necessários para que algumas sequences, triggers e procedures do RM sejam executadas corretamente.
GRANT CONNECT,DBA,RESOURCE TO RM;
GRANT CONNECT, RESOURCE TO ACESSO_RM;
GRANT CONNECT,RESOURCE,ACESSO_RM TO SYSDBA;
GRANT CREATE TABLE, CREATE SEQUENCE, CREATE TRIGGER TO TOTVSAUDIT;
ALTER USER TOTVSAUDIT QUOTA UNLIMITED ON RM_DADOS QUOTA UNLIMITED ON RM_INDICES;
GRANT CREATE TABLE, CREATE SEQUENCE, CREATE TRIGGER TO TOTVSAUDIT;
GRANT INSERT, SELECT ON TOTVSAUDIT.ZAUDITSCHEMAEVENTS TO RM;
ALTER USER SYSDBA
DEFAULT ROLE ALL;
ALTER USER RM
DEFAULT ROLE ALL;
GRANT CONNECT, RESOURCE, CREATE VIEW TO RM;
GRANT SELECT ANY DICTIONARY TO RM;
GRANT CONNECT,CREATE SYNONYM TO SYSDBA;
GRANT EXECUTE ON DBMS_SYS_SQL TO RM;
GRANT EXECUTE ON DBMS_SQL TO RM;
GRANT CREATE TRIGGER TO RM;
GRANT DROP ANY TRIGGER TO RM;
GRANT SELECT ON V_$SESSION TO RM;
GRANT SELECT ON V_$STATNAME TO RM;
GRANT SELECT ON V_$SESSTAT TO RM;
GRANT SELECT ON V_$INSTANCE TO RM;
GRANT SELECT ON SYS.USER$ TO RM;
GRANT SELECT ON DBA_LOBS TO RM;
GRANT SELECT ON DBA_SEGMENTS TO RM;
Após gerar as permissões acima deve ser realizado, os seguintes comandos para que o usuário sysdba tenha acesso a tabelas do usuário rm:
GRANT SELECT ON RM.GSISTEMA TO ACESSO_RM;
GRANT SELECT ON RM.GACESSO TO ACESSO_RM;
GRANT SELECT ON RM.GPARAMS TO ACESSO_RM;
GRANT SELECT ON RM.GCOLIGADA TO ACESSO_RM;
GRANT SELECT ON RM.GPERMIS TO ACESSO_RM;
GRANT SELECT,UPDATE ON RM.GUSUARIO TO ACESSO_RM;
GRANT SELECT ON RM.GUSRPERFIL TO ACESSO_RM;
GRANT SELECT ON RM.GSERVICO TO ACESSO_RM;
GRANT SELECT, INSERT ON RM.GDATALOG TO ACESSO_RM;
GRANT SELECT ON RM.GPARAMETROSSISTEMA TO ACESSO_RM;
GRANT SELECT ON RM.GSECPROVIDER TO ACESSO_RM;
GRANT SELECT ON RM.GMAILPARAMS TO ACESSO_RM;
GRANT SELECT ON RM.GUPGATUALIZACAO TO ACESSO_RM;
GRANT SELECT,INSERT,DELETE,UPDATE ON RM.GSESSAOFLUIG TO ACESSO_RM;
GRANT SELECT,INSERT,DELETE,UPDATE ON RM.GULTIMOCONTEXTOUSUARIO TO ACESSO_RM;
GRANT INSERT,DELETE, SELECT, UPDATE ON RM.GCRITICALLOG TO ACESSO_RM;
GRANT SELECT ON RM.GCRITICALLOGDADO TO ACESSO_RM;
GRANT INSERT, SELECT ON TOTVSAUDIT.ZAUDITSCHEMAEVENTS TO RM;
2. Executar o comando a seguir, para que todas as sequences, triggers e procedures sejam corrigidas.:
BEGIN
P_FIXNOVOLOG;
END;
3. Executar o comando a seguir para verificar possíveis inconsistências com o log de auditoria:
BEGIN
P_CHECKNOVOLOG;
END;
O resultado desta consulta deverá ser exibido da seguinte maneira:
Caso sejam exibidos qualquer informação de erro, a mesma deverá ser encaminhada para que o suporte possa realizar a análise.
Importante
- O resultado dos comandos, dos itens 2 e 3 somente serão exibidos com o DBMS_Output habilitados.
Via comando:SET SERVEROUTPUT ON;
Pelo SQL Developer
- Será exibida a caixa abaixo, clicar no símbolo
e conectar na base de dados desejada.
Outra solução, porém paliativa para a execução do processo com sucesso seria:
1. Localizar qual a tabela do gatilho. Pode ser realizada a seguinte consulta:
SELECT TABLE_NAME FROM ALL_TRIGGERS
WHERE TRIGGER_NAME = 'NOME DA TRIGGER'
2. Acessar as configurações do Log de auditoria e desabilitar a auditoria para a tabela em que o gatilho apresentou a inconsistência.
3. Executar o processo desejado
4. Habilitar novamente a auditoria para a tabela que foi desabilitada.
Caso tenham mais de um gatilho com qualquer inconsistência, a mensagem voltara a ser exibida para outro gatilho
0 Comentários