Pergunta Marcio Roberto Werner · Fev. 20

Como configurar database dblink do oracle 21c xe para banco cache 2018?

Instalei um servidor linux oracle 8, neste servidor instalei o oracle 21c xe.

Fiz a instalação do pacote unixODBC unixODBC-devel , abaixo e descompactei os do ODBC-2018.1.5.659.0-lnxrhx64.tar.gz na pasta /usr/local/lib/odbc e configurei os arquivos /etc/odbcinst.ini e /etc/odbc.ini.

usei o comando isql -v CacheDB, fiz select em algumas tabelas e esta funcionado.

Também fiz as configurações na parte do oracle, nos arquivo tnsnames.ora, listener.ora e initCacheDB.ora.

Criei o dblink no oracle, mas ao executar um select no oracle esta retornando erro:

SQL> select * from "pedido"@CacheDB;
select * from "pedido"@CacheDB
                           *
ERROR at line 1:
ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
ORA-02063: preceding line from CacheDB

Como resolvo este erro?

Qual o link para baixar o banco cache na versão 2018.01?

Product version: Caché 2018.1
$ZV: 2018.1.2.309

Comments

Rochael Ribeiro · Fev. 21

Bom dia, como o erro é do Oracle e não do Caché, você poderia passar mais informações sobre o erro?

Poderia também verificar no Caché se tem algum erro nas los do Caché?

Para confirmar que a conexão chegou no Caché e ele reportou algum erro.

Obrigado

0

Boa tarde,
Eu não tenho acesso ao servidor do cache para verificar os logs.

Os arquivos odba.ini e odbcinst.ini estão configurado desta forma:

/etc/odbc.ini
[cachedb]
Driver          = /usr/local/lib/odbc/libcacheodbc35.so
Description     = Cache ODBC driver
Host            = 192.168.1.10
Namespace       = DW
UID             = dw
Password        = **********************
Port            = 1972
Protocol        = TCP
Query Timeout   = 1
Static Cursors  = 0
Trace           = Yes
TraceFile       = /tmp/iodbctrace.log
Authentication Method   = 0
Security Level  = 2
Service Principal Name = cache/localhost.domain.com

/etc/odbcinst.ini

# Driver from InterSystems Cache
# Setup manually to access the database Consystem
[cachedb]
Description=InterSystems Caché ODBC Driver
Driver=/usr/local/lib/odbc/libcacheodbc35.so
Setup=/usr/local/lib/odbc/libcacheodbc35.so
Driver64=/usr/local/lib/odbc/libcacheodbc35.so
Setup64=/usr/local/lib/odbc/libcacheodbc35.so
Trace           = Yes
TraceFile       = /tmp/iodbctrace.log
FileUsage=1
 

No oracle configurei os arquivos:
-  tnsnames.ora

CACHEDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SID = cachedb)
    )
    (HS=OK)
  )

- listener.ora

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = cachedb)
      (ORACLE_HOME = /opt/oracle/product/21c/dbhomeXE)
      (PROGRAM = dg4odbc)
    )
  )
 

- initcachedb.ora
HS_FDS_CONNECT_INFO = cachedb
HS_FDS_SHAREABLE_NAME = /usr/local/lib/odbc/libcacheodbc35.so
HS_LANGUAGE=AMERICAN_AMERICA.WE8ISO8859P15
HS_FDS_TRACE_LEVEL = DEBUG
HS_FDS_TRACE_FILE_NAME = /tmp/CacheD-dblink.trc
set ODBCINI=/etc/odbc.ini

Criado o dblink:

CREATE DATABASE LINK cachedb CONNECT TO "dw" IDENTIFIED BY "**********************" USING 'cachedb';

Ao executar o select esta retornando o erro.

0
Danusa Calixto · Fev. 24

Boa tarde, Marcio. 

Não sei se vc fez teste, mas eu tentaria executar a mesma sentença sem o uso das aspas (" ").

select * from pedido@CacheDB;  

0
Danusa Calixto  Fev. 25 to Marcio Roberto Werner

Bom dia, Marcio. 

Você encontrou registro do erro nos logs do Caché (cconsole, erros de app)? 

Em relação aos privilégios de acesso, você verificou se está habilitado corretamente para o Caché ser acessado pelo dblink? 

Encontrei um artigo (antigo) que pode te ajudar com os pré-requisitos para a criação e execução de um dblink. Apesar de ser sobre o Oracle, pode de dar alguma dica! 💡
https://www.devmedia.com.br/criacao-de-database-links/2748

0
Rochael Ribeiro  Fev. 28 to Danusa Calixto

outro ponto importante que me vem a cabeça, é que no caso do Caché, ou seja, o Caché 2018 (como informado), lendo uma tabela mapeada no Oracle 21c (como também informado) não funcionaria.

vide documentação da versão 2018: https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=ISP_technologies#ISP_platforms

somente no IRIS funcionaria com a versão informada do Oracle.

muito provavelmente a Oracle também deve ter restrições quanto as versões do Caché/IRIS.

avise se conseguir estas informações.

outro teste que você pode fazer é instalar uma ferramenta de SQL (ex: DBeaver) na máquina que está o Oracle e tentar conectar com o Caché.

espero ter ajudado.

0