Avatar billede neocron Nybegynder
13. september 2007 - 18:21 Der er 12 kommentarer og
2 løsninger

VB.Net forbindelse til Oracle

Hejsa,
Jeg er igang med at lære Oracle. I forvejen har jeg en basal forståelse for SQL med i rygsækken fra MySQL, men det opsætningsmæssige er en ny verden for mig, så jeg håber på lidt pædagogisk hjælp fra nogle eksperter ;)

Jeg har en, skal vi sige, test server, hvorpå at Oracle (Express) er sat op. Jeg kan tilgå den udefra efter at have forwardet porten til serveren. Nu vil jeg så gerne til at skrive lidt software som benytter sig af Oracle. Og her står jeg pt og får grå hår.

Jeg benytter følgende:
- Visual Studio .NET (2005)
- Oracle Developer Tools for Visual Studio .NET 10.1.0.4

Jeg laver en console application med følgende kode:

Imports System
Imports System.Data
Imports Oracle.DataAccess.Client

Module Module1

    Sub Main()
        Dim c As OracleConnection = New OracleConnection()
        c.ConnectionString = "Data Source=xx.xx.xx.xx;User Id=oraclebruger;Password=kodeord;"

        Try
            c.Open()
            Console.WriteLine("Oracle connection ok.")
            Console.WriteLine()

        Catch ex As Exception
            Console.WriteLine("Oracle fejl: " & ex.Message)
        End Try
        c.Close()

        Console.ReadKey()
    End Sub

End Module

Data source er min WAN ip. (Er det her jeg gør noget galt?)
Hvis jeg compiler og udfører koden melder den tilbage:

ORA-12512: TNS:listener har p.t. intet kendskab til service, der anmodes om i forbindelses-descriptor.

Jeg har søgt lidt på nettet uden at finde noget konkret, dog blev jeg tilrådt at lave en "ALTER SYSTEM REGISTER" - det hjalp dog intet.

Derfor tilspørger jeg jer - kan I hjælpe mig på rette spor? :)
Avatar billede neocron Nybegynder
13. september 2007 - 18:24 #1
Det skal siges at her fra denne maskine hvor jeg udvikler kan jeg fint tilgå Oracle med Oracle SQL Developer - ingen problem med at tilslutte dér. Så forbindelsen kan altså opnåes.
Avatar billede arne_v Ekspert
13. september 2007 - 18:30 #2
Jeg kender ikke Oracles provider - jeg har altid brugt den der kommer med .NET, men
i data source skal du ikke angive IP - du skal angive navn, som saa i Oracle Client
bliver oversat til IP adresse.
Avatar billede arne_v Ekspert
13. september 2007 - 18:37 #3
Jeg mener at navnet for Express typisk er XE.
Avatar billede neocron Nybegynder
13. september 2007 - 18:38 #4
Det vil sige at det er faktisk noget jeg skal definere på serveren i opsætningen af Oracle?

Bare for at være sikker på at jeg forstår det ret - så burde jeg kunne kalde min Oracle for "testoracle" og så angive "testoracle" som resolver til IP?
Avatar billede neocron Nybegynder
13. september 2007 - 18:40 #5
(tør jeg endvidere spørge - hvor gør man dette) - igen, er meget, meget ny i Oracle setup
Avatar billede arne_v Ekspert
13. september 2007 - 19:00 #7
Jeg ville vaere meget forsigtig med at pille for meget i de filer.
Avatar billede neocron Nybegynder
13. september 2007 - 19:58 #8
Jeg er kommet frem til at mit SID (sandssynligvis) er "XE" - og så vidt jeg kan forstå på de guides er det det jeg skal bruge. Men det virker ikke.

Der meldes:
ORA-12154: TNS:kunne ikke fortolke den angivne forbindelsesidentifikator.

Jeg prøvede bl.a.
xe
XE
oraXE
oraxe
Avatar billede arne_v Ekspert
13. september 2007 - 20:08 #9
Og Oracle Client er installeret og konfigureret paa den maade paa den PC hvor du koerer dit .NET program ?
Avatar billede neocron Nybegynder
13. september 2007 - 20:46 #10
Det skulle det meget gerne være, ja. Det er tilgængeligt og det hele i VS.NET når man skriver selve koden. Godt nok er serveren en separat maskine, men tilgangen virker fint med Oracle SQL Developer.

Jeg har fået en grim mistanke om at jeg skal installere pakken på serveren også UDOVER computeren jeg arbejder på, da den skal bruge listeners?
Avatar billede neocron Nybegynder
13. september 2007 - 20:52 #11
Nå, der var altså en listener som standard, så den ide kom jeg ikke særlig langt med :)
Avatar billede neocron Nybegynder
13. september 2007 - 21:04 #12
Jeg har efter at have kigget i listener.ora set at listeneren hedder PLSExtProc. (SID).

Jeg har nu testet ved at compile programmet, smide det over på serveren og teste - men stadig samme fejl.
Avatar billede neocron Nybegynder
13. september 2007 - 21:56 #13
Aha! Jeg har fået hul igennem, og det uden at installere noget.
Denne connection string virker på Oracle Express (og sikkert også på andre...)

Dim oradb As String = "Data Source=(DESCRIPTION=" _
          + "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=DIN_HOST)(PORT=1521)))" _
          + "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=XE)));" _
          + "User Id=oraclebruger;Password=mitpassword;"

HOST findes i listener.ora og SERVICE_NAME er altså det, som der er standard for Oracle - uanset hvad der står angivet i listener.ora selvom nogle tutorials angiver dette!

Arne, jeg foreslår at vi deler 50-50 - jeg kom ind på en fejl i min konfiguration vha. de links du forsynede mig med, så hvis du vil smide et svar? :)
Avatar billede arne_v Ekspert
14. september 2007 - 02:57 #14
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester