Árvore de páginas

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 (<dbaccess-thread-id>) [TERMINATED] (IOs <io-count> / RCV <received-bytes> / SND <sent-bytes> ) 

A mensagem é registrada quando uma conexão foi interrompida ou quando a 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 foi interrompida ou quando a conexão for dada como encerrada (na camada de rede) antes da notificação de encerramento e do processamento da solicitação de encerramento.

Em geral, a causa do encerramento é registrada antes dessa mensagem.

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 with active transaction

A mensagem é registrada quando uma conexão com uma transação aberta/pendente foi interrompida ou quando a conexão com uma transação aberta/pendente for dada como encerrada (na camada de rede).

A mensagem é registrada quando uma conexão com uma transação aberta/pendente foi interrompida ou quando a conexão com uma transação aberta/pendente for dada como encerrada (na camada de rede).

Uma vez que a conexão com o TOTVS | Application Server foi interrompida ou dada encerrada, a transação aberta/pendente é revertida através da instrução de rollback.

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)
-----------------------------------------------------------

Table <table-name> has <numeric-field-count> numeric fields on DBMS, but <numeric-field-adjusted> was adjusted using TOP_FIELD

A mensagem é registrada quando a rotina de tratamento de campos numéricos identifica que a quantidade de campos numéricos ajustados com base na TOP_FIELD difere da quantidade de campos numéricos na estrutura da tabela.

A mensagem é registrada quando a rotina de tratamento de campos numéricos identifica que a quantidade de campos numéricos ajustados com base na TOP_FIELD difere da quantidade de campos numéricos na estrutura da tabela.

Parâmetro

Descrição

<table-name>

Corresponde ao nome da tabela ajustada pela rotina de tratamento de campos numéricos

<numeric-field-count>

Corresponde a quantidade de campos numéricos identificados na estrutura da tabela <table-name>

<numeric-field-adjusted>

Corresponde a quantidade de campos numéricos ajustados com base na TOP_FIELD

Causa

Dentre as causas possíveis temos:

  • A criação direta/externa da tabela, ou seja, sem o uso das funções de integração com o banco de dados - Se AdvPL, sem o uso da função dbCreate()
  • A manutenção direta/externa da tabela TOP_FIELD - tabela interna de uso exclusivo do TOTVS | DBAccess

  • Sem rótulos