2009-01-15 30 views
11

tôi đã xác định nls_date_format toàn cầu về Oracle 10,2 XE như sau:Làm thế nào để thay đổi nls_date_format mặc định cho oracle client jdbc

alter system set nls_date_format='YYYY-MM-DD HH24:MI:SS' scope=spfile; 

Khi kết nối trên Windows, khách hàng ghi đè bằng định dạng phiên cụ thể, vì vậy tôi cần phải chạy dòng này vào đầu mỗi phiên:

alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS'; 

Tuy nhiên, tôi có một số mã tùy chỉnh mà tôi không thể thay đổi (mã jdbc, sử dụng ojdbc14.jar), vì vậy tôi không thể thực hiện dòng này khi nhận sự kết nối. Có cách nào để thay đổi giá trị mặc định của nls_date_format cho tất cả các kết nối jdbc không? Có lẽ thêm một cái gì đó vào chuỗi kết nối, hoặc một số biến môi trường mà tôi có thể sử dụng? Bằng cách này, sqlplus và sqldeveloper cũng ghi đè lên định dạng của máy chủ với riêng của họ, nhưng tôi đã tìm ra cách thay đổi các giá trị mặc định của chúng, do đó, vấn đề chỉ là với các kết nối jdbc.

Trả lời

5

Đặt định dạng ngày nls trong trình kích hoạt sau khi đăng nhập

5

Cảm ơn, điều đó đã hiệu quả đối với tôi. Trigger mà tôi chèn là thế này:

CREATE OR REPLACE TRIGGER LOGINTRG 
AFTER LOGON ON DATABASE 
BEGIN 
EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_DATE_FORMAT=''YYYY-MM-DD HH24:MI:SS'''; 
END LOGINTRG; 
+0

Xem http://stackoverflow.com/questions/283589/oracle-setting-per-user-default-scheme-not-altering-a-session vào việc tạo ra kích hoạt cho lược đồ cụ thể. – Vadzim

+0

Tôi đã thử điều này, nó hoạt động, nhưng nó làm chậm mọi thứ xuống đến mức nó không thể đếm được (chọn số (*) trên một bảng trống mất vài giây !!!) – laurent

+0

@laurent âm thanh với tôi như vấn đề của bạn đang ẩn ở nơi khác. Chúng tôi đã sử dụng kích hoạt đăng nhập này trong sản xuất với nhiều khách hàng trong nhiều năm và không có vấn đề gì. – Yoni

Các vấn đề liên quan