Base de conhecimento
Encontre respostas para suas dúvidas em quatro fontes de conhecimento diferentes ao mesmo tempo, simplificando o processo de pesquisa.

Framework - Framework RM - BD - Erro: Validar índices ou estatísticas relacionado ao valor de horas LB.2022.08_07

time.png Tempo aproximado para leitura: 00:02:00 min

Ocorrência
Ao abrir o Atualizador para realizar uma conversão, está apresentando erro na Análise de Requisitos: Validar índices ou estatísticas relacionados ao aumento do valor máximo de horas. (LB.2022.08_07).

Ambiente
Framework - Framework (Linha RM) - Banco de Dados - A partir da 12.1.2302

Causa
O erro é devido à modificação que será feita na conversão alterando o tipo do campo hora para int nas tabelas da Folha de Pagamento. Isso é feito para permitir valores até 999:59. No entanto, se houver índices ou estatísticas customizados (Que não são padrões Totvs) vinculadas a alguma tabela do processo, a validação é interrompida para evitar problemas na base de dados durante a conversão.

Solução
Para solucionar, será necessário que todos os Índices e Estatísticas vinculados às Tabelas que sofrerão as alterações sejam excluídas antes da conversão, para isso, realize os seguintes passos:

1. Foi criado uma Consulta, que já identifica quais são os Índices e Estatísticas que comprometem o processo, portanto, favor executar a Consulta abaixo conforme o seu SGBD (Oracle ou SQL):

> CLIQUE AQUI - Verificar Índices - ORACLE
SELECT TABLE_NAME, COLUMN_NAME, INDEX_NAME
FROM USER_IND_COLUMNS
WHERE
( ( TABLE_NAME = 'PEVTRELACSALCMP' AND COLUMN_NAME = 'NHORAS' )
OR ( TABLE_NAME = 'PEVTRELACSALCMPCC' AND COLUMN_NAME = 'NHORAS' )
OR ( TABLE_NAME = 'PFENTMOV' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PFFINANC' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PFFINANCCOMPL' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PFHSTENTMOV' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PFMOVCC' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PFMOVCCCOMPL' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PFRESILICAOMOV' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PFVALORFORCADO' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PFVERBAS' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PFVERBASCOMPL' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PFVERBASDIS' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PFVERBASDISFER' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PFVERBASDISFERHIST' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PFVERBASDISHIST' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PORCAMENTOPERFILEVENTOS' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PFMOVTOMADOR' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PFRESILICAOMOVBASE' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PORCAMENTOMOVVALOR' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PPOSTRANSFERENCIA' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PSIMULADEMISSAOEVENTOS' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PFSUBSTITUICAO' AND COLUMN_NAME = 'NROHORAS' )
OR ( TABLE_NAME = 'PFSUBSTITUICAO' AND COLUMN_NAME = 'NROHORASORIGINAL' )
)
> CLIQUE AQUI - Verificar Índices - SQL
select tabela, type_desc, indice, colunasIndice
from
(
SELECT s.name as [schema], t.name as [tabela]
-- Detalhes do índice
, i.[type_desc], i.[is_primary_key], i.[is_unique], i.[is_unique_constraint]
, ISNULL(i.name, '') AS [indice]
, ISNULL(SUBSTRING(c.[indexed], 0, LEN(c.[indexed])), '') AS [colunasIndice]
, ISNULL(SUBSTRING(c.[included], 0, LEN(c.[included])), '') AS [included]
-- Filtro utilizado pelo índice
, ISNULL(i.filter_definition, '') AS [filtered]
FROM sys.schemas s
INNER JOIN sys.tables t
ON s.[schema_id] = t.[schema_id]
INNER JOIN sys.indexes i
ON t.[object_id] = i.[object_id]
-- Relação de colunas que formam o índice
CROSS APPLY (
SELECT (
SELECT c.name + ', '
FROM sys.columns c
INNER JOIN sys.index_columns ic
ON c.[object_id] = ic.[object_id]
AND c.[column_id] = ic.[column_id]
WHERE t.[object_id] = c.[object_id]
AND ic.[index_id] = i.[index_id]
AND ic.[is_included_column] = 0
ORDER BY [key_ordinal]
FOR XML PATH('')
) AS [indexed]
,(
SELECT c.name + ', '
FROM sys.columns c
INNER JOIN sys.index_columns ic
ON c.[object_id] = ic.[object_id]
AND c.[column_id] = ic.[column_id]
WHERE t.[object_id] = c.[object_id]
AND ic.[index_id] = i.[index_id]
AND ic.[is_included_column] = 1
ORDER BY [key_ordinal]
FOR XML PATH('')
) AS [included]
) AS c
) AS D
WHERE
( ( D.tabela = 'PEVTRELACSALCMP' AND D.colunasIndice LIKE '%NHORAS%')
OR ( D.tabela = 'PEVTRELACSALCMPCC' AND D.colunasIndice LIKE '%NHORAS%')
OR ( D.tabela = 'PFENTMOV' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFFINANC' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFFINANCCOMPL' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFHSTENTMOV' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFMOVCC' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFMOVCCCOMPL' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFRESILICAOMOV' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFVALORFORCADO' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFVERBAS' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFVERBASCOMPL' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFVERBASDIS' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFVERBASDISFER' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFVERBASDISFERHIST' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFVERBASDISHIST' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PORCAMENTOPERFILEVENTOS' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFMOVTOMADOR' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFRESILICAOMOVBASE' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PORCAMENTOMOVVALOR' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PPOSTRANSFERENCIA' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PSIMULADEMISSAOEVENTOS' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFSUBSTITUICAO' AND D.colunasIndice LIKE '%NROHORAS%')
OR ( D.tabela = 'PFSUBSTITUICAO' AND D.colunasIndice LIKE '%NROHORASORIGINAL%')
)
> CLIQUE AQUI - Verificar Estatísticas - SQL
SELECT s.name [STATS_NAME], s.stats_id [STATS_ID], t.name [TABLE_NAME], c.name [COLUNM_NAME]
FROM sys.stats s
INNER JOIN sys.tables t ON s.object_id = t.object_id
INNER JOIN sys.stats_columns sc ON s.object_id = sc.object_id AND s.stats_id = sc.stats_id
INNER JOIN sys.columns c ON sc.object_id = c.object_id AND sc.column_id = c.column_id
WHERE
( object_name(c.object_id) = 'PFFINANCCOMPL' AND c.name LIKE '%HORA%')
OR ( object_name(c.object_id) = 'PFHSTENTMOV' AND c.name LIKE '%HORA%')
OR ( object_name(c.object_id) = 'PFMOVCC' AND c.name LIKE '%HORA%')
OR ( object_name(c.object_id) = 'PFMOVCCCOMPL' AND c.name LIKE '%HORA%')
OR ( object_name(c.object_id) = 'PFRESILICAOMOV' AND c.name LIKE '%HORA%')
OR ( object_name(c.object_id) = 'PFVALORFORCADO' AND c.name LIKE '%HORA%')
OR ( object_name(c.object_id) = 'PFVERBAS' AND c.name LIKE '%HORA%')
OR ( object_name(c.object_id) = 'PFVERBASCOMPL' AND c.name LIKE '%HORA%')
OR ( object_name(c.object_id) = 'PFVERBASDIS' AND c.name LIKE '%HORA%')
OR ( object_name(c.object_id) = 'PFVERBASDISFER' AND c.name LIKE '%HORA%')
OR ( object_name(c.object_id) = 'PFVERBASDISFERHIST' AND c.name LIKE '%HORA%')
OR ( object_name(c.object_id) = 'PFVERBASDISHIST' AND c.name LIKE '%HORA%')
OR ( object_name(c.object_id) = 'PORCAMENTOPERFILEVENTOS' AND c.name LIKE '%HORA%')
OR ( object_name(c.object_id) = 'PFMOVTOMADOR' AND c.name LIKE '%HORA%')
OR ( object_name(c.object_id) = 'PFRESILICAOMOVBASE' AND c.name LIKE '%HORA%')
OR ( object_name(c.object_id) = 'PORCAMENTOMOVVALOR' AND c.name LIKE '%HORA%')
OR ( object_name(c.object_id) = 'PPOSTRANSFERENCIA' AND c.name LIKE '%HORA%')
OR ( object_name(c.object_id) = 'PSIMULADEMISSAOEVENTOS' AND c.name LIKE '%HORA%')
OR ( object_name(c.object_id) = 'PFSUBSTITUICAO' AND c.name LIKE '%NROHORAS%')
OR ( object_name(c.object_id) = 'PFSUBSTITUICAO' AND c.name LIKE '%NROHORASORIGINAL%')

