Maison  >  Article  >  base de données  >  Que dois-je faire si Oracle ne peut pas lire davantage de données depuis le socket ?

Que dois-je faire si Oracle ne peut pas lire davantage de données depuis le socket ?

WBOY
WBOYoriginal
2022-06-10 10:24:0417280parcourir

Dans Oracle, vous pouvez utiliser l'instruction "alter system set "_optimizer_connect_by_cost_based" = false scope=both;" pour résoudre l'exception de l'impossibilité de lire plus de données à partir du socket. Cette instruction définit la valeur de "_optimizer_connect_by_cost_based" sur les deux. . Après modification, il fonctionne actuellement et fonctionnera également au prochain redémarrage de la base de données.

Que dois-je faire si Oracle ne peut pas lire davantage de données depuis le socket ?

L'environnement d'exploitation de ce tutoriel : système Windows 10, Oracle version 12c, ordinateur Dell G3.

Que dois-je faire si Oracle ne peut pas lire plus de données depuis le socket ?

Phénomène problématique :

L'erreur suivante apparaît dans le journal :

Que dois-je faire si Oracle ne peut pas lire davantage de données depuis le socket ?

Si vous rencontrez ce problème, vous pouvez consulter le journal Oracle. et analyser la cause du problème.

Le journal de localisation des problèmes le plus couramment utilisé de la base de données Oracle est le journal d'alerte. Le fichier journal alert_$ORACLE_SID.log de la base de données Oracle enregistre la conversion du journal redo, le démarrage et l'arrêt de la base de données, les changements dans la structure de la base de données, la modification des segments d'annulation, et les blocages, les erreurs internes et d'autres informations.

Le chemin est : ORACLE_BASE/admin/ORACLE_SID/bdump/alert_ORACLE_SID.log

Le fichier journal de la nouvelle base de données Oracle se trouve sous ORACLE_BASE/diag/rdbms, tel que : D:appAdministratordiag dbmsorclorcl race

Vous pouvez également trouver le emplacement via l'instruction SQL :

Emplacement du fichier XML du journal d'alerte : sélectionnez la valeur dans v$diag_info où nom = 'Diag Alert' ;

Emplacement du fichier texte du journal d'alerte : sélectionnez la valeur dans v$diag_info où nom = 'Diag Trace';

Solution :

alter system set "_optimizer_connect_by_cost_based" = false scope=both ;

Détails de référence

_optimizer_connect_by_cost_based consiste à utiliser une conversion basée sur les coûts pour se connecter, la valeur par défaut est true. La portée est la portée du SQL modifié par ce paramètre, il y a trois valeurs au total : les deux, mémoire, spfile.

 1.Scope=la mémoire est actuellement effective après modification, le redémarrage de la base de données ne fonctionnera pas

 2.scope=spfile est actuellement inefficace après modification, et il ne prendra effet qu'au prochain redémarrage de la base de données

 3.scope= les deux sont actuellement modifiés après modification. Cela fonctionne, et cela fonctionnera même si vous redémarrez la base de données la prochaine fois

Tutoriel recommandé : "Tutoriel vidéo Oracle"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn