我們創建了「登錄後」觸發器來更改會話以設置兩個NLS設置-NLS_SORT和NLS_COMP。需要將NLS_SORT設置爲BINARY_CI,並且需要將NLS_COMP設置爲LINGUISTIC。在建立連接以驗證值之後,通過查詢V $ NLS_PARAMETERS視圖,我發現NLS_COMP參數得到更新,但NLS_SORT沒有。OCI JDBC驅動程序和NLS設置
研究更後,我意識到,在建立連接
ALTER SESSION SET NLS_LANGUAGE='AMERICAN' NLS_TERRITORY='AMERICA'
後由於NLS_SORT派生自NLS_LANGUAGE,NLS_SORT參數值重置其值BINARY,而不是BINARY_CI的OCI JDBC驅動程序執行下面的查詢。 NLS_LANGUAGE設置取自Windows註冊表。
oci jdbc驅動程序是否執行這些查詢以將客戶端上的NLS設置與數據庫服務器上的設置同步?
可以配置jdbc oci驅動程序以避免執行alter session set NLS_LANGUAGE查詢嗎?
我之所以問的第二個問題是,它沒有任何意義的應用服務器(如GlassFish中,Tomcat的,JBoss的)機(其上安裝OCI客戶端)設置覆蓋數據庫服務器設置。
是的。有一個oracle提升請求,用於解決OCI驅動程序的問題。修復之後,語言和領土設置將在連接時傳遞給服務器,而不是在getConnection()調用之後傳遞它們,因爲它現在完成了。此修復程序將在版本12中提供。因此,現在唯一的解決方案是執行alter session查詢。 –
@AndyDufresne請提供提及的*增強請求以解決您提到的OCI驅動程序*的問題。 –
@Piotr Dobrogost - 您可以跟蹤計劃在12.1之前修復的id - 39670004。我現在不知道目前的狀態。 –