Ad Widget

Collapse

Comunicação Zabbix e banco Oracle via ODBC

Collapse
This topic has been answered.
X
X
 
  • Time
  • Show
Clear All
new posts
  • cyberphantom
    Member
    • Dec 2021
    • 67

    #1

    Comunicação Zabbix e banco Oracle via ODBC

    Olá
    Estou estudando mais sobre o Zabbix e possuo básico conhecimento em banco de dados... Contudo, preciso fazer uma configuração para que o Zabbix se comunique com o banco Oracle, via ODBC. Fiz as configurações seguindo vários tutoriais e também a documentação (https://www.zabbix.com/documentation...nixodbc_oracle) mas ainda não obtive sucesso, pois quando tento fazer o teste com o comando isql, recebo o seguinte erro: Falha de segmentação (imagem do núcleo gravada).
    Já revisei meus passos várias vezes, o que fiz foi:
    1- instalar o unixODBC e unixODBC-devel
    2- instalar os drivers da oracle (de acordo com a minha versão de banco, foram: instantclient-basic, sqlplus, devel e odbc).
    3- configurei os arquivos:

    /etc/odbc.ini
    Code:
    [MY.DB.NAME]
    Driver = OracleDriver
    Server = {inseri o ip do host do banco}
    User = dbuser
    Password = db123
    Port= 1521
    Database = MY.DB.NAME
    /etc/odbcinst.ini
    Code:
    [OracleDriver]
    Description = Oracle ODBC driver for Oracle 11g
    Driver=/usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1
    e /etc/oracle/tnsnames.ora
    Code:
    MY.DB.NAME =
     (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP) (HOST = {inseri o ip do host do banco}) (PORT = 1521))
      (CONNECT_DATA =
       (SERVICE_NAME = MY.DB.NAME)
      )
    )
    Alguém pode me ajudar a entender o que pode estar acontecendo e o que estou fazendo de errado?
    Last edited by cyberphantom; 04-01-2022, 15:50.
  • Answer selected by cyberphantom at 12-01-2022, 21:17.
    cyberphantom
    Member
    • Dec 2021
    • 67

    RESOLVIDO! Muito obrigada por todas as respostas, com certeza me ajudaram muito e enfim, consegui me conectar ao banco via isql!!
    Sobre o erro de segmentação, se alguém tiver o mesmo, creio que seja o export nas variáveis de ambiente, criei um arquivo, mudei para executável e dentro está assim:
    export ORACLE_HOME=/usr/lib/oracle/11.2/client64
    export ORACLE_SID=XE
    export TNS_ADMIN=/usr/lib/oracle/11.2/client64/network/admin
    export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
    export PATH=${ORACLE_HOME}:${PATH}

    Depois, obtive o erro:
    [S1000][unixODBC][Oracle][ODBC][Ora]ORA-12162: TNS:net service name is incorrectly specified

    Para solucioná-lo, alterei meu arquivo odbc.ini, que ficou da seguinte forma:
    [ODBC Data Sources]
    IMSDB1.WORLD = Oracle Server

    [DSN.NAME]
    Driver = /usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1 #Altere para o caminho certo no seu ambiente
    Description = Oracle Server
    Trace = No
    ServerName = //{ip.do.host.do.banco:1521/{nome.do.banco} #substitua os parâmetros entre {...} de acordo com o seu ambiente
    Server = {ip.do.host.do.banco} #substitua os parâmetros entre {...} de acordo com o seu ambiente
    Database = {nome.do.banco} #substitua os parâmetros entre {...} de acordo com o seu ambiente
    Port = 1521 #verifique qual a porta correta
    TDS_Version = 7.4

    Execute o comando da seguinte forma:
    $ isql {DNS.NAME} {user.do.banco} {senha.do.banco}

    Não sei se todos esses parâmetros são necessários, mas está funcionando aqui :^)
    Last edited by cyberphantom; 07-01-2022, 19:11.

    Comment

    • mfortes
      Senior Member
      • Oct 2019
      • 415

      #2
      Consegue enviar um print ou colar aqui o log completo do erro?

      De qualquer forma, da uma olhada nesse tutorial >


      Michael R. Fortes

      Linkedin: Mike Fortes
      Medium: mromeiro-f

      Comment

      • cyberphantom
        Member
        • Dec 2021
        • 67

        #3
        Obrigada por responder!
        Então, andei repassando e refazendo a configuração de acordo com algumas orientações que li... agora, ao tentar me conectar com o comando "isql -v MY.DB.NAME" recebo o seguinte erro:
        [IM002][unixODBC][Driver Manager]Data source name not found, and no default driver specified
        [ISQL]ERROR: Could not SQLConnect

        Já via sqlplus, consigo me conectar do servidor do Zabbix ao banco Oracle sem problemas...

        Ao verificar odbcinst -j :
        unixODBC 2.3.4
        DRIVERS............: /etc/odbcinst.ini
        SYSTEM DATA SOURCES: /etc/odbc.ini
        FILE DATA SOURCES..: /etc/ODBCDataSources
        USER DATA SOURCES..: /root/.odbc.ini
        SQLULEN Size.......: 8
        SQLLEN Size........: 8
        SQLSETPOSIROW Size.: 8

        Não entendo o que pode estar acontecendo... Segui um vídeo tutorial sobre como fazer essa conexão, tudo deu certo até o momento de testar a conexão com isql, que retornou erro.
        Também estou com uma dúvida, não sei se pode me responder mas: esse teste de conexão com isql é realmente necessário?
        Last edited by cyberphantom; 05-01-2022, 16:51.

        Comment

        • Hernandes Martins
          Senior Member
          Zabbix Certified SpecialistZabbix Certified Professional
          • Apr 2011
          • 900

          #4
          Olá meu caro,

          Referente ao isql, sim é necessario para testar a conexão o zabbix vai usar essa lib pra fazer o teste, se não passar neste teste então no zabbix não vai funcionar.

          Certifique-se que os drivers existem e se estão no caminho correto, aparentemente ele ainda nao está dando match no nome do data source [MY.DB.NAME] ou no driver oracle.


          __

          Att.
          Hernandes Martins - Zabbix Trainer

          Zabbix Brazil Partner - www.luniobr.com

          Zabbix Brazil Community - www.zabbixbrasil.org

          Blog: hernandesmartins.blogspot.com.br

          Skype: hernandss
          Telegram: @MrHernandes

          Español
          Facebook: facebook.com/groups/zabbixlatam
          Telegram: https://t.me/ZabbixEspañol

          Português
          Facebook: facebook.com/groups/zabbixbrasil/
          Telegram: https://t.me/ZabbixBrasil

          Comment

          • cyberphantom
            Member
            • Dec 2021
            • 67

            #5
            Originally posted by mfortes
            Consegue enviar um print ou colar aqui o log completo do erro?

            De qualquer forma, da uma olhada nesse tutorial >
            https://oracle-base.com/articles/lin...c-dsn-on-linux
            Refiz os passos de acordo com o tutorial
            Vi uma evolução, apesar de novos erros surgirem haha
            Agora, ao tentar o comando:
            isql -v MY.DB.NAME <username> <password>
            recebo o seguinte:
            [S1000][unixODBC][FreeTDS][SQL Server]Unable to connect to data source
            [08S01][unixODBC][FreeTDS][SQL Server]Unable to connect: Adaptive Server is unavailable or does not exist
            [ISQL]ERROR: Could not SQLConnect
            Pode ser um bloqueio do conexão desse servidor do banco?

            Comment

            • cyberphantom
              Member
              • Dec 2021
              • 67

              #6
              Originally posted by Hernandes Martins
              Olá meu caro,

              Referente ao isql, sim é necessario para testar a conexão o zabbix vai usar essa lib pra fazer o teste, se não passar neste teste então no zabbix não vai funcionar.

              Certifique-se que os drivers existem e se estão no caminho correto, aparentemente ele ainda nao está dando match no nome do data source [MY.DB.NAME] ou no driver oracle.

              Entendo... muito obrigada! Vou verificar novamente

              Comment

              • mfortes
                Senior Member
                • Oct 2019
                • 415

                #7
                cyberphantom Pro link que eu passei, você deve se atentar ao TDS_Version que vai ser utilizado, pois cada versão de SQL usa uma versão diferente...
                Outra dica, é simplificar o DSN name... Coloca algo como teste1 e depois testa com o isql


                Michael R. Fortes

                Linkedin: Mike Fortes
                Medium: mromeiro-f

                Comment

                • cyberphantom
                  Member
                  • Dec 2021
                  • 67

                  #8
                  RESOLVIDO! Muito obrigada por todas as respostas, com certeza me ajudaram muito e enfim, consegui me conectar ao banco via isql!!
                  Sobre o erro de segmentação, se alguém tiver o mesmo, creio que seja o export nas variáveis de ambiente, criei um arquivo, mudei para executável e dentro está assim:
                  export ORACLE_HOME=/usr/lib/oracle/11.2/client64
                  export ORACLE_SID=XE
                  export TNS_ADMIN=/usr/lib/oracle/11.2/client64/network/admin
                  export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
                  export PATH=${ORACLE_HOME}:${PATH}

                  Depois, obtive o erro:
                  [S1000][unixODBC][Oracle][ODBC][Ora]ORA-12162: TNS:net service name is incorrectly specified

                  Para solucioná-lo, alterei meu arquivo odbc.ini, que ficou da seguinte forma:
                  [ODBC Data Sources]
                  IMSDB1.WORLD = Oracle Server

                  [DSN.NAME]
                  Driver = /usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1 #Altere para o caminho certo no seu ambiente
                  Description = Oracle Server
                  Trace = No
                  ServerName = //{ip.do.host.do.banco:1521/{nome.do.banco} #substitua os parâmetros entre {...} de acordo com o seu ambiente
                  Server = {ip.do.host.do.banco} #substitua os parâmetros entre {...} de acordo com o seu ambiente
                  Database = {nome.do.banco} #substitua os parâmetros entre {...} de acordo com o seu ambiente
                  Port = 1521 #verifique qual a porta correta
                  TDS_Version = 7.4

                  Execute o comando da seguinte forma:
                  $ isql {DNS.NAME} {user.do.banco} {senha.do.banco}

                  Não sei se todos esses parâmetros são necessários, mas está funcionando aqui :^)
                  Last edited by cyberphantom; 07-01-2022, 19:11.

                  Comment

                  • mfortes
                    Senior Member
                    • Oct 2019
                    • 415

                    #9
                    Boa, parabens mano !!


                    Michael R. Fortes

                    Linkedin: Mike Fortes
                    Medium: mromeiro-f

                    Comment

                    Working...