在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日志,分析問題的原因。
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視頻教程》