Programmieren - alles kontrollieren 4.941 Themen, 20.710 Beiträge

Oracle: ORA -12560: TNS: Fehler bei Protokolladapter

Tromain / 9 Antworten / Baumansicht Nickles

Hi,


ich erstelle (versuche es) bei Oracle 8i 8.1.7 Enterprise Edition auf WinXPProf, Datenbanken per Script. Mein Problem ist das ich nach anlegen der Instance (Build_inst.cmd) den Servermanager starten möchte (svrmgrl) und dann passiert das


ORA-12560: TNS: Fehler bei Protokolladapter. damit kann ich leider auch keine Connection durchführen und damit kann ich auch keine DB erstellen.


Wer kann mir helfen.

bei Antwort benachrichtigen
vergisses Tromain „Oracle: ORA -12560: TNS: Fehler bei Protokolladapter“
Optionen

Hi Tromain,

heute scheint ja Oracle Day zu sein ;-)
Die Frage ist hier eigentlich OT, ist ein Oracle Konfigurationsproblem.

Das ORA-12560 ist warscheinlich einer der häufigsten Fehler im Umgang mit SQL*NET.
Du mußt einfach nur die Netzwerkstrecke systematisch prüfen.
Hier z. B. bei Verwendung von TCP/IP:

1. Die Konfiguration des Clients
(normalerweise $ORACLE_HOME/network/admin/tnsnames.ora)
ansehen.
Da muss fuer Dein DB Alias eine Zielmaschine(als Name oder IP- Nr.),
ein IP Port und ein Service Name hinterlegt sein.
2. Die Zielmaschine genauso wie in dem tnsnames Eintrag anpingen.
Wenn nicht OK, TCP/IP Konfiguration prüfen.
3. Wenn Ping OK, ein tnsping DB Aliasname versuchen.
Wenn tnsping OK war, ist schon mal klar, dass auf dem DB Server ein Listener
auf dem konfigurierten IP Port für den konfigurierten Service Namen läuft.
Das bedeutet aber nicht unbedingt, dass die DB auch hochgefahren ist,
aber dann wuerdest Du eine andere Fehlermeldung bekommen ;-)

Wenn tnsping NOK war, kann das folgende Ursachen haben:
-Listener nicht gestartet, Überprüfen mit lsnrctl status
-Die Client Konfiguration passt nicht zu der Server (Listener)
Konfiguration auf dem DB Server
(normalerweise $ORACLE_HOME/network/admin/listener.ora auf dem Server)
-Die Datenbank Instanz ist gar nicht in der listener.ora konfiguriert.

In diesen Faellen die tnsnames.ora überprüfen, notfalls auch mal in die
sqlnet.ora auf Server und Client reinschauen.

Manchmal liegen diese Konfigurationsdateien nicht im Standardpfad.
In diesem Fall den Pfad über die Environment Variable bzw. Registry Eintrag
TNS_ADMIN feststellen.

Schreib mal, obs geholfen hat.
Gruss, vergisses

bei Antwort benachrichtigen
Tromain Nachtrag zu: „Oracle: ORA -12560: TNS: Fehler bei Protokolladapter“
Optionen

Mhm ja hab ich probiert leider ohne Erfolg, das Problem ist das die Instance nicht hochgefahren wird. Hab mal ein Spezialisten rangelassen der sich mit Oracle auskennt der hat auch gesagt das es so gehen sollte, nur eben bei mir nicht. Kann daran liegen das ich entweder die Scriptfiles falsch konfiguriert habe , oder das die DB nicht genügent Administrationsrecht hat. Wie auch immer, es wird wohl noch ein Stück arbeit, aber Danke erst mal, drotzdem. Mal sehen vielleicht gibt es ja bald ein neuen Thread von mir. :-)

See ya

bei Antwort benachrichtigen
vergisses Tromain „Mhm ja hab ich probiert leider ohne Erfolg, das Problem ist das die Instance...“
Optionen

Hi Tromain,

pruefe mal nach, ob es überhaupt einen Service für die Oracle
DB Instanz gibt.
Wenn nicht, ist das Erzeugen der Instanz schon misslungen.
In diesem Fall würde ich mal überprüfen,
ob in der init.ora der Parameter global_names = true gesetzt ist
und dann natürlich auch der Parameter db_domain entsprechend
Eurer TCP/IP Domain Konfiguration gesetzt ist.
Ausserdem sollte die TCP/IP Domain Konfiguration an sich
sauber laufen.

In der $ORACLE_HOME/network/admin/sqlnet.ora
sollte der Parameter NAMES.DEFAULT_DOMAIN entsprechend gesetzt sein
und NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
gesetzt sein.
Zum Tracen kannst Du uebrigens in der sqlnet.ora
mit
trace_level_client = ADMIN
trace_level_server = ADMIN
tnsping.trace_level = ADMIN
diverse Trace Level einschalten.

