Oracle 9i Datenbank erstellen
Alex
- datenbank
Hallo,
ich habe in der Oracle 9i Enterprise Manager-Konsole (Standalone)
eine neue Datenbank erstellt. Nun möchte ich auf diese zugreufen, bekomme jedoch ständig folgende Fehlermeldung:
ORA-12545:CONNECT misslungen, da Ziel-Host oder- Objekt nicht vorhanden
Was muss beim Anlegen einer neuen DB bei HOST-NAME,SID und NET SERVICE NAME konkret angegeben werden? Mit der Oracle-Hilfe komm ich nicht weiter!
Danke
Servus,
dann schau erst mal in den Diensten nach, ob folgende laufen:
TNSListener
Dieser kann auch TNS(NET Servis NAME)Listener oder ähnlich heissen.
Ebenfalls muss ein oracleService(SID) Dienst laufen.
Das wars wenn min. diese laufen solltest du auf die DB zugreifen können.
Öffne doch mal die SQL Console sprich SQL Plus.
Dort findest Du die Benötigten Anmeldeinformationen.
Einmal den Benutzer -> als Administrator system
Passwort manager
(Standardinstallation)
Wenn Dein TNS Listener richtig eingerichtet ist, benötigst du in der Host Zeihnfolge nur den Net8 Name, denn Du beim definieren vom TNS Service vergeben hast.
Ansonsten musst Du dir etwas aus SID (Datenbankname)@Hostname (Rechnername) :1521 Port zusammenbasteln.
Wie das nochmals genau geht weiss ich grad nicht.
Brauch das nun auch nicht jeden Tag und man hat ja seine Tools dafür.
Gruss Matze
Servus,
ich hab eine neue Datenbank TESTDB zum Baum hinzugefügt.
Danach hab ich in der Oracle Net Konfiguration im Ordner "Dienstebenennug" eine lokale Benennungsmethode "testdb" den unteren Angaben entsprechend konfiguriert und einen Listener für den Host erstellt.
Angaben zu TESTDB:
Host: rechner-0560nntbn1
Port: 1521
Dienstname: testdb.localhost
TNS-Deskriptor:
(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=rechner-0560nntbn1)(PORT=1521)))
(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=testdb.localhost)))
Wenn ich auf diese DB zugreifen will, erhalte ich jedoch ständig die Fehlermeldung,
dass der TNS:Listener den im Verbindungsdeskriptor angegebenen SERVICE_NAME nicht auflösen kann.
Wie lässt sich dieses Problem beheben ?
Gruß Alex
Servus,
Du hast glück, dass ich grad nochmals rein gesehen habe.
(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=rechner-0560nntbn1)(PORT=1521)))
(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=testdb.localhost)))
Der DB deinst heisst doch nicht testdb.localhost oder doch?!?
Lass also das .localhost weg und schon sollte es gehen.
-> Dienst natürlich neu starten.
Ausserdem solltest Du vermeiden, dass Listener Dienst gleih heisst wie die DB Das kann zu Problemen führen.
Gruss Matze
Sorry,
kenne die Konventionen dieses Forums noch nicht!
Hier hab ich nochmals mein Problem formuliert:
ich bekomme einfach keine neue Datenbank, die ich dem Baum hinzugefügt habe, zum Laufen!
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)))
Danach hab ich in der Oracle Net Konfiguration im Ordner "Dienstebenennug" einen
Dienst namens mydb mit der SID mydbsid.
Wenn ich dann diesen Dienst mydb teste, erhalte ich folgende Fehlermeldung:
ORA-12505: TNS:listener could not resolve SID given in connect descriptor
Obwohl also im TNS-Deskriptor und im Dienst die SID mydbsid angegeben ist, funktionierts nicht!
Außerdem würde ich gerne anstatt der SID einen Dienstnamen verwenden. Der obige TNS-Deskriptor enthält jedoch
keinen SERVICE_NAME !!!???
Wie muss dieser Dienstname überhaupt aussehen, einfach nur ein Wort (z.B. oracle)
oder mit Domäne (z.B. oracle.localhost) ?????
Merci
Alex
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: mydbdie 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
Hi,
der Rechner heißt natürlich axel-0560nntbn1!
Dies steht in tnsnames.ora, nachdem ich in der Datei SID
durch SERVICE_NAME ersetzt hab:
MYDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = axel-0560nntbn1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = mydb.localhost)
)
)
Diese Eintragung müsste also korrekt sein, oder?
Wenn ich mit tnsping mydb die Datenbank anspreche, erhalte ich:
Attempting to contact (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=axel-0560nntbn1)(PORT=1521)))
(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=mydb.localhost)))
OK (80ms)
Wenn ich dies mit sqlplus user/passwd@mydb tue, erhalte ich die Fehlermeldung:
ORA-12514: TNS:Listener konnte in Verbindungsdeskriptor angegebenen
SERVICE_NAME nicht auflösen
Mit lsnrctl services wird nur der Dienst "oracle.localhost" der vorkonfigurierten
Datenbank ORACLE angegeben (die ja auch funktioniert), nicht jedoch für die Datenbank MYDB !!
Wie bekomme ich also
1.) der TNS-Listener ( z.B. OracleOracleHomeTNSListener)
2.) das eigentliche Datenbankservice
zum laufen ???
Wenn das überhaupt das Problem ist !!???
Gruß
Alex
Servus,
wenn Deine SID -> DB Instanz die Du angelegt hast mydb heisst, dann muss in der tnsnames.ora
MYDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = axel-0560nntbn1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = mydb)
)
)
stehen.
Das mit dem .localhost ist falsch und das will auch kein Mensch wissen. Den Rechner in deinem Fall localhost hast du ja schon angegeben.
(HOST = axel-0560nntbn1)
Gruss Matze
Servus,
einen kleinen auszug aus meiner listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle1)(PORT = 1521))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = E:\oracle\ora90)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = trinidat)
(ORACLE_HOME = E:\oracle\ora90)
(SID_NAME = trinidat)
)
)
sowie meiner
TRINIDAT =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = trinidat)
)
)
INST1_HTTP =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = SHARED)
(SERVICE_NAME = trinidat)
(PRESENTATION = http://admin)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
Oracle1 ist der entsprechende Hostname.
Das was Du hier als trinidat findest ist z.B: Meine SID
Und TRINIDAT -> Dem Net Service Name.
Stell bitte sicher, dass allee dienste gestartet sind. Fahr eventuell den Rechner neu hoch, denn die Reihenfolg ist ebenfalls nicht unbedeutend.
Grus Matze