Avatar billede dmk Nybegynder
13. oktober 2003 - 15:26 Der er 4 kommentarer

extproc og Listener / OS Authentication

Hejsa

Jeg har lavet en External Stored Procedure, som jeg kalder via ExtProc. Dette virker helt fint.
Min External Stored Procedure kalder herefter tilbage til databasen, for at udføre noget arbejde i nogle tabeller. Detter virker også helt fint, så længe jeg leverer et brugernavn og password den kan connecte med.

Mit problem er så, at jeg gerne vil benytte OS Authentication til at connecte tilbage med, så jeg ikke behøver hardcode et brugernavn/password enten i DLL'en eller databasen som kalder den.
Listener-servicen kører som udgangspunkt som LocalSystem. Jeg har forsøgt at oprette en "OPS$LOCALSYSTEM" bruger, men det virker ikke. Jeg har så prøvet at lade listeneren kører som en bruger der også er oprettet på databasen, men når jeg så kalder min Stored Procedure får jeg følgende fejl:

ORA-28546 Forbindelsesinitialisering fejlede, sandsynligvis Net8-admin-fejl

Kan man ikke lade listeneren køre som en anden bruger end LocalSystem, og samtidig få ExtProc til at virke?
Eller betyder fejlen noget helt andet?

Alle input er velkomne!
Avatar billede holdam Nybegynder
14. oktober 2003 - 09:01 #1
Ifølge beskrivelsen i "Oracle9i Application Developer's Guide - Fundamentals" er det ikke nødvendigt at angive brugernavn og password hvis du vil lave callback (altså logge ind som samme bruger). Du kalder OCIExtProcGetEnv og så har du et OCI handle til din kontekst, inklusive det schema du "kommer fra".

Der ligger et eksempel i $ORACLE_HOME/plsql/demo med navnet extproc.c (og extproc.sql) hvor der laves callback til databasen, uden angivelse af brugernavn.

En anden situation er naturligvis hvis du vil logge ind som en anden bruger; men jeg ved ikke om det er tilfældet for dig.
Avatar billede dmk Nybegynder
15. oktober 2003 - 10:48 #2
Tak for en rigtig god kommentar. Jeg kendte ikke til den funktionalitet.

Desværre er der et par problemer med det.
For det første har jeg brug for, at jeg kan lave DDL statements når jeg laver callback. Det kan man ikke vha. den kontekst man sender med fra PL/SQL.
For det andet har jeg brug for, at jeg kan benytte en anden bruger end den der kalder PL/SQL funktionen. Grunden til dette er, at min funktion ligger i et andet skema end den aktive bruger, og det er i dette skema jeg har brug for at foretage DDL statements.

Så jeg står stadig med den eneste løsning lige nu, at jeg bliver nødt til at sende brugernavn og password med som parametre i min External Stored Procedure, hvis ikke jeg kan få listeneren til at køre som en anden bruger, uden at få ovennævnte fejl.

Men tak for forsøget!
Avatar billede larildsen Nybegynder
17. oktober 2003 - 13:28 #3
Hmmmm
Så vidt jeg kan se, så er det ikke listener'en der skal have et andet brugernavn, men oracle kernen.
Jeg ville forsøge at lade OracleService<DB Navn> køre i en navngiven bruger, der har de korrekte rettigheder
Avatar billede dmk Nybegynder
22. oktober 2003 - 10:36 #4
Undskyld jeg ikke lige har fået svaret med det samme, men der har været lidt stress den sidste uge.

Jeg har forsøgt at lade OracleServicen køre som en anden bruger også, men det går også lidt galt. Jeg får følgende fejl når jeg ændrer servicen til at køre som en anden bruger:

ORA-12500:tns:Listenerens start af en dedikeret serverproces fejlede

Jeg kan godt bruger applikationer der tilgår databasen (så som sqlplus), men jeg får ovenstående fejl når jeg forsøger at connecte fra min External SP, og når jeg forsøger at logge på som SYS i Enterprice Manageren.

Jeg tænkte så, at det måske var fordi både listeneren og servicen skulle køre som samme bruger, så det forsøgte jeg så også. Så kunne jeg igen bruge min Enterprice Manager, men fik så den gammelkendte fejl fra min External SP (ORA-28546).
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