Połączenie z bazą Oracle 12c – jak pozbyć się błędu?

0

Witam
Czy ktoś wie jak z poziomu Delphi (Tokyo) połączyć się z bazą Oracle 12c? Bez problemu działa SQL Developer Oracle. Zrobiłem wszystko co opisane w artykule:

Niestety dostaję ciągle komunikat opisany na początku tego artykułu:

[FireDAC][Phys][Ora]-1309. OCI is not properly installed on this machine (NOE1/INIT)

Dzięki za podpowiedzi

0

Którego rozwiązania użyłeś?

0

"Thin" Oracle Instant Client ale próbowałem obydwóch

2

jeśli aplikacja jest 32bit to klient też musi być 32bit (analogicznie z 64bit) i nie ma tutaj najmniejszego znaczenia ilu bitowy jest system. A teraz po kolei

  1. http://www.oracle.com/technetwork/database/database-technologies/instant-client/instantclient-downloads-4362605.html
  2. wybierasz odpowiednią wersję
  3. ściągasz paczkę Instant Client Package - Basic
  4. ściągasz Microsoft Visual Studio Redistributable w odpowiedniej wersji jeśli nie masz
  5. wypakowywujesz ściągnięte archiwum z pkt. 3
  6. do zmiennej PATH !NA POCZĄTKU! dodajesz ścieżkę z pkt. 5 + \instantclient_12_2 - dokładniej rzecz biorąc musi być ścieżka do pliku oci.dll
  7. dodajesz do zmiennych systemowych (tam gdzie jest PATH) dodatkową zmienną NLS_LANG z wartością polish_poland.ee8mswin1250 aby mieć pl literki
  8. jeśli używasz pliku tnsnames.ora to do zmiennych systemowych dodajesz jeszcze TNS_NAMES z wartością ścieżki do tego pliku
    i musi zadziałać - mam tak setkę instalacji i działa
0
abrakadaber napisał(a):

jeśli aplikacja jest 32bit to klient też musi być 32bit (analogicznie z 64bit) i nie ma tutaj najmniejszego znaczenia ilu bitowy jest system. A teraz po kolei

  1. http://www.oracle.com/technetwork/database/database-technologies/instant-client/instantclient-downloads-4362605.html
  2. wybierasz odpowiednią wersję
  3. ściągasz paczkę Instant Client Package - Basic
  4. ściągasz Microsoft Visual Studio Redistributable w odpowiedniej wersji jeśli nie masz
  5. wypakowywujesz ściągnięte archiwum z pkt. 3
  6. do zmiennej PATH !NA POCZĄTKU! dodajesz ścieżkę z pkt. 5 + \instantclient_12_2 - dokładniej rzecz biorąc musi być ścieżka do pliku oci.dll
  7. dodajesz do zmiennych systemowych (tam gdzie jest PATH) dodatkową zmienną NLS_LANG z wartością polish_poland.ee8mswin1250 aby mieć pl literki
  8. jeśli używasz pliku tnsnames.ora to do zmiennych systemowych dodajesz jeszcze TNS_NAMES z wartością ścieżki do tego pliku
    i musi zadziałać - mam tak setkę instalacji i działa

zrobiłem wszystko wg instrukcji i teraz dostaję taki komunikat:

screenshot-20180222214526.png

0

tam, gdzie się próbujesz podłączyć nie działa nasłuch (listener), BTW wpisanie w google ORA-12560 zwraca naprawdę pomocne info

0

Problem w tym że listener działa

0

jakby działał to by błędu nie było. Może zaczniesz pisać konkrety a nie to co Ci się wydaje.

  1. na jakiej maszynie jest zainstalowany serwer oracle i jaka wersja
  2. uruchom cmd i wpisz lsnrctrl status (jeśli pokaże, że nie ma takiego polecenia to trzeba przejść do ORACLE_HOME\bin) i wynik daj tutaj
  3. na jakiej maszynie uruchamiasz program
0
# tnsnames.ora Network Configuration File: E:\app\PIOTR\virtual\product\12.2.0\dbhome_2\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

LISTENER_ORION =
  (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))


ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )

ORION =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORION)
    )
  )

# listener.ora Network Configuration File: E:\app\PIOTR\virtual\product\12.2.0\dbhome_2\network\admin\listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = E:\app\PIOTR\virtual\product\12.2.0\dbhome_2)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:E:\app\PIOTR\virtual\product\12.2.0\dbhome_2\bin\oraclr12.dll")
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )
0
abrakadaber napisał(a):

jakby działał to by błędu nie było. Może zaczniesz pisać konkrety a nie to co Ci się wydaje.

  1. na jakiej maszynie jest zainstalowany serwer oracle i jaka wersja
  2. uruchom cmd i wpisz lsnrctrl status (jeśli pokaże, że nie ma takiego polecenia to trzeba przejść do ORACLE_HOME\bin) i wynik daj tutaj
  3. na jakiej maszynie uruchamiasz program
  1. Windows 7 Ultimate, Oracle 12c
e:\app\PIOTR\virtual\product\12.2.0\dbhome_2\bin>lsnrctl.exe status

LSNRCTL for 64-bit Windows: Version 12.2.0.1.0 - Production on 23-LUT-2018 09:08
:57

Copyright (c) 1991, 2016, Oracle.  All rights reserved.

ú╣czenie z (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))
STAN NASúUCHU
------------------------
Alias                    LISTENER
Wersja                   TNSLSNR for 64-bit Windows: Version 12.2.0.1.0 - Produc
tion
Data rozpoczŕcia        23-LUT-2018 07:42:00
Czas dzia│ania                    0 dni 1 h 27 min. 1 s
Poziom ťladu            off
Zabezpieczenie          ON: Local OS Authentication
SNMP                      OFF
Plik parametrˇw nas│uchu   E:\app\PIOTR\virtual\product\12.2.0\dbhome_2\network\
admin\listener.ora
Plik dziennika nas│uchu E:\app\PIOTR\virtual\diag\tnslsnr\APSH-SRV\listener\aler
t\log.xml
Nas│uch punktˇw ko˝cowych - podsumowanie...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=APSH-SRV)(PORT=5500))(Security=(my_
wallet_directory=F:\APP\PIOTRORACLE\admin\orclent\xdb_wallet))(Presentation=HTTP
)(Session=RAW))
Podsumowanie us│ug...
Us│uga "CLRExtProc" ma liczbŕ instancji rˇwn╣ 1.
  Instancja "CLRExtProc", stan UNKNOWN, ma dla tej us│ugi 1 procedur(-ŕ, -y) obs
│ugi...
Us│uga "ORION" ma liczbŕ instancji rˇwn╣ 1.
  Instancja "orion", stan READY, ma dla tej us│ugi 1 procedur(-ŕ, -y) obs│ugi...

Us│uga "ORIONXDB" ma liczbŕ instancji rˇwn╣ 1.
  Instancja "orion", stan READY, ma dla tej us│ugi 1 procedur(-ŕ, -y) obs│ugi...

Us│uga "orclent" ma liczbŕ instancji rˇwn╣ 1.
  Instancja "orclent", stan READY, ma dla tej us│ugi 1 procedur(-ŕ, -y) obs│ugi.
..
Us│uga "orclentXDB" ma liczbŕ instancji rˇwn╣ 1.
  Instancja "orclent", stan READY, ma dla tej us│ugi 1 procedur(-ŕ, -y) obs│ugi.
..
Us│uga "pdborcl" ma liczbŕ instancji rˇwn╣ 1.
  Instancja "orclent", stan READY, ma dla tej us│ugi 1 procedur(-ŕ, -y) obs│ugi.
..
Polecenie zako˝czone powodzeniem
  1. program uruchamiam na tej samej maszynie na której jest zainstalowany serwer
0

co wpisujesz w connection (bez hasła :)) i jeśli korzystasz z tnsnames.ora to daj też jego zawartość

0
abrakadaber napisał(a):

co wpisujesz w connection (bez hasła :)) i jeśli korzystasz z tnsnames.ora to daj też jego zawartość

# tnsnames.ora Network Configuration File: E:\app\PIOTR\virtual\product\12.2.0\dbhome_2\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

LISTENER_ORION =
  (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))


ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )

ORION =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORION)
    )
  )

  
ORION2 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORION)
    )
  )

screenshot-20180223143725.png

dostaje taki komunikat

screenshot-20180223143931.png

1 użytkowników online, w tym zalogowanych: 0, gości: 1