2012-02-06 5 views
72

मैं एक जावा आवेदन से एक Oracle डाटाबेस तक पहुँचने कर रहा हूँ नहीं मिला, जब मैं अपने आवेदन को चलाने मैं निम्नलिखित त्रुटि मिलती है:ORA-01,882: समयक्षेत्र क्षेत्र

java.sql.SQLException: ORA-00604: error occurred at recursive SQL level 1 ORA-01882: timezone region not found

+0

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

+0

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

+7

अपने आदेश में "-Duser.timezone = " जोड़ने का प्रयास करें, अपने जीएमटी के साथ को प्रतिस्थापित करना न भूलें, यानी- Duser.timezone = "+ 05:30" –

उत्तर

48

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

+19

मैं ojdbc6.jar संस्करण 11.2 बनाने में भी कामयाब रहा .0.3।0 त्रुटि के बिना कनेक्ट करें, oracle.jdbc.timezoneAsRegion = फ़ाइल ऑरैकल/jdbc/defaultConnectionProperties.properties (जार के अंदर) में झूठी जोड़कर। इस समाधान को यहां मिला: https://forums.oracle.com/forums/thread.jspa?threadID=1095807 –

+24

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

+0

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

20

त्रुटि मुझे मिल गया:

त्रुटि db_connection.java से - >> java.sql.SQLException: ORA-00604: पुनरावर्ती एसक्यूएल स्तर 1 ORA-01,882 पर त्रुटि हुई: समयक्षेत्र क्षेत्र नहीं मिला

ORA-00604: पुनरावर्ती एसक्यूएल स्तर 1ORA-01,882 पर त्रुटि हुई: समयक्षेत्र क्षेत्र

नहीं मिला

पिछला कोड:

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; 
} 

नई सी ode:

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; 
} 

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

+0

धन्यवाद, यही वही है जो मुझे चाहिए! –

+0

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

8
    ग्रहण में
  1. जाना रन ->रन विन्यास

  2. वहाँ में सही साइड पैनल

  3. में JRE को टैब जाना वीएम तर्क में अनुभाग इस

    पेस्ट

    -Duser.timezone=GMT

  4. उसके बाद लागू -> भागो

2

Netbeans में,

  1. राइट-क्लिक करें अपनी परियोजना -> गुण
  2. जाओ चलाने के लिए (श्रेणियाँ तहत)
  3. दर्ज करें - Vus विकल्प के तहत Duser.timezone = UTC या -Duser.timezone = जीएमटी।

क्लिक करें ठीक है, तो अपने कार्यक्रम को फिर से चलाने।

ध्यान दें: आप के रूप में अच्छी यूटीसी & जीएमटी के अलावा अन्य timestones करने के लिए सेट कर सकते हैं।

28

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

C:\Program Files\sqldeveloper\sqldeveloper\bin 

के पास जाकर

AddVMOption -Duser.timezone=CET 

sqldeveloper.conf दायर करने के लिए जोड़ें।

+0

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

+0

एक आकर्षण की तरह काम किया! धन्यवाद! :) – Antariksh

15

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

oracle.jdbc.timezoneAsRegion=false 
15

क्या होता है, कि जेडीबीसी क्लाइंट सर्वर पर टाइमज़ोन आईडी भेजता है। सर्वर को उस क्षेत्र को जानने की जरूरत है। आप देख सकते हैं

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

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

SELECT FILENAME,VERSION from V$TIMEZONE_FILE; 

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

यह ओरेकल समर्थन आलेख [आईडी 1068063.1] में समझाया गया है।

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

0

जब भी मैंने जेड डेवलपर में कनेक्शन बनाने की कोशिश की तो मुझे भी वही समस्या थी। हमारे सर्वर अलग समय क्षेत्र में स्थित है और इसलिए यह नीचे के रूप में त्रुटियों उठाया:

ORA-00604: error occurred at recursive SQL level 1 

ORA-01882: timezone region not found 

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

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

AddVMOption -Duser.timezone=UTC+02:00 

फ़ाइल "\ मिडिलवेयर \ J डेवलपर \ jdev \ बिन \ jdev.conf < ओरेकल स्थापना जड़ >" में स्थित है।

3

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

+1

"टीजेड = जीएमटी" पर्यावरण चर भी मेरे लिए काम किया। मुझे एक शेल स्क्रिप्ट के साथ समस्याएं थीं जो एक अलग उपकरण चलाने के लिए पर्यावरण स्थापित करती थीं, बदले में, ओरेकल तक पहुंच गई। –

2

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

सुनिश्चित करें कि इसके बाद के संस्करण समय क्षेत्र मूल्य इस प्रकार अपने डेटाबेस से लाई गई है:

वी $ TIMEZONE_NAMES से

चयन TZNAME;

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

1

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

जैसे/etc/sysconfig/घड़ी में

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

(1) की स्थापना की समय-क्षेत्र से पुनः पोस्टिंग क्षेत्र के लिए सेट = "America/Los_Angeles"

(2) sudo ln -sf/usr/share/zoneinfo/अमेरिका/फीनिक्स/etc/स्थानीयसमय

पता लगाने के लिए समय क्षेत्र मूल्य

करने की कोशिश ls/usr/share/zoneinfo

और अपने टाइमज़ोन का प्रतिनिधित्व करने वाली फ़ाइल को ढूंढें।

एक बार जब आप इन रीबूट मशीन को सेट कर लें और पुनः प्रयास करें।

+0

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

1

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

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

ही समस्या का ग्रहण और एक दूर के Oracle डाटाबेस का उपयोग कर, मेरे प्रणाली समय क्षेत्र बदलते सामना डेटाबेस सर्वर के समय क्षेत्र से मेल खाने के लिए समस्या तय की गई। सिस्टम समय क्षेत्र बदलने के बाद मशीन पुन: प्रारंभ करें।

मुझे आशा है कि यह किसी

3

त्रुटि मदद कर सकते हैं: ORA-00604: पुनरावर्ती एसक्यूएल स्तर 1 ORA-01,882 पर त्रुटि हुई: समयक्षेत्र क्षेत्र नहीं मिला

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

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

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

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

1

मैं टॉमकैट के साथ इस समस्या में भाग गया।

JAVA_OPTS=-Doracle.jdbc.timezoneAsRegion=false 

मुझे यकीन है कि अन्य उत्तर से जावा पैरामीटर सुझावों में से एक का उपयोग कर एक ही तरह से काम करेगा हूँ: $CATALINA_BASE/bin/setenv.sh में निम्नलिखित स्थापना समस्या हल हो जाती।

0

java.sql.SQLException: ORA-00604: error occurred at recursive SQL level 1 ORA-01882: timezone region not found

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

जैसे करने के लिए अपने सिस्टम का समय बदलने के भारतीय समय क्षेत्र चेन्नई, कोलकाता है।

संबंधित मुद्दे