Oracle não tem estatísticas.

2. Após executado as consultas, orientamos que os índices (SQL e Oracle) ou estatísticas (SQL) que retornaram na Consulta, sejam excluídos da Base de Dados. Este processo deverá ser realizado pelo DBA da sua empresa.

3. Após exclusão via banco dos índices e/ou estatísticas retornado nas consultas, a conversão poderá ser realizada novamente.

I
mportante
Após o processo de atualização ser concluído o com sucesso, é necessário avaliar com o DBA da sua empresa a necessidade de recriar os índices novamente, pois os mesmos podem impactar na performance. 

Saiba Mais
Para informações mais detalhadas, clique aqui.

Esse artigo foi útil?
Usuários que acharam isso útil: 0 de 0

0 Comentários

Por favor, entre para comentar.
X Fechar

Olá ,

Há pendência referente a um de seus produtos contratados para a empresa ().

Entre em contato com o Centro de Serviços TOTVS para tratativa.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cobrança – Verificação de pendências financeiras . clique aqui.

TOTVS

X Fechar

Olá ,

Seu contato não está cadastrado no Portal do Cliente como um perfil autorizado a solicitar consultoria telefônica.

Por gentileza, acione o administrador do Portal de sua empresa para: (1)configurar o seu acesso ou (2)buscar um perfil autorizado para registro desse atendimento.

Em caso de dúvidas sobre a identificação do contato administrador do Portal, ligue (11) 4003-0015, opção 7 e, em seguida, opção 4 para buscar o suporte com o time de Assessoria ao Portal do Cliente. . clique aqui.

TOTVS

X Fechar

Olá ,

Para o atendimento de "Consultoria Telefônica" você deverá estar de acordo com o Faturamento.

TOTVS

X Fechar

Olá,

Algo inesperado ocorreu, e o usuario nao foi reconhecido ou você nao se encontra logado

Por favor realize um novo login

Em caso de dúvidas, entre em contato com o administrador do Portal de Clientes de sua empresa para verificação do seu usuário, ou Centro de Serviços TOTVS.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cadastros . clique aqui.

TOTVS

Chat _

Preencha os campos abaixo para iniciar o atendimento:

Chat _