ORA-01882: समय क्षेत्र नहीं मिला


102

जब मैं अपना एप्लिकेशन चलाता हूं, तो मैं एक ओरेकल डेटाबेस को एक जावा एप्लिकेशन से एक्सेस कर रहा हूं, मुझे निम्न त्रुटि मिलती है:

java.sql.SQLException: ORA-00604: त्रुटि पुनरावर्ती SQL स्तर 1 ORA-01882 पर हुई: समय क्षेत्र नहीं मिला


हमें अपने पर्यावरण के बारे में बताएं, आप अपना जावा कैसे चलाते हैं?
एबीसीएड

मैं कमांड लाइन पर जावा एप्लिकेशन चला रहा हूं। विंडोज 7 64 बिट, लेकिन ओरेकल डीबी एक रिमोट यूनिक्स सर्वर पर चल रहा है।
नादलमा

9
अपने कमांड में "-Duser.timezone = <your_GMT>" जोड़ने का प्रयास करें, अपने GMT के साथ <Your_GMT> को बदलना न भूलें, -Duser.timezone = "+ 05:30"
ABC

जवाबों:


87

आप Oracle jdbc ड्राइवर और Oracle डेटाबेस के संस्करण की जाँच करने का भी प्रयास कर सकते हैं। ओरेकल 9.2.0.4.0 सर्वर से कनेक्ट करने के लिए ojdbc6.jar (संस्करण 11.2.0.3.0) का उपयोग करते समय आज ही मेरे पास यह मुद्दा था। इसे ojdbc6.jar संस्करण 11.1.0.7.0 के साथ प्रतिस्थापित करने से समस्या हल हो गई।

मैं भी oracle.jdbc.timezoneAsRegion=falseफ़ाइल त्रुटि / jdbc / defaultConnectionProperties.properties (जार के अंदर) जोड़कर, त्रुटि के बिना ojdbc6.jar संस्करण 11.2.0.3.0 बनाने में कामयाब रहा । इसका समाधान यहां मिला

अंत में, एक -Doracle.jdbc.timezoneAsRegion=falseकमांड लाइन में जोड़ सकते हैं , या -Doracle.jdbc.timezoneAsRegion=falseइस नोटेशन का उपयोग करने वाली कॉन्फ़िगरेशन फ़ाइलों में AddVMOption


24
मैं orj.cd.timezonezoneRegion = फ़ाइल oracle / jdbc / defaultConnectionProperties .properties (जार के अंदर) में गलत जोड़कर ojdbc6.jar संस्करण 11.2.0.3.0 बनाने में कामयाब रहा। इस समाधान को यहां देखें: फ़ोरम .oracle.com
मैटेको स्टैकोलिनी

33
अंत में, एक जोड़ सकते हैं -Doracle.jdbc.timezoneAsRegion = कमांड लाइन के लिए गलत, या AddVMOption-Doracle.jdbc.timezoneAsRegion = इन नोटेशन का उपयोग करने वाली कॉन्फ़िगरेशन फ़ाइलों में गलत।
माटेयो स्टैकोलिनी

धन्यवाद stmsat इसने मेरे लिए काम किया। मैंने अपने ojdbc जार को 11.1.0.7.0 वर्जन में tomcat / lib डायरेक्टरी में बदल दिया और इसने काम करना शुरू कर दिया :)।
महादेव

1
मैं अपनी परियोजना के निर्माण और पैकेज (युद्ध) के लिए मेवेन का उपयोग कर रहा हूं और क्लाउड फ्लेयर में तैनात कर रहा हूं, क्या यह है कि इस संपत्ति को सेट करने का कोई तरीका application.properties फ़ाइल या मावेन से किया जा सकता है ।
इस्माइल

40

एक सादे में Windows के तहत एक SQL- डेवलपर स्थापना निर्देशिका में जाते हैं

C:\Program Files\sqldeveloper\sqldeveloper\bin

और जोड़

AddVMOption -Duser.timezone=CET

दर्ज करना sqldeveloper.conf


Jetbrains DataGrip का उपयोग करना और इस वीएम विकल्प को जोड़ने के बाद एक ही मुद्दे का सामना करना पड़ा समस्या हल हो गई थी
latsha

धन्यवाद, यह वास्तव में बहुत मदद की!
क्विंटन

