Klaus Mock: Oracle 9i Datenbank erstellen

Beitrag lesen

Hallo,

kenne die Konventionen dieses Forums noch nicht!

Obwohl Doppelpostings wirklich nicht das Wahre sind, so wird die Vorfolgung von Doppelposter für meinen Geschmack doch etwas übertrieben.

ich bekomme einfach keine neue Datenbank, die ich dem Baum hinzugefügt habe, zum Laufen!

Ich bin zwar kein Experte zum Thema Oracle-Konfiguration, aber vielleihct kann ich einige nützliche Hinweise geben.

beim Erstellen der neuen DB hab ich folgende Angaben gemacht:

Host: rechner-0560nntbn1
Port: 1521
SID: mydbsid
Net Service Name: mydb

die neue DB hat dann folgenden TNS-Deskriptor:

(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=axel-0560nntbn1)
(PORT=1521)))(CONNECT_DATA=(SID=mydbsid)(SERVER=DEDICATED)))

axel-0560nntbn1 und rechner-0560nntbn1 sind beide der selbe Rechner und auch so 'anpingbar', also via DNS oder lokaler hosts-Datei definiert? Und wie lautet das Alias zudiesem Descriptor? Ublicherweise steht vor diesem Block noch etwas in der tnsnames.ora.
<sample>
mydb =
(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=axel-0560nntbn1)
(PORT=1521)))(CONNECT_DATA=(SID=mydbsid)(SERVER=DEDICATED)))
</sample>

Dann kannst Du z.B. mit
  tnsping mydb
oder
  sqlplus scott/tiger@mydb
die Datenbank ansprechen (bzw. jedes andere Clientprogramm).

Ausserdem gibt es da noch eine Datei, die sqlnet.ora heisst. In der stehen globale Netzwerkparameter. Vielleicht steht da etwas wie
NAMES.DEFAULT_DOMAIN = WORLD
drin. Das hat zur Folge, dass obiges Beispiel eigentlich
<sample>
mydb.world =
(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=axel-0560nntbn1)
(PORT=1521)))(CONNECT_DATA=(SID=mydbsid)(SERVER=DEDICATED)))
</sample>

lauten müsste.

Beide Dateien sind in %ORACLE_HOME%\network\admin (Windows) bzw. $ORACLE_HOME/network/admin (Unix/Linux) zu finden.

Danach hab ich in der Oracle Net Konfiguration im Ordner "Dienstebenennug" einen
Dienst namens mydb mit der SID mydbsid.

Und die zugehörigen Dienster laufen auch?  Unter Windows müssen beispielsweise zwei Dienste existieren und laufen:
1.) der TNS-Listener ( z.B. OracleOracleHomeTNSListener)
2.) das eigentliche Datenbankservice (in Deinem Falle OracleServicemydbsid)

ORA-12505: TNS:listener could not resolve SID given in connect descriptor

auf dem Datenbankrechner kannst Du Dir mit
lsnrctl services
die konfigurierten Services ausgeben.

Eines davon müsste mydbsid heissen.

Außerdem würde ich gerne anstatt der SID einen Dienstnamen verwenden. Der obige TNS-Deskriptor enthält jedoch
keinen SERVICE_NAME !!!???

afaik ist SID und SERVICE_NAME austauschbar. Schreibe also, wie Du willst.

@[pref:t=67530&m=386337]:
Wenn das alles richtig konfiguriert ist und Du beispielsweise mit sqlplus eine Verbindung zur Datenbank hast, kannst Du mit

#!C:\perl\bin\perl.exe

use DBI;

$dbh = DBI->connect('dbi:Oracle:mydb', 'scott/tiger', '');
#bzw.
$dbh = DBI->connect('dbi:Oracle:host=axel-0560nntbn1;sid=mydbsid;port=1521', 'scott/tiger', '');

unter Perl die Dtaenbank ansprechen.

Grüße
  Klaus