Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

« Anterior Versão 5 Próxima »

O arquivo dbconsole.log, gerado automaticamente pelo TOTVS | DBAccess, contém informações sobre a inicialização e finalização do DBAccess, entrada e saída de conexões, entre outras informações sobre a execução de processos internos e informações adicionais para fins de diagnóstico.

Abaixo, alguns exemplos de informações gravadas neste arquivo, e o seu significado.


Thread (<thread>) disconnected prematurely! (RECEIVEBLOCK)

A mensagem é registrada quando uma conexão for dada como encerrada (na camada de rede) antes da notificação de encerramento e do processamento da solicitação de encerramento.

A mensagem é registrada quando uma conexão for dada como encerrada (na camada de rede) antes da notificação de encerramento e do processamento da solicitação de encerramento.

A mensagem por si só não indica um erro, mas sim que "alguma coisa aconteceu com esta conexão, pois ela foi embora sem se despedir".

Causa

Dentre as causas possíveis temos:

  • Queda da aplicação;
  • Queda de rede;
  • Queda de energia;
  • Etc.

Observações

Em builds anteriores a 42.20141119, era apresentada a mensagem "Thread (<thread>) communication failure! (RECEIVEBLOCK)."

Sobre o encerramento de conexões TCP

O término de conexões requer:

  1. Que a aplicação envie uma mensagem de encerramento;
  2. Que o servidor receba a mensagem de encerramento e processe a finalização;
  3. Que o servidor envie uma mensagem para confirmar o término da conexão e feche o socket;
  4. Que a aplicação feche o socket.

Begin TopClient Thread (<dbaccess-thread-id>,<appserver-ip>,<database>/<datasource-name>,<user-logged-os/renamed-user-protheus>,<user-logged-os>,<hostname>,DBApi <from-dbapi-version>)

A mensagem é registrada quando uma conexão foi estabelecida entre o servidor de aplicação e o gateway do banco de dados.

A mensagem é registrada quando uma conexão foi estabelecida entre o servidor de aplicação e o gateway do banco de dados.

Parâmetro

Descrição

<dbaccess-thread-id>

Corresponde ao processo interno do TOTVS | DBAccess que atende àquela conexão.

<appserver-ip>

Corresponde ao endereço IP de origem, o IP do TOTVS | Application Server.

<database>/<datasource-name>

Corresponde ao ambiente que será utilizado para o acesso ao banco de dados (banco de dados e nome da fonte de dados).

<user-logged-os/renamed-user-protheus>

Corresponde ao usuário que solicitou a conexão ao banco de dados através do TOTVS | DBAccess. Por padrão, o nome do usuário da sessão do sistema operacional.

<user-logged-os>

Corresponde ao nome do usuário da sessão do sistema operacional cuja aplicação solicitou a conexão ao banco de dados através do TOTVS | DBAccess.

<hostname>

Corresponde ao nome da estação do usuário que solicitou a conexão ao banco de dados.

DBApi <from-dbapi-version>

Corresponde a versão da DBAPI utilizada na conexão com o TOTVS | DBAccess.

(informação) A informação que mais utilizamos neste contexto é a <dbaccess-thread-id>, pois qualquer mensagem relacionada a este processo será registrada juntamente a esse valor enquanto ele estiver sendo executado, ao ser registrado no dbconsolel.log, vai informar o número da <thread> ao qual a ocorrência pertence.

End TopClient Thread (<dbaccess-thread-id>) (IOs <io-count> / RCV <received-bytes> / SND <sent-bytes> ) 

A mensagem é registrada quando uma conexão, estabelecida entre o servidor de aplicação e o gateway do banco de dados, é encerrada.

A mensagem é registrada quando uma conexão, estabelecida entre o servidor de aplicação e o gateway do banco de dados, é encerrada.

Parâmetro

Descrição

<dbaccess-thread-id>

Corresponde ao processo interno do TOTVS | DBAccess que atende àquela conexão.

<io-count>

Corresponde a quantidade de I/O realizada pelo processo <dbaccess-thread-id> até o término da conexão.

<received-bytes>

Corresponde a quantidade de bytes recebidos pelo processo <dbaccess-thread-id> até o término da conexão.

<sent-bytes>

Corresponde a quantidade de bytes enviados pelo processo <dbaccess-thread-id> até o término da conexão.

(informação) A informação que mais utilizamos neste contexto é a <dbaccess-thread-id>, pois qualquer mensagem relacionada a este processo será registrada juntamente a esse valor enquanto ele estiver sendo executado, ao ser registrado no dbconsolel.log, vai informar o número da <thread> ao qual a ocorrência pertence.

Exit TopClient Thread (<thread>) [TERMINATED] (IOs <nnn_ios> / RCV <rcv_data> / SND <snd_data> ) 

Similar à mensagem "End TopClient", a "Exit TopClient" indica que houve uma finalização anormal de um processo no DBAccess. Normalmente existe uma razão para isso, registrada um pouco antes desta mensagem.
Os dados informados nesta mensagem são os mesmos da "End Topclient"


[WARNING] Exit with active transaction.

Esta mensagem pode vir imediatamente depois da mensagem "Exit TopClient Tread", e indica que, o processo que foi encerrado ou finalizado estava com uma transação aberta. Neste caso, o encerramento do processo em transação sem que ele tenha recebido um COMMIT explícito pela aplicação AdvPL, faz com que o DBAccess solicite ao SGDB um ROLLBACK, e nenhuma das operações de manutenção nas tabelas realizadas desde o inicio da transação será gravada no SGDB.


Formato de mensagem de erro padrão 

Uma ocorrência de erro registrada no DBAccess, por consequência de um erro retornado pelo SGDB, é registrada no log de console (dbconsole.log) e no log de erros (dbaccess.log) no seguinte formato:

Error : <sql_native_error> (<sql_state>) (RC= <rc_stat>) - <sgdb_error_description> ( From <dbaccess_proc> ) 
Thread ID [<thread>] User [<user>] IO [<nnn_ios>] Tables [<open_tables>] MaxTables [<max_open_tables>] 
Comment [<thread_observ>] Status [<op_info_str>] SP [<sp_flag> ] Traced [<trace_flag>] InTran [<transacion_flag>] 
DBEnv [<database>/<dbenv>] DBThread [<sgdb_thread>] Started [<start_dt>] LastIO [<lastio_dt>] IP [<IP>] 
RCV [<rcv_bytes>] SND [<snd_bytes>] TCBuild [<dbaccess_build>] 
<SQL_STATEMENT>
[ OPERATION_DETAILS ]


Uma ocorrência de execução com sucesso, porém houveram informações adicionais relacionadas a execução, é registrada pelo DBAccess como uma ocorrência de advertência. Contém todos os dados da ocorrência de erro, mas é iniciada com "Warning :" ao invés de "Error :".

Warning : 598 (01550) (RC=1) - [IBM][CLI Driver][DB2/NT64] SQL0598W O índice existente "DB2ADMIN.SX2T10_PK" é utilizado como o índice para a chave primária ou para uma chave exclusiva. SQLSTATE=01550( From tDBServer::CreateFile )
Thread ID [300] User [Administrador] IO [26] Tables [0] MaxTables [0] 
Comment [] Status [] SP [ ] Traced [No] InTran [No] 
DBEnv [DB2/MP1217] DBThread [(DB2ID *LOCAL.DB2.151001203809)] Started [01/10/2015 17:38:08] LastIO [] IP [127.0.0.1:1234] 
RCV [570] SND [71] TCBuild [20141119] 
ALTER TABLE DB2ADMIN.SX2T10 ADD PRIMARY KEY (R_E_C_N_O_)


Na ocorrência acima, o Bando de Dados DB2 apenas informa que, para acrescentar a chave primária de registro em uma tabela, foi usado um índice já existente que atendia a condição, e não foi criado um índice novo. Este comportamento é o esperado, o índice de chave primária é criado em um momento anterior com uma parametrização específica. 


Error : 2601 (23000) (RC=-1) - [Microsoft][SQL Server Native Client 10.0][SQL Server]Cannot insert duplicate key row in object 'dbo.SPED050' with unique index 'SPED050_UNQ'. The duplicate key value is ( , , 0). ( From tISAMFile::Update )
Thread ID [10600] User [Totvs Services SPED Gateway] IO [854] Tables [51] MaxTables [52] 
Comment [[JOB_WS] WSServer SOAP REQUEST (NFESBRA:REMESSA3) em 20160413 09:14:51 (running)] Status [] SP [ ] Traced [No] InTran [No] 
DBEnv [MSSQL/Sped] DBThread [(SPID: 1171) ] Started [13/04/2016 09:05:19] LastIO [] IP [192.168.5.232:5001] 
RCV [100836] SND [407897] TCBuild [20131204] 
UPDATE dbo.SPED050 SET D_E_L_E_T_ = ' ',R_E_C_D_E_L_ = 0 WHERE R_E_C_N_O_ = 16375512


