Pular para o conteúdo
  • Este tópico contém 4 respostas, 2 vozes e foi atualizado pela última vez 16 anos, 1 mês atrás por airoosp.
Visualizando 5 posts - 1 até 5 (de 5 do total)
  • Autor
    Posts
  • #92263
    airoosp
    Participante

      Boa tarde,

      Preciso criar um JOB que seja executado todos os dias e faça insert e update em duas tabelas do Sql Server onde a origem dos dados é o Oracle. Criar o job, procedure não há problema, o que eu não sei é fazer com que o Oracle acesse tabelas do Sql Server. Será necessário utilizar ODBC?

      Obrigado.

      Airton

      #92264
      VitorLeandro
      Participante

        Você precisa utilizar o Oracle Heterogeneous Services caso faça isso através do Oracle. Já consegui fazer funcionar somente para teste mesmo, pois é bastante complicado!

        Faça pelo SQLServer que é bem mais fácil… Utilize o DTS ou SSIS…

        Mas se realmente quiser fazer com o Oracle, segue um link explicando…

        http://download-west.oracle.com/docs/cd … co.htm#173

        #92266
        airoosp
        Participante

          Estou aprimorando os meus conhecimentos sobre Oracle, fiz os cursos mas o aprendizado é dia a dia. Não tenho nenhum conhecimento sobre Sql Server, pois aqui na empresa utilizamos Oracle 9i e uma das aplicações utiliza o Sql Server.

          #92285
          airoosp
          Participante

            Boa tarde,

            Consegui configurar o ambiente para acesso ao SqlServer através do HS mas ao utilizar o database link para acessar as tabelas do SqlServer, o Oracle exibe a mensagem de erro:

            ORA-12505: TNS:listener não pôde resolver SID fornecido no descritor de conexão.

            Verifiquei as configurações do listener.ora, tnsnames.ora e initSQLSERVER.ora este criado para utilizar a conexão via ODBC.

            O serviço do listener foi parado e executado novamente e o erro continua. Executando TNSPING ACESSO_SQLSERVER que foi criado no TNSNAMES.ORA o resultado é OK 10.

            Alguém tem idéia do que pode estar errado, utilizo Oracle 9i.

            Obrigado.

            Airton

            #92378
            airoosp
            Participante

              Após muitas pesquisas na Internet consegui resolver o problema, segue abaixo a solução.

              Ambiente utilizando 2 servidores sendo:

              Server 1 ( Windows Server e instalados Oracle 9i e SqlServer 2005 )
              Server 2 ( Windows Server e instalado Oracle 9i )

              No Server 1 é necessário configurar uma conexão ODBC que aponte para o SqlServer utilizando um usuário/senha criado neste banco.
              Depois alterar o arquivo LISTENER.ORA onde o nome do sid_name deverá ser o nome da conexão ODBC.
              Além disso é necessário especificar o programa hsodbc no parâmetro PROGRAM.

              Exemplo do listener.ora:

              SID_LIST_LISTENER =
              (SID_LIST =

              (SID_DESC =
                (ORACLE_HOME = e:oracleora92)
                (SID_NAME = ACSQL)
                (PROGRAM = hsodbc)
              )
              

              .
              .
              .

              Depois fazer uma cópia do arquivo inithsodbc.ora para initNOMEDACONEXAOODBC.ora e após criar o arquivo alterar os 2 parâmetros conforme exemplo abaixo:

              initACSQL.ora

              This is a sample agent init file that contains the HS parameters that are

              needed for an ODBC Agent.

              #

              HS init parameters

              #
              HS_FDS_CONNECT_INFO = ACSQL
              HS_FDS_TRACE_LEVEL = NO

              HS_FDS_TRACE_FILE_NAME = trace1.trc

              HS_FDS_SHAREABLE_NAME = E:oracleora92ODBC

              #

              Environment variables required for the non-Oracle system

              #

              No Server 2 é necessário alterar o arquivo TNSNAMES.ORA acrescentado uma chamada para a conexão ao SqlServer conforme example abaixo:

              ACESSO_SQL =
              (DESCRIPTION=
              (ADDRESS=
              (PROTOCOL=tcp)
              (HOST=172.17.6.15)
              (PORT=1521)
              )
              (CONNECT_DATA=
              (SID=ACSQL)
              )
              (HS=OK)
              )

              Ainda no Server 2 verificar se o parâmetro GLOBAL_NAMES esta com o valor FALSE, se não alterar o parâmetro. Criar um database link utilizando a nova conexão criada no arquivo TNSNAMES.ORA

              O HS significa heterogeneous services.

              A partir da versão 10g o HS foi substituido pelo DG4ODBC conforme informação pesquisada na Internet.

              Obrigado.

              Airton

            Visualizando 5 posts - 1 até 5 (de 5 do total)
            • Você deve fazer login para responder a este tópico.