Connect mit dynamischen User versorgen

Hallo,

ich habe in einer Tabelle verschiedene Datenbank User hinterlegt.
Diese Datenbank User möchte ich in einem SQL Skript lesen und anschließend damit einen Connect versorgen.
Mein SQL Skript sieht etwa so aus:


variable db_user varchar2(30)

BEGIN
select user_name into :db_user from prdb_login;
END;
/

connect :db_user/passwort@connect


Der connect wird aber nicht ausgeführt.
Es kommt immer die Meldung:
ORA-01017: invalid username/password; logon denied

Ich habe eine Oracle 10g Datenbank welche auf einem Windows Server 2003
läuft.

Vielleicht hat einer eine Idee, was ich falsch mache.
Oder muss man das Problem ganz anders lösen?

Besten Dank
Christoph

Hi!

Leider strotzt Dein Script vor Fehler UND - leider - Miß-(Un-?)verständnissen:

variable db_user varchar2(30)

es reicht ein

col xyz new\_value db\_user

BEGIN
select user_name into :db_user from prdb_login;
END;
/

Hättest Du hier eine Exception eingebaut, würde Dir Oracle eine Fehlermeldung hinter die Löffeln hauen. Dafür hilft

select username as xyz from dual;

oder auch prdb oder was auch immer …

connect :db_user/passwort@connect

„:“ ist hier komplett falsch, ein

connect &db\_user/passwort@connect

verbindet Dich als USER von PRDB_LOGIN (bei mir von DUAL) mit dem Passwort PASSWORT auf die Datenbank CONNECT …

Kurz nochmals der 3-Zeiler:

col xyz new\_value db\_user

select username as xyz from dual;

connect &db\_user/passwort@connect

Der Sinn dahinter sei mal dahingestellt … ich erkenne ihn zumindest nicht ganz, außer alle User haben daselbe Passwort …

Grüße,
Tomh

Hallo,

erst einmal besten Dank für deine Antwort.
Trotzdem erlaube ich mir einige Anmerkungen:

1.) Die aufgeführten Befehle waren nur Auszüge aus dem SQL Skript und sollten prinzipiell nur darstellen, was ich meinte.
Vielleicht habe ich dies nicht deutlich genug beschrieben.

2.) Natürlich macht es keinen Sinn nur den Usernamen aus der Tabelle zulesen. In der Tabelle steht ausser dem Usernamen auch noch das Passwort und der Connect String, so dass das ganze Connect Kommando über Variablen vesorgt wird.

3.) Ich möchte mich für meine Unwissenheit entschuldigen, aber ich habe gedacht dieses Forum ist nicht nur für Experten, sondern auch für Anfänger, oder Leute die nicht so viel Erfahrung haben.

Viele Grüße
Christoph

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Christoph,

ich erlaube mir Deine Antwort etwas umzusortieren:

3.) Ich möchte mich für meine Unwissenheit entschuldigen, aber
ich habe gedacht dieses Forum ist nicht nur für Experten,
sondern auch für Anfänger, oder Leute die nicht so viel
Erfahrung haben.

Niemand braucht sich hier für seine Unwissenheit entschuldigen, ich glaube sagen zu können, dass Tom das ganz sicher nicht böse oder auch nur herablassend gemeint hat. Also nur ja nicht aufhören zu fragen…

2.) Natürlich macht es keinen Sinn nur den Usernamen aus der
Tabelle zulesen. In der Tabelle steht ausser dem Usernamen
auch noch das Passwort und der Connect String, so dass das
ganze Connect Kommando über Variablen vesorgt wird.

Das halte ich für äußerst diskutabel - ich nehme an Dir ist klar, dass das eine Riesen-Sicherheitslücke ist, oder?

Gruß
Martin

Hi, Ihr Beiden!

Niemand braucht sich hier für seine Unwissenheit
entschuldigen, ich glaube sagen zu können, dass Tom das ganz
sicher nicht böse oder auch nur herablassend gemeint hat. Also
nur ja nicht aufhören zu fragen…

Würde ich auch gar nicht wagen, vor allem an einem Tag, an dem ich Stunden an einen Fehler in der Konfiguration herumsuchte, nur um schließlich festzustellen, daß ICH einen Parameter _versehentlich_ groß- anstatt kleingeschrieben in einem UNIX-System weitergebe …

Grüße,
Tomh