Połączenie z bazą Oracle

0

Witam,
mam problem z połączeniem się z bazą danych ORACLE 11g.

Zainstalowałem Oracle Database Express Edition 11g Release 2, uruchomiłem SQL DEVELOPER stworzyłem nową tabele.

W Delphi w ADOConnection1 w polu ConnectionString wybrałem:

92879a2710.png

Tutaj widziałem, że niektórzy posiadają orcl, niestety u mnie tego nie wyświetla.
Muszę zmienić SID w SQL DEVELOPER?(Mam tam wpisane xe, jeśli zmienie na orcl otrzymuję błąd).

9c5d3673ae.png

Podałem nazwę użytkownika oraz hasło(bez nich test połączenia jest również pozytywny), kliknąłem Testuj połaczenie i wszystko w porzadku.

W komponencie ADOQuery1 w Connection wybrałem ADOConnection1.
w Sql wpisałem

Select * FROM LUKASZ

Po ustawieniu Active:=True w ADOQuery1 otrzymuję błąd

85ef6b83e7.png.

Czy ktoś pomoże mi uporać się z tym problemem?
Proszę o pomoc.

0

dlaczego ten sterownik a nie ten, który ma oracle w nazwie?

0

Nie rozumiem o jakim sterowniku mówisz.

Może coś w tym jest nie tak:

http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/11g/r2/prod/appdev/sqldev/sqldev_mngdb/sqldev_mngdb_otn.htm

Tutaj należy ściągnąć plik sqldev_mngdb.zip , oraz rozpakować do folderu gdzie jest zainstalowany oracle.
Ale nie wiem dokładnie gdzie...

Myślę że w sqldeveloper muszę w SID umieścić orcl a nie jak dotychczas xe(no i właśnie chodzi o miejsce rozpakowania folderu).

0
lukasz_p92 napisał(a):

Nie rozumiem o jakim sterowniku mówisz.

To nie zupełnie tak; Ty w ogóle nie rozumiesz co robisz ;-)
Próbujesz połączyć się z bazą Oracle używając sterownika dla dBASE (doczytaj z łaski swojej co to jest ten dBASE). Spoko.
Równie dobrze możesz próbować na księżyc lecieć furmanką - efekt będzie identyczny.

Może coś w tym jest nie tak:
http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/11g/r2/prod/appdev/sqldev/sqldev_mngdb/sqldev_mngdb_otn.htm

Tutaj należy ściągnąć plik sqldev_mngdb.zip , oraz rozpakować do folderu gdzie jest zainstalowany oracle.
Ale nie wiem dokładnie gdzie...
Myślę że w sqldeveloper muszę w SID umieścić orcl a nie jak dotychczas xe(no i właśnie chodzi o miejsce rozpakowania folderu).

A co ma piernik do wiatraka?
Zassaj sobie sterownik ODBC dla Oracle i tyle.
Tyle, że Oracle to jest "Enterprise Database" i tam najprostsze rzeczy są mega przekombinowane.... Np. instalacja sterownika ODBC, który jest w paczce klient zajmującej 650 MB. A co.
Poczytaj:
http://www.connectionstrings.com/download-oracle-11g-release-2-client-odbc-drivers/

Zamiast ODBC możesz użyć OLE DB Provider for Oracle:
http://www.oracle.com/technetwork/database/windows/index-089115.html

0
WTF napisał(a):

Tyle, że Oracle to jest "Enterprise Database" i tam najprostsze rzeczy są mega przekombinowane.... Np. instalacja sterownika ODBC, który jest w paczce klient zajmującej 650 MB. A co.

Sratatata - jak ma zainstalowanego XE to ma i klienta - po co ma instalować innego. To po pierwsze. Po drugie jak potrzebujesz całą paczkę to ściągasz 600MB - twoja sprawa. Jak nie potrzebujesz to ściągasz instant clienta.

0
abrakadaber napisał(a):
WTF napisał(a):

Tyle, że Oracle to jest "Enterprise Database" i tam najprostsze rzeczy są mega przekombinowane.... Np. instalacja sterownika ODBC, który jest w paczce klient zajmującej 650 MB. A co.

Sratatata - jak ma zainstalowanego XE to ma i klienta - po co ma instalować innego. To po pierwsze. Po drugie jak potrzebujesz całą paczkę to ściągasz 600MB - twoja sprawa. Jak nie potrzebujesz to ściągasz instant clienta.

Skoro wszystko ma to dlaczego mu nie działa, panie sratatata?
A Instant Client <> ODBC; trzeba jeszcze do IC doinstalować biblioteki ODBC.

0

pewnie dlatego panie wszechwiedzący, że ma wybrane sterowniki dla DBASE a nie dla oracle. Poza tym połączeni mu działa bo "Zainstalowałem Oracle Database Express Edition 11g Release 2, uruchomiłem SQL DEVELOPER stworzyłem nową tabele." czyli jakoś się połączył bez instalacji dodatkowych klientów.

@wloochacz masz jakiś problem do mnie czy po prostu lubisz się [CIACH!]?

0
abrakadaber napisał(a):

pewnie dlatego panie wszechwiedzący, że ma wybrane sterowniki dla DBASE a nie dla oracle. Poza tym połączeni mu działa bo "Zainstalowałem Oracle Database Express Edition 11g Release 2, uruchomiłem SQL DEVELOPER stworzyłem nową tabele." czyli jakoś się połączył bez instalacji dodatkowych klientów.

OP chce łączyć się za pomocą ODBC, a SQL Developer OIDP, nie wymaga żadnego klienta (połączenie bezpośrednie TCP/IP z bazą danych.) - a na pewno nie wymaga ODBC, które trzeba doinstalować, bo jest to opcja!

@wloochacz masz jakiś problem do mnie czy po prostu lubisz się [CIACH!]?

Lubię do każdego kto pitoli trzy-po-trzy, tak jak ty w tym wątku.
Chętniej bym przeczytał jak odpisujesz OP na pytanie - jak ma zainstalować sterownik ODBC dla Oracle?

2

słuchaj wiesz dużo (tak, znam Cię jeszcze z plcd, i mam jakieś pojęcie o tym co i jak tworzysz) ale zaczynasz mieć kompleks boga. Traktujesz każdego jak przygłupa, który nie wie co robi. Niech wreszcie dotrze do ciebie, że nie pozjadałeś wszystkich rozumów. Pytacz zadał proste pytanie - czemu nie działa. Odpowiedź na nie jest równie prosta - BO MA WYBRANY ZŁY STEROWNIK - DBASE ZAMIAST ORACLE. Koniec i kropka. Nie musi niczego instalować, nic ustawiać. Wszystko ma już w systemie od momentu zainstalowania bazy Oracle XE 11. Chcesz dowodu - proszę bardzo, specjalnie dla Ciebie:

  1. czysty windows XP (akurat taki obraz miałem pod ręką) z zainstalowanym tylko i wyłącznie Oracle XE 11

ADO3.png

  1. utworzony user test z hasłem test

  2. CAŁY PROGRAM

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, ADODB;

type
  TForm1 = class(TForm)
    con1: TADOConnection;
    qry1: TADOQuery;
    btn1: TButton;
    procedure btn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
begin
  qry1.SQL.Text := 'SELECT sysdate FROM dual';
  qry1.Open;
  ShowMessage(DateToStr(qry1.Fields[0].AsDateTime));
  qry1.Close;
end;