Na ocorrência acima, uma aplicação Advpl tentou remover um flag de deleção lógica de um registro, porém o SGDB MSSQL utilizado não permitiu a remoção, pois isto violatia a chave única definida para a tabela em questão.


Error : -803 (23505) (RC=-1) - [IBM][CLI Driver][DB2/LINUXX8664] SQL0803N One or more values in the INSERT statement, 
UPDATE statement, or foreign key update caused by a DELETE statement are not valid because the primary key, 
unique constraint or unique index identified by "2" constrains table "DB2.AGL000" from having duplicate values for the index key. 
SQLSTATE=23505 ( From tISAMFile::Update ) 
Thread ID [1140918592] User [juliow] IO [464] Tables [24] MaxTables [24] 
Comment [] Status [] SP [ ] Traced [No] InTran [No] 
DBEnv [DB2/TOPSSIM] DBThread [(DB2ID: 192.168.3.144.59505.15040614141) ] Started [06/04/2015 11:14:18] LastIO [] IP [192.168.3.76:7059] 
RCV [25787] SND [51482] TCBuild [20131204] 
UPDATE DB2.AGL000 SET D_E_L_E_T_ = ' ',R_E_C_D_E_L_ = 0 WHERE R_E_C_N_O_ = 5276140


A ocorrência acima é praticamente a mesma da anterior – violação de índice de chave única – porém registrada pelo SGDB DB2.


Informações de Check-Up na Primeira Conexão 

Após subir o serviço do DBAccess, a primeira conexão feita com um Banco de Dados, registra no log de console várias informações sobre o SGDB em questão. Estas informações podem variar entre os tipos de bancos de dados homologados, segue abaixo o exemplo das informações coletadas da conexão com um Banco de Dados MSSQL:

--------------- Initial Connection Check-Up ---------------
Database......: MSSQL
Environment...: P12TST
TableSpace....: [PRIMARY]
IndexSpace....: 
Compression ..: PAGE
DB Collation..: Latin1_General_BIN
DB Version....: 
Microsoft SQL Server 2008 R2 (SP3) - 10.50.6000.34 (X64) 
Aug 19 2014 12:21:34 
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
SQL ServerName: TST-DATA279\SQLINST1
SQL Collation.: Latin1_General_BIN
SQL Edition...: Enterprise Edition (64-bit)
SQL Version...: 10.50.6000.34
SQL P.Level...: SP3
MARS .........: ENABLED
-----------------------------------------------------------
--------------- ODBC Connection Check-Up ------------------
ODBC Mapped Functions ......: 1.0
ODBC DBMS Name..............: Microsoft SQL Server
ODBC DBMS Version...........: 10.50.6000
ODBC DBMS Database Name.....: P12TST
ODBC Data Source Name.......: P12TST
ODBC Server Name............: TST-P12\SQLINST1
ODBC Driver Name............: sqlncli10.dll
ODBC Driver Version ........: 10.50.4000
ODBC Support ODBC Version...: 03.52
-----------------------------------------------------------
------------- Generic Connection Check-Up -----------------
Prepared Stmt Cache .......: ENABLED
Index Trace ...............: DISABLED
ISAM Compatibility Mode ...: ENABLED
Connection Access Mode ....: READWRITE (DEFAULT)
ISAM DefaultRowCount ......: 40
ISAM FilteredRowCount .....: 250
DB Unified Connection .....: DISABLED (LEGACY)
Record Sequence Owner .....: DBACCESS (DEFAULT)
-----------------------------------------------------------

[WARNING][DBACCESS] [Thread <NNNNN>][DATABASE/DSN] (tDBConnection::AdjustFields) Table XXX has N numeric fields on DBMS, but 0 was adjusted using TOP_FIELD.

Esta mensagem é apresentada no console do DBAccess durante a chamada da função responsável por ajustar a precisão numérica para campos AdvPL.
Esta função faz um "de - para" dos campos numéricos da área a ser aberta com a TOP_FIELD.

Abaixo, alguns exemplos de motivos que podem ocasionar esta mensagem:

  • Caso uma tabela seja criada diretamente no Banco de Dados, sem passar pela camada do ERP, responsável pela catálogo da TOP_FIELD.
  • Caso a tabela TOP_FIELD (de uso interno e restrito) tenha passado por uma manutenção direta.
  • Sem rótulos