Hier ein Beispiel, wie eine Instanz erzeugt werden kann.
In dem Batch gendb.bat wird zuerst mit dem Tool oradim
ein Service für die neue Instanz (DB1) erzeugt.
Passwort fuer den User Internal = oracle.
init.ora ist K:\oracle\admin\db1\pfile\initdb1.ora

Anschliessend wird über svrmgrl mit dem Script db1run.sql
eine Minimalinstanz erzeugt,
die mit db1run1.sql erweitert wird.

Mit db1alterTablespace.sql wird nun das default und temporary
Tablespace des Users system angepasst.

Zum Schluss wird der Service fuer die DB Instanz auf Autostart gesetzt.

Die beigefuegten Beispiele entsprechen im Wesentlichen
einem "Setup Default". fuer eine produktiv eingesetzte
Datenbank muesste man noch einiges mehr bzw. anders machen ...

Gruss, vergisses

------------Datei gendb.bat----------
set ORACLE_SID=db1
K:\oracle\ora81\bin\oradim -new -sid DB1 -intpwd oracle -startmode manual -pfile "K:\oracle\admin\db1\pfile\initdb1.ora"
K:\oracle\ora81\bin\svrmgrl @K:\oracle\admin\db1\create\db1run.sql
K:\oracle\ora81\bin\svrmgrl @K:\oracle\admin\db1\create\db1run1.sql
K:\oracle\ora81\bin\svrmgrl @K:\oracle\admin\db1 create\db1alterTablespace.sql
K:\oracle\ora81\bin\oradim -edit -sid db1 -startmode auto
------------Ende Datei gendb.bat----------

------------Datei db1run.sql----------
spool K:\oracle\admin\db1\create\createdb
set echo on
connect INTERNAL/oracle
startup nomount pfile="K:\oracle\admin\db1\pfile\initdb1.ora"
CREATE DATABASE db1
LOGFILE 'F:\oracle\oradata\db1\redo01.log' SIZE 1024K,
'F:\oracle\oradata\db1\redo02.log' SIZE 1024K,
'F:\oracle\oradata\db1\redo03.log' SIZE 1024K
MAXLOGFILES 32
MAXLOGMEMBERS 2
MAXLOGHISTORY 1
DATAFILE 'F:\oracle\oradata\db1\system01.dbf' SIZE 264M REUSE AUTOEXTEND ON NEXT 10240K
MAXDATAFILES 254
MAXINSTANCES 1
CHARACTER SET WE8ISO8859P15
NATIONAL CHARACTER SET WE8ISO8859P15;
spool off
------------Ende Datei db1run.sql----------

------------Datei db1run1.sql----------
spool K:\oracle\admin\db1\create\createdb1
set echo on
connect INTERNAL/oracle

REM ********** ALTER SYSTEM TABLESPACE *********
ALTER TABLESPACE SYSTEM
DEFAULT STORAGE ( INITIAL 64K NEXT 64K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 50);
ALTER TABLESPACE SYSTEM
MINIMUM EXTENT 64K;

REM ********** TABLESPACE FOR ROLLBACK **********
CREATE TABLESPACE RBS DATAFILE 'F:\oracle\oradata\db1\rbs01.dbf' SIZE 80M REUSE
AUTOEXTEND ON NEXT 5120K
MINIMUM EXTENT 512K
DEFAULT STORAGE ( INITIAL 512K NEXT 512K MINEXTENTS 8 MAXEXTENTS 4096);

REM ********** TABLESPACE FOR USER **********
CREATE TABLESPACE USERS DATAFILE 'F:\oracle\oradata\db1\users01.dbf' SIZE 108M REUSE
AUTOEXTEND ON NEXT 1280K
MINIMUM EXTENT 128K
DEFAULT STORAGE ( INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0);

REM ********** TABLESPACE FOR TEMPORARY **********
CREATE TABLESPACE TEMP DATAFILE 'F:\oracle\oradata\db1\temp01.dbf' SIZE 72M REUSE
AUTOEXTEND ON NEXT 640K
MINIMUM EXTENT 64K
DEFAULT STORAGE ( INITIAL 64K NEXT 64K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0) TEMPORARY;

REM ********** TABLESPACE FOR Tools **********
CREATE TABLESPACE TOOLS DATAFILE 'F:\oracle\oradata\db1\tools01.dbf' SIZE 12M REUSE
AUTOEXTEND ON NEXT 320K
MINIMUM EXTENT 32K
DEFAULT STORAGE ( INITIAL 32K NEXT 32K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0);

REM ********** TABLESPACE FOR INDEX **********
CREATE TABLESPACE INDX DATAFILE 'F:\oracle\oradata\db1\indx01.dbf' SIZE 58M REUSE
AUTOEXTEND ON NEXT 1280K
MINIMUM EXTENT 128K
DEFAULT STORAGE ( INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0);