end.
object Form1: TForm1
  Left = 270
  Top = 61
  Width = 928
  Height = 480
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object btn1: TButton
    Left = 160
    Top = 120
    Width = 75
    Height = 25
    Caption = 'btn1'
    TabOrder = 0
    OnClick = btn1Click
  end
  object con1: TADOConnection
    ConnectionString = 
      'Provider=MSDAORA.1;Password=test;User ID=test;Data Source=xe;Per' +
      'sist Security Info=True'
    Provider = 'MSDAORA.1'
    Left = 104
    Top = 48
  end
  object qry1: TADOQuery
    Connection = con1
    Parameters = <>
    Left = 104
    Top = 120
  end
end
  1. ADOCOnnection ustawione tak

ADO1.png
ADO2.png

  1. i wynik na VM:

ADO4.png

O dziwo działa, nie chce sterowników, nie wywala że brak klienta - jednym słowem cud.
Ale dla Ciebie pewnie i to będzie za mało. A sterowniki do ODBC instaluje tak jak proponuje Oracle - ściągam InstantClienta Basic i do tego ODBC Supplement. Wypakowywuje, dodaje ścieżkę do zmiennej systemowej PATH, ustawiam TNS_ADMIN i NLS_LANGUAGE a na koniec uruchamiam odbc_install.exe po czym w Źródła danych ODBC mam pozycję Oracle in Client xx, gdzie xx to wersja klienta Oracle. I jakoś to działa - fakt, że kulawo, zamiast e zwraca t a zamiast 7 zwraca Q ale klienci się przyzwyczaili i już nie marudzą...

dodanie znacznika <code class="delphi"> - @furious programming

0

*Ściągnąłem Instant Client Package -instantclient-basic-windows.x64-12.1.0.2.0.zip
*Oraz Instant Client Package - ODBC- instantclient-odbc-windows.x64-12.1.0.2.0.zip
*Wypakowałem

@abrakadaber powiesz mi jaką ścieżkę mam dodać do zmiennej systemowej PATH, i gdzie ustawić TNS_ADMIN i NLS_LANGUAGE ?

Pewnie wtedy mi to ruszy.

0
lukasz_p92 napisał(a):

*Ściągnąłem Instant Client Package -instantclient-basic-windows.x64-12.1.0.2.0.zip
*Oraz Instant Client Package - ODBC- instantclient-odbc-windows.x64-12.1.0.2.0.zip
*Wypakowałem

@abrakadaber powiesz mi jaką ścieżkę mam dodać do zmiennej systemowej PATH, i gdzie ustawić TNS_ADMIN i NLS_LANGUAGE ?

Pewnie wtedy mi to ruszy.

jeśli bazę oracle masz zainstalowaną NA TYM SAMYM KOMPIE, na którym próbujesz program uruchomić to NIE MUSISZ nic ściągać i instalować (patrz wyżej na mój post jak ustawić ADOConnection aby działało). A jak na innym to http://www.dbatoolz.com/t/installing-oracle-instantclient-basic-and-instantclient-sqlplus-on-win32.html
NLS_LANGUAGE ustawiasz tak samo jak TNS_ADMIN z linku z tym, że jako wartość podajesz kodowanie w jakim chcesz dostać to co idzie z bazy, czyli np. dla CP1250 polish_poland.ee8mswin1250

0
abrakadaber napisał(a):

słuchaj wiesz dużo (tak, znam Cię jeszcze z plcd, i mam jakieś pojęcie o tym co i jak tworzysz) ale zaczynasz mieć kompleks boga.

Jeśli już to Boga ;-)
Ale jednak nie - mam inne, ale na pewno nie taki.

Traktujesz każdego jak przygłupa, który nie wie co robi. Niech wreszcie dotrze do ciebie, że nie pozjadałeś wszystkich rozumów.

To twoja opinia, ale udowodnij mi że się mylę - choć raz, a z radością przyznam ci rację.
A klepanie w tym stylu zarezerwuj sobie do kogoś bliższego - mnie to ani grzeje ani ziębi.
Natomiast zupełnie nie rozumiem dlaczego się aż tak ciskasz?
Bo pozwoliłem sobie zwrócić ci uwagę? Przyzwyczajaj się, bo to na pewno nie po raz pierwszy i nie ostatni.

Pytacz zadał proste pytanie - czemu nie działa. Odpowiedź na nie jest równie prosta - BO MA WYBRANY ZŁY STEROWNIK - DBASE ZAMIAST ORACLE. Koniec i kropka.

Nie koniec, kropka - on po prostu w/w sterowników nie ma u siebie w systemie, porównaj sobie obrazki...

Nie musi niczego instalować, nic ustawiać. Wszystko ma już w systemie od momentu zainstalowania bazy Oracle XE 11. Chcesz dowodu - proszę bardzo, specjalnie dla Ciebie:

A jeśli to jest na maszynie, na której nie została zainstalowana baza danych Oracle XE i aplikacja ma się łączyć do serwera w sieci?

  1. czysty windows XP (akurat taki obraz miałem pod ręką) z zainstalowanym tylko i wyłącznie Oracle XE 11

Widocznie OP nie zainstalował tego samego co ty (może coś w instalatorze podznaczał?), ale nie w ten sam sposób. To bez znaczenia, ważne że on w/w sterowników nie ma w systemie.

/ciach/
O dziwo działa, nie chce sterowników, nie wywala że brak klienta - jednym słowem cud.
Ale dla Ciebie pewnie i to będzie za mało.

Tak, za mało bo znowu pitolisz ;-)
Żaden cud - OP nie ma sterowników i ADO łączyć się nie będzie, bo nie ma za pomocą czego.
Koniec kropka.

A sterowniki do ODBC instaluje tak jak proponuje Oracle - ściągam InstantClienta Basic i do tego ODBC Supplement.

Zaraz zaraz; przecież napisałeś w końcu że nic nie robiłeś, a teraz piszesz że jednak tak?
No to jak w końcu?
Rozumiem, że instalacja Oracle XE nie instaluje sterownika ODBC tylko OLE DB, tak?
Poza tym - skąd żeś w swoim czystym systemie wytrzasnął Microsoft OLE DB Provider for Oracle?

Wypakowywuje, dodaje ścieżkę do zmiennej systemowej PATH, ustawiam TNS_ADMIN i NLS_LANGUAGE a na koniec uruchamiam odbc_install.exe po czym w Źródła danych ODBC mam pozycję Oracle in Client xx, gdzie xx to wersja klienta Oracle. I jakoś to działa - fakt, że kulawo, zamiast e zwraca t a zamiast 7 zwraca Q ale klienci się przyzwyczaili i już nie marudzą...

Poważnie nie marudzą?
No to ja jednak zostanę przy swoim czepianiu się, bo to kuriozum :)

0

Mam na tym samym komputerze. Tzn nie muszę dodawać nic ?
Kiedy wybiorę
15e519a2d0.png
A następnie wypełnię pola to otrzymuję błąd:
974d251d6f.png

1
wloochacz napisał(a):

Jeśli już to Boga ;-)

wielkość liter była zamierzona

wloochacz napisał(a):

Pytacz zadał proste pytanie - czemu nie działa. Odpowiedź na nie jest równie prosta - BO MA WYBRANY ZŁY STEROWNIK - DBASE ZAMIAST ORACLE. Koniec i kropka.

Nie koniec, kropka - on po prostu w/w sterowników nie ma u siebie w systemie, porównaj sobie obrazki...

no właśnie porównaj sobie - pierwszy obrazek w poście pytacza jak byk dwie pozycje niżej od zaznaczonej

wloochacz napisał(a):

Nie musi niczego instalować, nic ustawiać. Wszystko ma już w systemie od momentu zainstalowania bazy Oracle XE 11. Chcesz dowodu - proszę bardzo, specjalnie dla Ciebie:

A jeśli to jest na maszynie, na której nie została zainstalowana baza danych Oracle XE i aplikacja ma się łączyć do serwera w sieci?

To trzeba doinstalować - jak też napisałem