27

त्रुटि मुझे मिली:

Db_connection.java से त्रुटि - >> java.sql.SQLException: ORA-00604: त्रुटि पुनरावर्ती SQL स्तर 1 ORA-01882 पर हुई: समय क्षेत्र नहीं मिला

ORA-00604: पुनरावर्ती SQL स्तर 1ORA-01882 पर त्रुटि हुई: टाइमज़ोन क्षेत्र नहीं मिला

पिछला कोड:

 public Connection getOracle() throws Exception {
     Connection conn = null;
     Class.forName("oracle.jdbc.driver.OracleDriver");
     conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:tap", "username", "pw");
     return conn;
}

नया कोड:

 public Connection getOracle() throws Exception {
     TimeZone timeZone = TimeZone.getTimeZone("Asia/Kolkata");
     TimeZone.setDefault(timeZone);
     Connection conn = null;
     Class.forName("oracle.jdbc.driver.OracleDriver");
     conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:tap", "username", "pw");
     return conn;
}

अब यह काम कर रहा है !!


धन्यवाद, यह वही है जो मुझे चाहिए था!
एलन थॉम्पसन

मुझे नहीं पता कि यह डिफ़ॉल्ट टाइमज़ोन 'यूरोप / मैड्रिड' को क्यों पसंद नहीं आया। डिफ़ॉल्ट टाइमज़ोन को 'GMT' कार्यों में सेट करना।
fgui

22

लाइब्रेरी के किसी भी संस्करण (यानी आपके जार के अंदर) में फ़ाइल ओरेकल / jdbc / defaultConnectionProperties.properties को अपडेट करें (आप नीचे दिए गए लाइन को समाहित करने के लिए उपयोग कर रहे हैं):

oracle.jdbc.timezoneAsRegion=false

19

क्या होता है, कि JDBC क्लाइंट टाइमज़ोन आईडी को सर्वर पर भेजता है। सर्वर को उस जोन को जानना होगा। आप के साथ जाँच कर सकते हैं

SELECT DISTINCT tzname FROM V$TIMEZONE_NAMES where tzname like 'Etc%';

मेरे पास कुछ db सर्वर हैं जो 'आदि / UTC' और 'UTC' (tzfile संस्करण 18) के बारे में जानते हैं, लेकिन अन्य केवल 'UTC' (tz संस्करण 11) जानते हैं।

SELECT FILENAME,VERSION from V$TIMEZONE_FILE;

JDBC क्लाइंट की तरफ भी अलग व्यवहार है। 11.2 से शुरू होने पर ड्राइवर ओरेकल के लिए "ज्ञात" होने पर ज़ोन आईडी भेज देगा, जबकि इससे पहले कि समय ऑफसेट भेजा गया था। इस "ज्ञात आईडी भेजने" के साथ समस्या यह है कि क्लाइंट यह नहीं देखता है कि सर्वर पर क्या समयक्षेत्र संस्करण / सामग्री मौजूद है, लेकिन इसकी अपनी सूची है।

यह ओरेकल सपोर्ट आर्टिकल [आईडी 1068063.1] में बताया गया है।

ऐसा लगता है कि यह क्लाइंट ओएस पर भी निर्भर करता है, यह अधिक संभावना थी कि आरएचईएल या विंडोज की तुलना में एबीसी / यूटीसी उबंटू के साथ विफल हो जाता है। मुझे लगता है कि यह कुछ सामान्य होने के कारण है, लेकिन मुझे यह पता नहीं चला है कि वास्तव में क्या है।


14
  1. ग्रहण में रन -> रन कॉन्फ़िगरेशन

  2. वहां राइट साइड पैनल में JRE टैब पर जाएं

  3. में वी एम तर्क अनुभाग इस पेस्ट

    -Duser.timezone=GMT

  4. फिर लागू करें -> भागो


8

निरंतर एकीकरण सर्वर से स्वचालित परीक्षण चलाने पर मुझे यह समस्या हुई। मैंने -Duser.timezone=GMTबिल्ड पैरामीटर में VM तर्क " " जोड़ने की कोशिश की , लेकिन इससे समस्या हल नहीं हुई। हालांकि, पर्यावरण चर को जोड़ना " TZ=GMT" ने इसे मेरे लिए ठीक किया।


