Veja a seguir respostas para algumas dúvidas comuns sobre o TOTVS | DBAccess.
1 - O que é o TOTVS | DBAccess?
O TOTVS | DBAccess é uma ferramenta de conectividade que permite o acesso a uma ampla variedade de SGBDs sem a necessidade de geração de códigos específicos para cada um deles.
2 - É possível trazer o conteúdo de um campo do tipo "M" (memo) através de uma query?
Não, não é possível.
O TOTVS | DBAccess suporta por compatibilidade campos do tipo MEMO presentes na estrutura dos arquivos DBF, anteriormente utilizados nas primeiras versões da linha de produtos Microsiga Protheus.
Caso seja feita uma query onde é retornado um campo MEMO explicitamente (selecionando um campo MEMO em uma query) ou implicitamente (executando um SELECT * em uma tabela que contém um campo MEMO), será registrado no arquivo de console do DBAccess uma mensagem de advertência, indicando que o campo MEMO foi removido do registro retornado.
Exemplos de mensagem de advertência:
- [WARNING] Unsupported blob type [123] in field FLD_MEMO - Column removed from result set because binary (blob/image/memo) data types are not supported in query - (tOCI8Stmt::AssignFields)
- [WARNING] Unsupported binary type [123] in field FLD_MEMO - Column removed from result set because binary (blob/image/memo) data types are not supported in query - (tOCI8Stmt::AssignFields)
- [WARNING] Unsupported clob type [123] in field FLD_MEMO - Column removed from result set because binary (blob/image/memo) data types are not supported in query - (tOCI8Stmt::AssignFields)
- [WARNING] Unsupported long type [123] in field FLD_MEMO - Column removed from result set because binary (blob/image/memo) data types are not supported in query - (tOCI8Stmt::AssignFields)
- [WARNING] Unsupported column type [123] in field FLD_MEMO - Column removed from result set because binary (blob/image/memo) data types are not supported in query - (tOCI8Stmt::AssignFields)
- Unsupported column type [123] in field FLD_MEMO - Column removed from result set because binary (blob/image/memo) data types are not supported in query - (tODBCStatement::BindCols)
3 - Procedimentos para teste com o build Debug do DBAccess - Windows
- Pare o serviço do DBAccess.
- Faça um backup da pasta onde ele está instalado.
- Copie todo o conteúdo da pasta debug e sobrescreva os arquivos.
- Apague o dbconsole.log, dbconsole.bak (caso exista) e qualquer arquivo core_*dmp (caso exista).
- Reinicie o DBAccess.
Obs.: Para análise de problemas de queda, colete os arquivos dbconsole.log, dbconsole.bak (caso exista), dbaccess.ini e coredump (core_dbg_*.dmp) gerado na mesma pasta do DBAccess.
Compacte os arquivos e anexe ao ticket aberto no Suporte Tecnologia.
4 - Procedimentos para teste com o build Debug do DBAccess - Linux
- Encerre o DBAccess.
- Faça um backup da pasta onde ele está instalado.
- Copie o conteúdo da pasta debug para a pasta onde o DBAccess instá instalado.
- Apague o dbconsole.log e dbconsole.bak (caso exista).
A partir daqui, todos os comandos devem ser executados como root.
Obs.: Para análise de problemas de queda, colete os arquivos dbconsole.log, dbconsole.bak (caso exista), dbaccess.ini e coredump (core*) gerado na mesma pasta do DBAccess.
Compacte os arquivos e anexe ao ticket aberto no Suporte Tecnologia.
5 - SGBD Grants
Devido à necessidades técnicas da linguagem AdvPL que é a base do ERP Protheus, é necessário dar permissão de acesso aos catálogos para todos SGBDs.
No caso do SGBD Oracle é necessário dar permissão aos catálogos abaixo:
- sys.obj
- Utilizado para verificar a existência de uma tabela e/ou índice.
- Utilizado para fazer o describe de tabelas e/ou índices e montar um cache interno de estruturas.
- sys.col
- Utilizado para fazer o describe de tabelas e/ou índices e montar um cache interno de estruturas.
- sys.icol
- Utilizado para fazer o describe de tabelas e/ou índices e montar um cache interno de estruturas.
- sys.ind
- Utilizado para fazer o describe de tabelas e/ou índices e montar um cache interno de estruturas.
As versões de DBAccess anteriores a 17.2.1.5, não estavam deletando/removendo as sequences criadas para tabelas temporárias e consequentemente deixando sequences órfãs no SGDB.
Para remover as sequences órfãs, execute o procedimento abaixo:
- Parar os serviços/processos do DBAccess
- Abrir um client Oracle de sua escolha (sqlplus, isql, Oracle SQL Developer, etc...)
- Conectar na base de dados do Protheus utilizando o mesmo usuário utilizado pelo DBAccess
- Executar o script abaixo através do client conectado a base de dados do Protheus:
DECLARE
cStmt VARCHAR(128);
CURSOR c IS SELECT SEQUENCE_NAME FROM ALL_SEQUENCES WHERE SEQUENCE_OWNER = USER AND REGEXP_LIKE(SEQUENCE_NAME, '^T.*_[0-9]+_SEQ');
BEGIN
FOR it IN c
LOOP
cStmt := 'DROP SEQUENCE ' || it.SEQUENCE_NAME;
EXECUTE IMMEDIATE cStmt;
END LOOP;
END;