Saya mengakses Database Oracle dari aplikasi java, ketika saya menjalankan aplikasi saya, saya mendapatkan kesalahan berikut:
java.sql.SQLException: ORA-00604: kesalahan terjadi pada SQL rekursif level 1 ORA-01882: wilayah zona waktu tidak ditemukan
Jawaban:
Anda juga dapat mencoba memeriksa versi driver jdbc Oracle dan database Oracle. Baru hari ini saya mengalami masalah ini saat menggunakan ojdbc6.jar (versi 11.2.0.3.0) untuk terhubung ke server Oracle 9.2.0.4.0. Menggantinya dengan ojdbc6.jar versi 11.1.0.7.0 menyelesaikan masalah.
Saya juga berhasil membuat ojdbc6.jar versi 11.2.0.3.0 terhubung tanpa kesalahan, dengan menambahkan
oracle.jdbc.timezoneAsRegion=false
file oracle / jdbc / defaultConnectionProperties.properties (di dalam toples). Temukan solusi ini di siniTerakhir, seseorang dapat menambahkan
-Doracle.jdbc.timezoneAsRegion=false
ke baris perintah, atau AddVMOption-Doracle.jdbc.timezoneAsRegion=false
di file konfigurasi yang menggunakan notasi inisumber
Secara sederhana, instalasi SQL-Developer di bawah Windows masuk ke direktori
dan tambahkan
untuk mengajukan
sqldeveloper.conf
.sumber
Kesalahan yang saya dapatkan:
Kesalahan dari db_connection.java - >> java.sql.SQLException: ORA-00604: kesalahan terjadi pada SQL rekursif level 1 ORA-01882: wilayah zona waktu tidak ditemukan
ORA-00604: kesalahan terjadi pada tingkat SQL rekursif 1ORA-01882: wilayah zona waktu tidak ditemukan
Kode sebelumnya:
Kode baru:
sekarang bekerja !!
sumber
Perbarui file oracle / jdbc / defaultConnectionProperties.properties dalam versi library apa pun (yaitu di dalam jar Anda) yang Anda gunakan untuk memuat baris di bawah ini:
sumber
Apa yang terjadi adalah, klien JDBC mengirimkan ID zona waktu ke Server. Server perlu mengetahui zona itu. Anda bisa mengeceknya dengan
Saya memiliki beberapa server db yang tahu tentang 'Etc / UTC' dan 'UTC' (tzfile versi 18) tetapi yang lain hanya tahu 'UTC' (tz versi 11).
Ada juga perilaku yang berbeda di sisi klien JDBC. Dimulai dengan 11.2 driver akan mengirimkan ID zona jika "diketahui" ke Oracle, sedangkan sebelumnya mengirimkan offset waktu. Masalah dengan "pengiriman ID yang diketahui" ini adalah, bahwa klien tidak memeriksa versi / konten zona waktu yang ada di server tetapi memiliki daftarnya sendiri.
Ini dijelaskan dalam Artikel Dukungan Oracle [ID 1068063.1].
Sepertinya itu juga tergantung pada OS Klien, lebih mungkin Etc / UTC gagal dengan Ubuntu daripada RHEL atau Windows. Saya kira ini karena beberapa normalisasi tetapi saya belum tahu persis apa.
sumber
di eclipse, jalankan -> jalankan konfigurasi
di sana pergi ke tab JRE di panel sisi kanan
di bagian Argumen VM tempelkan ini
-Duser.timezone=GMT
lalu Terapkan -> Jalankan
sumber
Saya mengalami masalah ini saat menjalankan tes otomatis dari server integrasi berkelanjutan. Saya mencoba menambahkan argumen VM "
-Duser.timezone=GMT
" ke parameter build, tetapi itu tidak menyelesaikan masalah. Namun, menambahkan variabel lingkungan "TZ=GMT
" telah memperbaiki masalah saya.sumber
KESALAHAN:
Solusi: Pengaturan CIM di Centos.
Tambahkan argumen java ini:
sumber
Di Netbeans,
Klik Ok, lalu jalankan kembali program Anda.
Catatan: Anda juga dapat mengatur ke waktu lain selain UTC & GMT.
sumber
Saya mengalami masalah ini dengan Tomcat. Pengaturan berikut dalam
$CATALINA_BASE/bin/setenv.sh
memecahkan masalah:Saya yakin bahwa menggunakan salah satu saran parameter Java dari jawaban lain akan bekerja dengan cara yang sama.
sumber
Saya juga menghadapi masalah serupa.
Lingkungan Hidup:
Linux, proyek hibernasi, driver ojdbc6 saat menanyakan database oracle 11g.
Resolusi
Parameter TZ tidak diatur di mesin linux, yang pada dasarnya memberitahu oracle tentang zona waktu. Jadi, Setelah menambahkan pernyataan ekspor "ekspor TZ = UTC" pada saat aplikasi mulai memecahkan masalah saya.
UTC -> Ubah sesuai dengan zona waktu Anda.
sumber
Jika masalah ini ada di JDeveloper: Ubah properti proyek untuk model dan proyek tampilan -> run / debug -> profil default -> edit tambahkan opsi jalankan berikut: -Duser.timezone = Asia / Calcutta
Pastikan nilai zona waktu di atas diambil dari database Anda sebagai berikut:
Bersamaan dengan itu Anda ingin memeriksa pengaturan zona waktu di jdev.conf Anda serta di JDeveloper -> Menu Aplikasi -> Properti Proyek Default -> Jalankan / Debug -> Profil Default -> Jalankan Opsi.
sumber
Saya juga mengalami masalah yang sama ketika saya mencoba membuat koneksi di JDeveloper. Server kami terletak di zona waktu yang berbeda dan karenanya memunculkan kesalahan di bawah ini sebagai:
Saya merujuk banyak forum yang meminta untuk memasukkan zona waktu dalam Opsi Java (Jalankan / Debug / Profil) dari properti Proyek dan properti Proyek Default sebagai
-Duser.timezone="+02:00"
bTapi itu tidak berhasil untuk saya. Akhirnya solusi berikut berhasil untuk saya.Tambahkan baris berikut ke file konfigurasi JDeveloper ( jdev.conf ).
File tersebut terletak di "<oracle installation root> \ Middleware \ jdeveloper \ jdev \ bin \ jdev.conf".
sumber
Dalam kasus saya, saya bisa mendapatkan kueri yang berfungsi dengan mengubah "TZR" dengan "TZD" ..
sumber
Saya dapat menyelesaikan masalah yang sama dengan mengatur zona waktu di sistem linux saya (Centos6.5).
Memposting ulang dari
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html
setel zona waktu
/etc/sysconfig/clock
misalnya setel ke ZONE = "America / Los_Angeles"sudo ln -sf / usr / share / zoneinfo / America / Phoenix / etc / localtime
Untuk mengetahui nilai zona waktu cobalah
dan cari file yang mewakili zona waktu Anda.
Setelah Anda mengatur ini reboot mesin dan coba lagi.
sumber
Saya mengalami masalah yang sama ketika mencoba membuat koneksi di OBIEE ke Oracle db. Saya mengubah zona waktu Windows saya dari (GMT + 01: 00) Afrika Tengah Barat menjadi (GMT + 01: 00) Brussel, Kopenhagen, Madrid, Paris. Kemudian saya me-reboot komputer saya dan bekerja dengan baik. Sepertinya Oracle tidak bisa mengenali zona waktu barat tengah Afrika.
sumber
Masalah ini terjadi karena kode yang mencoba menyambung ke db, memiliki zona waktu yang tidak dalam db. Ini juga dapat diselesaikan dengan mengatur zona waktu seperti di bawah ini atau zona waktu valid yang tersedia di oracle db. zona waktu yang valid yang dapat ditemukan pilih * dari v $ versi;
System.setProperty ("user.timezone", "America / New_York"); TimeZone.setDefault (null);
sumber
Menghadapi masalah yang sama menggunakan Eclipse dan Database Oracle yang jauh, mengubah zona waktu sistem saya agar sesuai dengan zona waktu server database memperbaiki masalah. Nyalakan ulang mesin setelah mengubah zona waktu sistem.
Saya harap ini dapat membantu seseorang
sumber
Untuk jenis kesalahan ini, cukup ubah waktu sistem Anda ke format GMT standar negara Anda
misalnya zona waktu India adalah chennai, kolkata.
sumber