Widocznie OP nie zainstalował tego samego co ty (może coś w instalatorze podznaczał?), ale nie w ten sam sposób. To bez znaczenia, ważne że on w/w sterowników nie ma w systemie.

Wyjaśnij mi jedno - na jakiej podstawie stwierdzasz, że nie zainstalował albo że nie ma? Wyjaśnisz mi to to przeproszę i więcej się nie odezwę. Bo ja tylko widzę, że próbuje się połączyć z oracle a błędy (i screeny) pokazują, że łączy się z dBase.

/ciach/

A sterowniki do ODBC instaluje tak jak proponuje Oracle - ściągam InstantClienta Basic i do tego ODBC Supplement.

Zaraz zaraz; przecież napisałeś w końcu że nic nie robiłeś, a teraz piszesz że jednak tak?
No to jak w końcu?

To jest instrukcja dla Ciebie bo sam pytałeś - "Chętniej bym przeczytał jak odpisujesz OP na pytanie - jak ma zainstalować sterownik ODBC dla Oracle?"

Rozumiem, że instalacja Oracle XE nie instaluje sterownika ODBC tylko OLE DB, tak?
Poza tym - skąd żeś w swoim czystym systemie wytrzasnął Microsoft OLE DB Provider for Oracle?

W XP, W7, W8 (98 nie pamiętam) jak wejdziesz w źródła danych ODBC 32bit wpis Microsoft ODBC for Oracle jest z urzędu - sprawdź sobie u siebie. Jest wpis ale źródła danych nie utworzysz opartego o ten sterownik bo będzie krzyczał, że nie ma OCI zainstalowanego (trzeba zainstalować klienta oracle albo bazę z klientem). Dlaczego tak jest - pytaj MS. Co do OLE DB Provider for Oracle to taką listę pokazuje kreator z ADO. Jak ten konkretny wpis się tam znalazł nie wiem - nie korzystałem z ADO i nigdy nie potrzebowałem tego roztrząsać.

Wypakowywuje, dodaje ścieżkę do zmiennej systemowej PATH, ustawiam TNS_ADMIN i NLS_LANGUAGE a na koniec uruchamiam odbc_install.exe po czym w Źródła danych ODBC mam pozycję Oracle in Client xx, gdzie xx to wersja klienta Oracle. I jakoś to działa - fakt, że kulawo, zamiast e zwraca t a zamiast 7 zwraca Q ale klienci się przyzwyczaili i już nie marudzą...

Poważnie nie marudzą?
No to ja jednak zostanę przy swoim czepianiu się, bo to kuriozum :)

to ironia (nie mylić z aronią) była

Przyczyną całego zamieszania zapewne będzie niezgodność 32-bit vs 64-bit aplikacji i klienta.

0

Dokłądna to Oracle Database Express Edition 11g Release 2 for Windows x64 z http://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/index.html

Screen SQL Developer przy połączeniu z bazą
327b2bfb37.png

Nie wiem czy coś jeszcze mogę pokazać, aby ułatwić znalezienie rozwiązania.

0
abrakadaber napisał(a):
wloochacz napisał(a):

Jeśli już to Boga ;-)

wielkość liter była zamierzona

No to już wiemy kto i jak ma kompleks ;-)

wloochacz napisał(a):

Pytacz zadał proste pytanie - czemu nie działa. Odpowiedź na nie jest równie prosta - BO MA WYBRANY ZŁY STEROWNIK - DBASE ZAMIAST ORACLE. Koniec i kropka.

Nie koniec, kropka - on po prostu w/w sterowników nie ma u siebie w systemie, porównaj sobie obrazki...

no właśnie porównaj sobie - pierwszy obrazek w poście pytacza jak byk dwie pozycje niżej od zaznaczonej

wloochacz napisał(a):

Nie musi niczego instalować, nic ustawiać. Wszystko ma już w systemie od momentu zainstalowania bazy Oracle XE 11. Chcesz dowodu - proszę bardzo, specjalnie dla Ciebie:

