In Oracle können Sie die Anweisung „alter system set „_optimizer_connect_by_cost_based“ = false Scope=both;“ verwenden, um die Ausnahme zu lösen, dass keine weiteren Daten aus dem Socket gelesen werden können. Diese Anweisung setzt den Wert von „_optimizer_connect_by_cost_based“ auf Both . Nach der Änderung funktioniert es derzeit und wird auch beim nächsten Neustart der Datenbank funktionieren.
Die Betriebsumgebung dieses Tutorials: Windows 10-System, Oracle Version 12c, Dell G3-Computer.
Problemphänomen:
Der folgende Fehler erscheint im Protokoll:
Wenn dieses Problem auftritt, können Sie das Oracle-Protokoll überprüfen und analysieren Sie die Ursache des Problems.
Das am häufigsten verwendete Problem beim Auffinden des Protokolls der Oracle-Datenbank ist das Warnprotokoll. Die Protokolldatei der Oracle-Datenbank „alert_$ORACLE_SID.log“ zeichnet die Konvertierung des Redo-Protokolls, das Starten und Herunterfahren der Datenbank, Änderungen in der Datenbankstruktur und die Änderung von Rollback-Segmenten auf. und Deadlocks, interne Fehler und andere Informationen.
Der Pfad lautet: ORACLE_BASE/admin/ORACLE_SID/bdump/alert_ORACLE_SID.log
Die Protokolldatei der neuen Oracle-Datenbank befindet sich unter ORACLE_BASE/diag/rdbms, z. B.: D:appAdministratordiag dbmsorclorcl race
Sie können auch die finden Speicherort über SQL-Anweisung:
Speicherort der XML-Datei des Warnprotokolls: Wählen Sie den Wert aus v$diag_info aus, wobei Name ='Diag Alert';
Speicherort der Textdatei des Warnprotokolls: Wählen Sie den Wert aus v$diag_info aus, wobei Name ='Diag Trace';
Lösung:
alter system set "_optimizer_connect_by_cost_based" = false scope=both ;
Referenzdetails
_optimizer_connect_by_cost_based dient zum Herstellen einer Verbindung mit der kostenbasierten Konvertierung. Der Standardwert ist true. Der Umfang ist der durch diesen Parameter geänderte SQL-Bereich. Insgesamt gibt es drei Werte: beides, Speicher, spfile.
1.Scope=Speicher ist derzeit nach der Änderung wirksam, ein Neustart der Datenbank funktioniert nicht
2.scope=spfile ist derzeit nach der Änderung unwirksam und wird erst beim nächsten Neustart der Datenbank wirksam
3.scope= Beides wird derzeit nach der Änderung geändert. Es funktioniert, und es wird auch dann funktionieren, wenn Sie die Datenbank das nächste Mal neu starten
Empfohlenes Tutorial: „Oracle Video Tutorial“
Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn Oracle nicht mehr Daten aus dem Socket lesen kann?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!