CREATE PUBLIC ROLLBACK SEGMENT RBS0 TABLESPACE RBS
STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS1 TABLESPACE RBS
STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS2 TABLESPACE RBS
STORAGE ( OPTIMAL 4096K );
ALTER ROLLBACK SEGMENT "RBS0" ONLINE;
ALTER ROLLBACK SEGMENT "RBS1" ONLINE;
ALTER ROLLBACK SEGMENT "RBS2" ONLINE;
alter user sys temporary tablespace TEMP;
@K:\oracle\ora81\Rdbms\admin\catalog.sql;
@K:\oracle\ora81\Rdbms\admin\catexp7.sql
@K:\oracle\ora81\Rdbms\admin\catproc.sql
@K:\oracle\ora81\Rdbms\admin\caths.sql
connect system/manager
@K:\oracle\ora81\sqlplus\admin\pupbld.sql
connect INTERNAL/oracle
spool off
------------Ende Datei db1run1.sql----------

------------Datei db1alterTablespace.sql----------
connect internal/oracle
alter user system default tablespace TOOLS;
alter user system temporary tablespace TEMP;
------------Datei db1alterTablespace.sql----------

bei Antwort benachrichtigen
vergisses Tromain „Mhm ja hab ich probiert leider ohne Erfolg, das Problem ist das die Instance...“
Optionen

Hi Tromain,

es kann aber auch sein, dass einfach nur die Environment- bzw.
Registry- Variable ORACLE_SID nicht richtig gesetzt ist ;-)

Gruss, vergisses

bei Antwort benachrichtigen
Tromain Nachtrag zu: „Oracle: ORA -12560: TNS: Fehler bei Protokolladapter“
Optionen

Dank Dir

bei Antwort benachrichtigen
Tromain Nachtrag zu: „Oracle: ORA -12560: TNS: Fehler bei Protokolladapter“
Optionen

Mhm also die Instance lässt sich gut anlegen, der Service läuft und lässt sich auch gut hoch,- und runterfahren. Nur eben nach eingabe des "svrmgrl" (Servermanager bei 8i) erscheint der ORA-12560: TNS: Fehler bei Protokolladapter. Der registry Eintrag der Oracle-SID steht auf "xxxx" sollte also keine Probleme geben. Hab mir jetzt mal eine Oracle 8i referenz von Loney / Koch zugelegt. 1320 Seiten Input und das für mein kleines Licht ;-). Dank Dir noch mal für das Script, werde es mal auf mich zuschneidern und testen sag dann noch mal bescheid. Ok. CU

bei Antwort benachrichtigen
vergisses Tromain „Mhm also die Instance lässt sich gut anlegen, der Service läuft und lässt...“
Optionen

Hi Tromain,

wenn der Service läuft, sollte die DB Instanz auch da sein.
Das kannst Du alleine schon am entsprechenden RAM Verbrauch
erkennen.

Wenn die Instanz da ist, kann es eigentlich nur noch ein
connect problem sein.

Läuft der Listener wirklich richtig ??
Ist Der TCP/IP Stack OK ??
Das würde ich zuerst prüfen:
lsnrctl stop
lsnrctl start
lsnrctl status
lsnrctl services

und notfalls die Konfigurationsdateien
sqlnet.ora,listener.ora,tnsnames.ora,init.ora
überprüfen.

Bei mir laesst sich der Fehler nur reproduzieren, wenn der
listener nicht läuft ;-)

Gruss, vergisses.

bei Antwort benachrichtigen
vergisses Tromain „Oracle: ORA -12560: TNS: Fehler bei Protokolladapter“
Optionen

Hi Tromain,

wenn Du im svrmgrl die ORA-12560 bekommst,
probier mal folgendes Kommando im svrmgrl aus:

set instance db1

Statt db1 musst Du natürlich den Namen Deiner Instanz nehmen ;-)
Wenn keine Fehlermeldung kommt, sollte auch ein connect internal klappen.

Gruss, vergisses.

bei Antwort benachrichtigen
Tromain Nachtrag zu: „Oracle: ORA -12560: TNS: Fehler bei Protokolladapter“
Optionen

Ja also wie vermutet hat mein Rechner nicht die gewünschten zugriffsrechte und somit ist die Erstellung mit Datenbankscripten also ein Fass ohne Boden. Mein Admin gibt mir halt auch nicht mehr Rechte und somit werde, oder hab ich schon eine Datenbank mit dem Installer erstellt die jetzt auch läuft. Werde in naher Zukunft meinen Rechner noch mal Platt machen und dann auch die gewünschten Rechte bekommen und mich dann wieder mit Scripten beschäftigen. Dank Dir noch mal und bis bald

Tromain

bei Antwort benachrichtigen