A jeśli to jest na maszynie, na której nie została zainstalowana baza danych Oracle XE i aplikacja ma się łączyć do serwera w sieci?

To trzeba doinstalować - jak też napisałem

Widocznie OP nie zainstalował tego samego co ty (może coś w instalatorze podznaczał?), ale nie w ten sam sposób. To bez znaczenia, ważne że on w/w sterowników nie ma w systemie.

Wyjaśnij mi jedno - na jakiej podstawie stwierdzasz, że nie zainstalował albo że nie ma? Wyjaśnisz mi to to przeproszę i więcej się nie odezwę. Bo ja tylko widzę, że próbuje się połączyć z oracle a błędy (i screeny) pokazują, że łączy się z dBase.

Pokazał dalej dlaczego (patrz obrazek z komunikatem błędu), a i ja doczytałem, że MS OLE DB Provider for Oracle jest częścią MDAC'a.
Tyle, że to i tak wymaga klienta Oracle bo jest to ino wrapper na niego - sam z siebie nie pozwala łączyć się z Oracle.

/ciach/

A sterowniki do ODBC instaluje tak jak proponuje Oracle - ściągam InstantClienta Basic i do tego ODBC Supplement.

Zaraz zaraz; przecież napisałeś w końcu że nic nie robiłeś, a teraz piszesz że jednak tak?
No to jak w końcu?

To jest instrukcja dla Ciebie bo sam pytałeś - "Chętniej bym przeczytał jak odpisujesz OP na pytanie - jak ma zainstalować sterownik ODBC dla Oracle?"

Rozumiem, że instalacja Oracle XE nie instaluje sterownika ODBC tylko OLE DB, tak?
Poza tym - skąd żeś w swoim czystym systemie wytrzasnął Microsoft OLE DB Provider for Oracle?

W XP, W7, W8 (98 nie pamiętam) jak wejdziesz w źródła danych ODBC 32bit wpis Microsoft ODBC for Oracle jest z urzędu - sprawdź sobie u siebie. Jest wpis ale źródła danych nie utworzysz opartego o ten sterownik bo będzie krzyczał, że nie ma OCI zainstalowanego (trzeba zainstalować klienta oracle albo bazę z klientem). Dlaczego tak jest - pytaj MS. Co do OLE DB Provider for Oracle to taką listę pokazuje kreator z ADO. Jak ten konkretny wpis się tam znalazł nie wiem - nie korzystałem z ADO i nigdy nie potrzebowałem tego roztrząsać.

Jak pisałem wyżej - to część MDACa, ale nie wszystko co potrzebne aby się za pomocą tego z Oracle połączyć. Tak, aby było bardziej zakręcone ;-)

Wypakowywuje, dodaje ścieżkę do zmiennej systemowej PATH, ustawiam TNS_ADMIN i NLS_LANGUAGE a na koniec uruchamiam odbc_install.exe po czym w Źródła danych ODBC mam pozycję Oracle in Client xx, gdzie xx to wersja klienta Oracle. I jakoś to działa - fakt, że kulawo, zamiast e zwraca t a zamiast 7 zwraca Q ale klienci się przyzwyczaili i już nie marudzą...

Poważnie nie marudzą?
No to ja jednak zostanę przy swoim czepianiu się, bo to kuriozum :)

to ironia (nie mylić z aronią) była
Przyczyną całego zamieszania zapewne będzie niezgodność 32-bit vs 64-bit aplikacji i klienta.

Przy sterownikach ODBC ma to znacznie, przy OLE DB - nie wiem.
A przy SQL Server Native Client (dla ms sql) jest jeszcze inaczej, wymagana jest wersja zgodna z Windows (32 lub 64 bit), a nie z aplikacją.

0

Zainstalowałem 32 bitową bazę danych, i wszystko działa.
Bardzo dziękuję za pomoc !

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