2
"TZ = GMT" पर्यावरण चर ने भी मेरे लिए काम किया। मुझे एक शेल स्क्रिप्ट के साथ समस्या हो रही थी जिसने एक अलग टूल चलाने के लिए वातावरण सेट किया था, जो कि, Oracle को एक्सेस करता था।
डेविड केनर

1
एक ही समस्या होने पर, मुझे भी "ant" का उपयोग करते समय "TZ = यूरोप / ज्यूरिख" का उपयोग करना पड़ा। इसने काम कर दिया!
क्रिस्टोफ कालिन

2
यह शीर्ष उत्तर होना चाहिए। अन्य सभी उत्तर काम नहीं आए।
एलेक्स डेम्बो

4

त्रुटि:

ORA-00604: त्रुटि पुनरावर्ती SQL स्तर 1 ORA-01882 पर हुई: टाइमज़ोन क्षेत्र नहीं मिला

समाधान: सेंटोस में CIM सेटअप।

/opt/oracle/product/ATG/ATG11.2/home/bin/dynamoEnv.sh

इस जावा तर्क जोड़ें:

JAVA_ARGS="${JAVA_ARGS} -Duser.timezone=EDT"

3

नेटबीन्स में,

  1. अपनी परियोजना पर राइट क्लिक करें -> गुण
  2. रन पर जाएं (श्रेणियाँ के तहत)
  3. Enter -Duser.timezone = UTC or -Duser.timezone = VMT के तहत GMT।

ठीक पर क्लिक करें, फिर अपना प्रोग्राम पुनः चलाएं।

नोट: आप UTC और GMT के अलावा अन्य टाइमस्टोन पर भी सेट कर सकते हैं।


2

मैं टॉमकैट के साथ इस समस्या में भाग गया। $CATALINA_BASE/bin/setenv.shसमस्या को हल करने में निम्नलिखित सेट करना :

JAVA_OPTS=-Doracle.jdbc.timezoneAsRegion=false

मुझे यकीन है कि अन्य उत्तरों में से जावा पैरामीटर सुझावों में से एक का उपयोग करना उसी तरह से काम करेगा।


2

मुझे भी इसी तरह के मुद्दे का सामना करना पड़ा।

वातावरण:

लिनक्स, hibernate परियोजना, ojdbc6 ड्राइवर जब oracle 11g डेटाबेस को क्वेरी करता है।

संकल्प

लिनेक्स मशीन में टीबी पैरामीटर सेट नहीं किया गया था, जो मूल रूप से ओजोन के बारे में बताता है। इसलिए, आवेदन शुरू होने के समय एक्सपोर्ट स्टैटिमेंट "एक्सपोर्ट टीबी = यूटीसी" जोड़ने के बाद मेरी समस्या हल हो गई।

UTC -> अपने समयक्षेत्र में परिवर्तन करें।


2

यदि यह समस्या JDeveloper में है: मॉडल और दृश्य प्रोजेक्ट दोनों के लिए प्रोजेक्ट गुण बदलें -> रन / डीबग -> डिफ़ॉल्ट प्रोफ़ाइल -> निम्नलिखित रन विकल्प जोड़ें: -Duser.timezone = एशिया / कोलकाता

सुनिश्चित करें कि उपरोक्त समय क्षेत्र मान आपके डेटाबेस से प्राप्त किया गया है:

select TZNAME from V$TIMEZONE_NAMES;

इसके साथ ही आप अपने jdev.conf के साथ-साथ JDeveloper -> एप्लिकेशन मेनू -> डिफ़ॉल्ट प्रोजेक्ट प्रॉफ़ाइट्स -> रन / डीबग -> डिफ़ॉल्ट प्रोफ़ाइल -> रन विकल्प में समय क्षेत्र सेटिंग्स की जांच करना चाहते हैं।


1

मुझे भी यही समस्या थी जब मैंने JDeveloper में संबंध बनाने की कोशिश की। हमारा सर्वर अलग-अलग टाइमज़ोन में स्थित है और इसलिए इसने निम्न त्रुटियों को उठाया है:

ORA-00604: error occurred at recursive SQL level 1 

ORA-01882: timezone region not found

