在oracle中,可以利用“alter system set "_optimizer_connect_by_cost_based" = false scope=both;”语句解决无法从套接字读取更多的数据的异常,该语句将“_optimizer_connect_by_cost_based”的值设置为both,修改后当前起作用,下次重启数据库也起作用。
本教程操作环境:windows10系统、Oracle 12c版、Dell G3电脑。
问题现象:
日志中出现如下报错:
遇到这个问题,可以查看oracle日志,分析问题的原因。
oracle数据库的最常用问题定位日志是alert日志,oracle数据库的日志文件alert_$ORACLE_SID.log记录了重作日志的转换,数据库启动和关闭,数据库结构的改变,回退段的修改,死锁,内部错误等信息。
路径是:ORACLE_BASE/admin/ORACLE_SID/bdump/alert_ORACLE_SID.log
新的Oracle数据库的日志文件在ORACLE_BASE/diag/rdbms下面,如:D:appAdministratordiag dbmsorclorcl race
也可以通过sql语句查找位置:
Alert log XML文件位置:select value from v$diag_info where name ='Diag Alert';
Alert log文本文件位置:select value from v$diag_info where name ='Diag Trace';
解决方法:
alter system set "_optimizer_connect_by_cost_based" = false scope=both ;
参考详情
_optimizer_connect_by_cost_based 为使用基于成本的转换进行连接,默认为true scope 就是这个参数修改的SQL的影响的范围,总共有三个值:both、memory,spfile。
1.scope=memory修改后当前就起作用,重启数据库不起作用
2.scope=spfile修改后当前不起作用,下次重启数据库才起作用
3.scope=both修改后当前起作用,下次重启数据库也起作用
推荐教程:《Oracle视频教程》
以上是oracle无法从套接字读取更多的数据怎么办的详细内容。更多信息请关注PHP中文网其他相关文章!