ORA-28040: Eşleşen kimlik doğrulama protokolü istisnası yok


92

Grails projemi Windows (8) sisteminde Oracle databse ( Oracle 12c ) ' ye bağlamaya çalışıyorum . Ancak, uygulamamı her çalıştırdığımda şu istisnayı alıyorum:

Caused by: org.apache.commons.dbcp.SQLNestedException: 
Cannot create PoolableConnectionFactory (ORA-28040: 
No matching authentication protocol)

Caused by: 
java.sql.SQLException: ORA-28040: 
No matching authentication protocol

İnternet önerisine göre dosyamı da düzenlemeyi denedim *.oraama çalışmıyor.

sqlnet.oraDosyaya aşağıdaki parçacığı ekledim :

SQLNET.ALLOWED_LOGON_VERSION=10
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10
SQLNET.ALLOWED_LOGON_VERSION_SERVER=10

Burada (10,11,12) atamayı denedim ama ikisi de çalışmıyor.

Bununla ilgili biri bana yardım edebilir mi ?


İstemcide mi yoksa sunucuda mı sqlnet.ora'yı düzenlediniz?
Jon Heller

1
Acemi olduğumdan emin değilim. Ancak düzenlediğim dosya sadece birkaç satır içeriyordu. İçerdiği: '# sqlnet.ora Ağ Yapılandırma Dosyası: E: \ app \ adhikariaman01 \ product \ 12.1.0 \ dbhome_1 \ network \ admin \ sqlnet.ora # Oracle yapılandırma araçları tarafından oluşturulmuştur. # Bu dosya aslında netca tarafından oluşturulmuştur. Ancak müşteriler "Yalnızca Yazılım" # yüklemeyi seçerse, bu dosya var olmayacak ve yerel # kimlik doğrulaması olmadan NT üzerindeki veritabanına bağlanamayacaklar. SQLNET.AUTHENTICATION_SERVICES = (NTS) NAMES.DIRECTORY_PATH = (TNSNAMES, EZCONNECT) '
Aman Adhikari

2
Bu, veritabanı sunucusunun dosyası gibi görünüyor. Bu sorunlar gerçekten zor olabilir. SQL * Plus kullanarak veritabanı sunucusuna bağlanabilir misiniz? JDBC ince istemcisi mi kullanıyorsunuz ve öyleyse kalın bir istemci deneyebilir misiniz?
Jon Heller

Evet, SQL * plus ile bağlandım
Aman Adhikari

1
Sorunu çözdüm :). Ojdbc14.jar dosyasını sildim ve onun yerine ojdbc6.jar dosyasını kullandım ve benim için çalıştı. Neyse, cevapladığınız için teşekkürler.
Aman Adhikari

Yanıtlar:


152

Ben silindi ojdbc14.jar dosyası ve kullanılan ojdbc6.jar yerine ve bu benim için çalıştı


3
Oracle 12c'yi pentaho su ısıtıcısından bağlamaya çalışırken aynı sorunu yaşayın. ojdbc14.jar kaldırıldı ve mükemmel çalışıyor!
lourdh

17
En azından bunun neden işe yaraması gerektiğine dair kısa bir açıklama oldukça kullanışlı olacaktır.
Yuriy Kravets

8
Benim için, ojdbc6.jar veya ojdbc7.jar'a geçmek hala başarısız oldu çünkü sürekli ayar yapıyordum: oracle.jdbc.thinLogonCapability"="o3"bunu artık oracle 12c'ye karşı yapmanız gerekmiyor. Umarım başkasına yardım edebilir
James Tobin

3
Bu, ojdbc14.jar dosyasını sildikten ve ojdbc6.jar'ı kullandıktan sonra mükemmel çalışıyor
Sam

1
Sayı @YuriyKravets 14 içinde ojdbc14.jar ve sayısı 6 içinde ojdbc6.jar onlar için yazılmıştır JDK sürüm belirtir. Eğer açarsanız ojdbc14.jar en bildirim dosyası, diyor: Şartname-Başlık: "Oracle JDBC sürücüsü sınıfları JDK1.4 ile kullanmak için" Benzer şekilde, ojdbc6.jar destekler JDK 1.6 uygulanması.
Maverick

55

Uzman değişiminde bulduğum bazı metinler :

Hata 14575666

12.1'de, SQLNET.ALLOWED_LOGON_VERSION parametresinin varsayılan değeri 11 olarak güncellenmiştir. Bu, 11g öncesi JDBC ince sürücülerini kullanan veritabanı istemcilerinin SQLNET.ALLOWED_LOGON_VERSION parametresi eski varsayılan değer olan 8 olarak ayarlanmadıkça 12.1 veritabanı sunucularına kimlik doğrulayamayacağı anlamına gelir.

Bu, DBCA kullanılarak 10.2.0.5 Oracle RAC veritabanı oluşturmanın ORA-28040 ile başarısız olmasına neden olur: 12.1 Oracle ASM ve Oracle Grid Infrastructure ortamlarında eşleşen kimlik doğrulama protokol hatası yok.

Çözüm: oracle / network / admin / sqlnet.ora dosyasında SQLNET.ALLOWED_LOGON_VERSION = 8 olarak ayarlayın.


Sadece referans için: Bu benim için ojdbc14.jar dosyasını silmemek ve ojdbc6.jar'ı kullanmak için çalıştı
rageit

4
evet, benim durumumda bu sorunu çözdü, ancak başka bir şey oldu: geçersiz kullanıcı adı / şifre. btw oracle jdeveloper 10'dan oracle veritabanı 12c'ye bağlanmaya çalışıyordum. yanıt şu oldu: stackoverflow.com/questions/14476875/… sonunda: 1) SQLNET.ALLOWED_LOGON_VERSION'ı 8 olarak değiştirmek 2) SQLNET.AUTHENTICATION_SERVICES'ı (HİÇBİRİ) 3) ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE 4) ALTER USER XX PW TARAFINDAN TANIMLANMIŞTIR (büyük / küçük harfe duyarlılığı değiştirdiğimiz için parolayı şimdi yeniden
kaydetmek için

Partiye geç kaldım ama bu düzeltmeyi de onayladım. Ben vardı 8 çalışmış daha yeni bir şey - JDBC 11 koşuyordu rağmen benim versiyonunu = 8 ayarlayın.
Keith

Uzak bir veritabanı sunucusu kullanıyorum, makineye erişimim yok, yalnızca SQL Developer kullanarak veritabanına bağlanabiliyorum (hatasız), ancak uygulamam (Tomcat üzerinde konuşlandırılmış) bu hatayı veriyor. Yerel makinemdeki ayarları değiştirdim, çalışmıyor. Sunucu makinesindeki ayarları değiştirmem gerekiyor mu?
Gunwant

5

Bu sorunu ojdbc8.jar kullanarak çözdüm. Oracle 12c, ojdbc8.jar ile uyumludur


5

Bu, aşağıdakileri sqlnet.ora'ya eklemek dışında

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8
SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

"ORA-01017: geçersiz kullanıcı adı / parola; oturum açma reddedildi" hatası alırsanız, parolanızı yeniden oluşturmanız gerekir.


"ORA-01017: geçersiz kullanıcı adı / parola; oturum açma reddedildi" hatası alırsanız, parolanızı yeniden oluşturmanız gerekir. Bu bir hayat kurtarıcıydı !! Teşekkürler
Thomas VC


3

Eclipse kullanıyordum ve diğer tüm cevapları denedikten sonra benim için işe yaramadı. Sonunda, benim için işe yarayan şey ojdb7.jar, İnşa Yolunda zirveye çıkmaktı. Bu, birden çok kavanozda çakışan aynı sınıflar olduğunda ortaya çıkar.

  1. İçinde proje seçin Project Explorer
  2. Sağ tıklayın Project -> Build Path -> Configure Build Path
  3. Git Order and Exportsekmesine basıpojdbc.jar
  4. Yukarı TOPtaşımak için düğmeye tıklayın

1

Ekleme

SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

mükemmel çözüm sql.ora dizini .. \ product \ 12.1.0 \ dbhome_1 \ NETWORK \ ADMIN


1

Çok eski bir soru, ancak başka birine yardımcı olabilecek bazı ek bilgiler sağlamak. Ben de aynı hatayla karşılaştım ve ojdbc14.jar'ı 12.1.0.2 Oracle Database ile kullanıyordum. Oracle resmi web sayfasında bu bilgiler, hangi sürümün hangi veritabanı sürücülerini desteklediğini gösterir. Bağlantı burada ve Oracle 12c ve Java 7 veya 8 ile doğru sürümün ojdbc7.jar olduğu anlaşılıyor.

Ojdbc6.jar dosyası 11.2.0.4 içindir.


0

İlk hatam: ORA-28040: Eşleşen kimlik doğrulama protokolü istisnası yok

DB sürümüm 12.2 (Solaris) ve istemci sürümü 11.2 (windows). Aşağıya hem sunucu hem de istemci sqlnet.ora ekledim

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8 SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

bağlanırken, geçersiz kullanıcı adı ve şifre aldım, bu nedenle sorunumu çözen veri tabanında şifreyi (aynı şifre) yeniden oluşturdum.


0

Çoğu durumda ojdbc sürücü kavanozunu değiştirmek çözüm olsa da benim durumum farklıydı.

Doğru ojdbc sürücüsünü kullandığınızdan eminseniz. Gerçekte olduğunu düşündüğünüz veritabanına bağlanıp bağlanmadığınızı iki kez kontrol edin. Benim durumumda jdbc yapılandırması (Tomcat / conf içinde), farklı Oracle sürümüne sahip farklı veritabanına işaret ediyordu.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.