Pré Requisitos para migração para o Novo Log de Auditoria.

ORACLE

Por questões de organização, segurança e performance, foi criada uma rotina que é executada no momento da migração para o Novo Log de Auditoria e a mesma faz a criação do Esquema TOTVSAUDIT e dos TABLESPACES TOTVSAUDIT_DADOS e TOTVSAUDIT_INDICES

Os tablespaces serão criados nos mesmos diretórios de dados onde já existem os arquivos de dados dos tablespaces de sistema RM_DADOS e RM_INDICES. (Caso seja de sua preferência os tablespaces podem ser criados antecipadamente pela sua equipe de DBA's, assim pode-se definir um local diferente para os mesmos.)

Para esta migração é pré-requisito que o usuário que irá realizar a migração(RM) tenha perfil DBA e possua as seguintes permissões:

GRANT SELECT ON DBA_LOBS TO RM;

GRANT SELECT ON DBA_SEGMENTS TO RM;

É necessário também que o parâmetro do SGBD Oracle JOB_QUEUE_PROCESSES esteja com o valor maior que 100.

Para confirmar o valor do parâmetro execute o seguinte query:

SELECT name, value FROM v$parameter WHERE name = 'job_queue_processes';

Caso o usuário não atenda aos pré-requisitos acima, poderão ocorrer erros na conversão da Base de Dados para nova versão.

Testes de Homologação de Novas versões em Bases de Dados Oracle

A partir da versão 12.1.24 foi necessário se colocar uma ACTION que realiza algumas verificações a base de dados Oracle, caso o Novo Log já esteja em utilização.

Com isto sempre que for necessário se fazer um RESTORE do ambiente de produção em homologação é necessário que se faça de ambos os schemas RM e TOTVSAUDIT.

Assim o conversor não irá travar nas verificações devido a falta de objetos na base de dados.

Caso não seja possível fazer o RESTORE do schema TOTVSAUDIT, após realizar o RESTORE do schema RM deve-se desabilitar o Novo Log antes de proceder com a conversão.

SQL SERVER

Caso esteja sendo utilizado o Novo Log de Auditoria em MS SQL Server e aplicações em Delphi é necessário se atentar ao seguinte ponto:

Devido ao funcionamento do Delphi o parâmetro CONCAT_NULL_YIELDS_NULL  e ANSI_WARNINGS devem estar ligados.

Este será o comportamento padrão do MS SQL Server em versões futuras de acordo com a Microsoft.

Parâmetro CONCAT_NULL_YIELDS_NULL

https://docs.microsoft.com/en-us/sql/t-sql/statements/set-concat-null-yields-null-transact-sql?view=sql-server-2017

Parâmetro ANSI_WARNINGS 

https://docs.microsoft.com/en-us/sql/t-sql/statements/set-ansi-warnings-transact-sql?view=sql-server-2017

Este parâmetro deve ser alterado a nível de banco de dados, conforme exemplo abaixo:

Parâmetro CONCAT_NULL_YIELDS_NULL 

USE [master]

GO
ALTER DATABASE [CorporeRM]* SET CONCAT_NULL_YIELDS_NULL ON WITH NO_WAIT
GO

Parâmetro ANSI_WARNINGS 

USE [master]

GO
ALTER DATABASE [Corpore]* SET ANSI_WARNINGS ON WITH NO_WAIT
GO

CorporeRM será o nome do Database em uso pela aplicação.