मैंने कई मंचों का उल्लेख किया है, जिसमें परियोजना के गुणों और डिफ़ॉल्ट परियोजना गुणों के जावा विकल्प (रन / डिबग / प्रोफाइल) में टाइमज़ोन शामिल करने के लिए कहा गया है -Duser.timezone="+02:00" टाइमजोन को शामिल करने के लिए कहा गया था लेकिन यह मेरे लिए कारगर नहीं था। अंत में निम्नलिखित समाधान मेरे लिए काम किया।

JDeveloper के कॉन्फ़िगरेशन फ़ाइल ( jdev.conf ) में निम्न पंक्ति जोड़ें ।

AddVMOption -Duser.timezone=UTC+02:00

फ़ाइल "<oracle स्थापना रूट> \ Middleware \ jdeveloper \ jdev \ bin \ jdev.conf" में स्थित है।


1

मेरे मामले में मुझे "TZD" के साथ "TZR" को बदलकर काम करने की क्वेरी मिल सकती है।

String query = "select * from table1 to_timestamp_tz(origintime,'dd-mm-yyyy hh24:mi:ss TZD') between ?  and ?";

1

मैं अपने लिनक्स सिस्टम (Centos6.5) में टाइमज़ोन सेट करके उसी मुद्दे को हल करने में सक्षम था।

से रिपॉस्टिंग

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html

  1. में सेट समयक्षेत्र /etc/sysconfig/clockक्षेत्र = "America / Los_Angeles" करने के लिए जैसे सेट

  2. sudo ln -sf / usr / share / zoneinfo / अमेरिका / फीनिक्स / आदि / स्थानीय समय

टाइमजोन मान का पता लगाने के लिए प्रयास करें

ls /usr/share/zoneinfo

और उस फ़ाइल को देखें जो आपके टाइमज़ोन का प्रतिनिधित्व करती है।

एक बार जब आप इन रिबूट मशीन को सेट करते हैं और फिर से कोशिश करते हैं।


2
मेरे लिए, यह सुनिश्चित करना कि / etc / sysconfig / clock और / etc / localtime लिंक ठीक से सेट किए गए थे, मूल रूप से ORA-01882 समस्या को हल करने के लिए एक शर्त थी।
डेविड केनर

1

ओबीईई पर ओरेकल डीबी पर एक कनेक्शन बनाने की कोशिश करते समय मुझे यही समस्या थी। मैंने अपना विंडोज टाइमजोन (GMT + 01: 00) पश्चिम मध्य अफ्रीका से बदल दिया (GMT + 01: 00) ब्रसेल्स, कोपेनहेगन, मैड्रिड, पेरिस। फिर मैंने अपने कंप्यूटर को रिबूट किया और यह ठीक काम किया। ओरेकल की तरह लगता है कि पश्चिम मध्य अफ्रीका टाइमज़ोन को पहचानने में सक्षम नहीं था।


1

यह समस्या उस कोड के रूप में होती है जो db से कनेक्ट करने का प्रयास कर रहा है, इसमें एक टाइमज़ोन है जो db में नहीं है। इसे नीचे दिए गए समय क्षेत्र या किसी भी मान्य समय क्षेत्र के रूप में निर्धारित किया जा सकता है जो oracle db में उपलब्ध है। वैध समय क्षेत्र जो v $ संस्करण से चयनित * पाया जा सकता है;

System.setProperty ("user.timezone", "अमेरिका / New_York"); TimeZone.setDefault (शून्य);


0

Eclipse और दूर के Oracle डेटाबेस का उपयोग करके एक ही समस्या का सामना करते हुए, डेटाबेस सर्वर के टाइम ज़ोन से मिलान करने के लिए मेरे सिस्टम टाइम ज़ोन को बदलकर समस्या को ठीक किया गया। सिस्टम टाइम ज़ोन बदलने के बाद मशीन को फिर से शुरू करें

मुझे उम्मीद है कि यह किसी की मदद कर सकता है


0

java.sql.SQLException: ORA-00604: त्रुटि पुनरावर्ती SQL स्तर 1 ORA-01882 पर हुई: समय क्षेत्र नहीं मिला

इस प्रकार की त्रुटि के लिए, अपने सिस्टम समय को अपने देश के मानक GMT प्रारूप में बदलें

उदाहरण के लिए भारतीय समय क्षेत्र चेन्नई, कोलकाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.