ORA-28040: ไม่มีข้อยกเว้นโปรโตคอลการตรวจสอบสิทธิ์ที่ตรงกัน


92

ฉันกำลังพยายามเชื่อมต่อโปรเจ็กต์ grails ของฉันกับ Oracle databse ( Oracle 12c ) ในระบบ windows (8) อย่างไรก็ตามเมื่อใดก็ตามที่ฉันเรียกใช้แอปพลิเคชันของฉันฉันจะได้รับข้อยกเว้นดังต่อไปนี้:

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

ตามคำแนะนำทางอินเทอร์เน็ตฉันได้ลองแก้ไข*.oraไฟล์ของฉัน แล้ว แต่มันไม่ทำงาน

ฉันได้เพิ่มข้อมูลโค้ดต่อไปนี้ในsqlnet.oraไฟล์:

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

ที่นี่ฉันพยายามกำหนด (10,11,12) แต่ทั้งสองอย่างไม่ได้ผล

ใครก็ได้โปรดช่วยฉันด้วย?


คุณแก้ไข sqlnet.ora อันไหนบนไคลเอนต์หรือเซิร์ฟเวอร์
Jon Heller

1
ฉันไม่แน่ใจว่าฉันเป็นมือใหม่ อย่างไรก็ตามไฟล์ที่ฉันแก้ไขมีเพียงไม่กี่บรรทัด มันมีอยู่: '# sqlnet.ora ไฟล์กำหนดค่าเครือข่าย: E: \ app \ adhikariaman01 \ product \ 12.1.0 \ dbhome_1 \ network \ admin \ sqlnet.ora # สร้างโดย Oracle configuration tools # ไฟล์นี้สร้างโดย netca แต่ถ้าลูกค้าเลือกที่จะ # ติดตั้ง "ซอฟต์แวร์เท่านั้น" ไฟล์นี้จะไม่มีอยู่จริงและหากไม่มีการพิสูจน์ตัวตน # ดั้งเดิมก็จะไม่สามารถเชื่อมต่อกับฐานข้อมูลบน NT ได้ SQLNET.AUTHENTICATION_SERVICES = (NTS) NAMES.DIRECTORY_PATH = (TNSNAMES, EZCONNECT) '
Aman Adhikari

2
ดูเหมือนไฟล์สำหรับเซิร์ฟเวอร์ฐานข้อมูล ปัญหาเหล่านี้อาจเป็นเรื่องยากจริงๆ คุณสามารถเชื่อมต่อกับเซิร์ฟเวอร์ฐานข้อมูลโดยใช้ SQL * Plus ได้หรือไม่? คุณใช้ไคลเอ็นต์แบบบางของ JDBC หรือไม่และหากเป็นเช่นนั้นคุณสามารถลองไคลเอนต์แบบหนาได้หรือไม่?
Jon Heller

ใช่ฉันเชื่อมต่อผ่าน SQL * plus
Aman Adhikari

1
ฉันแก้ไขปัญหาแล้ว :) ฉันลบไฟล์ ojdbc14.jar และใช้ ojdbc6.jar แทนและมันก็ใช้ได้ผลสำหรับฉัน ยังไงก็ขอบคุณที่ตอบ
Aman Adhikari

คำตอบ:


152

ฉันลบไฟล์ojdbc14.jarและใช้ojdbc6.jarแทนและมันก็ใช้ได้ผลสำหรับฉัน


3
พบปัญหาเดียวกันขณะพยายามเชื่อมต่อ Oracle 12c จาก pentaho kettle ลบ ojdbc14.jar และมันทำงานได้อย่างสมบูรณ์แบบ!
lourdh

17
อย่างน้อยคำอธิบายสั้น ๆว่าเหตุใดจึงควรใช้งานได้ค่อนข้างสะดวก
Yuriy Kravets

8
สำหรับฉันการเปลี่ยนเป็น ojdbc6.jar หรือ ojdbc7.jar ยังคงล้มเหลวเพราะฉันตั้งค่าไว้ตลอดเวลา: oracle.jdbc.thinLogonCapability"="o3"ซึ่งคุณไม่ต้องทำกับ oracle 12c อีกต่อไป หวังว่ามันจะช่วยคนอื่นได้นะ
James Tobin

3
ทำงานได้สมบูรณ์แบบหลังจากลบ ojdbc14.jar และใช้ ojdbc6.jar
Sam

1
@YuriyKravets หมายเลข14ในojdbc14.jarและหมายเลข6ในojdbc6.jarหมายถึงเวอร์ชัน JDK ที่เขียนขึ้น หากคุณเปิดไฟล์ manifest ของ ojdbc14.jarจะมีข้อความระบุว่า: Specification-Title: "คลาสไดรเวอร์ Oracle JDBC สำหรับใช้กับ JDK1.4" ในทำนองเดียวกัน ojdbc6.jar รองรับการใช้งาน JDK1.6
Maverick

55

นี่คือข้อความบางส่วนที่ฉันพบในการแลกเปลี่ยนผู้เชี่ยวชาญ :

จุดบกพร่อง 14575666

ใน 12.1 ค่าดีฟอลต์สำหรับพารามิเตอร์ SQLNET.ALLOWED_LOGON_VERSION ได้รับการอัพเดตเป็น 11 ซึ่งหมายความว่าไคลเอนต์ฐานข้อมูลที่ใช้ไดรฟ์เวอร์แบบบางก่อน 11g JDBC ไม่สามารถพิสูจน์ตัวตนกับเซิร์ฟเวอร์ฐานข้อมูล 12.1 ได้เว้นแต่พารามิเตอร์ SQLNET.ALLOWED_LOGON_VERSION ถูกตั้งค่าเป็นค่าดีฟอลต์เดิมที่ 8

สิ่งนี้จะทำให้การสร้างฐานข้อมูล Oracle RAC 10.2.0.5 โดยใช้ DBCA ล้มเหลวด้วย ORA-28040: ไม่มีข้อผิดพลาดโปรโตคอลการตรวจสอบความถูกต้องที่ตรงกันในสภาพแวดล้อม 12.1 Oracle ASM และ Oracle Grid Infrastructure

วิธีแก้ปัญหา: ตั้งค่า SQLNET.ALLOWED_LOGON_VERSION = 8 ในไฟล์ oracle / network / admin / sqlnet.ora


เพียงเพื่อการอ้างอิง: สิ่งนี้ใช้ได้ผลสำหรับฉันโดยไม่ได้ลบไฟล์ ojdbc14.jar และใช้ ojdbc6.jar
rageit

4
ใช่ในกรณีของฉันสิ่งนี้สามารถแก้ปัญหาได้ แต่เกิดขึ้นอีก: ชื่อผู้ใช้ / รหัสผ่านไม่ถูกต้อง btw ฉันพยายามเชื่อมต่อจาก oracle jdeveloper 10 ไปยัง oracle database 12c ดังนั้นสิ่งนี้จึงเป็นคำตอบ: stackoverflow.com/questions/14476875/… ในที่สุดก็ต้อง: 1) เปลี่ยน SQLNET.ALLOWED_LOGON_VERSION เป็น 8 2) SQLNET.AUTHENTICATION_SERVICES เป็น (NONE) 3) แก้ไขการตั้งค่าระบบ SEC_CASE_SENSITIVE_LOGON = FALSE 4) ALTER US XX ระบุโดย PW (เพื่อบันทึกรหัสผ่านอีกครั้งในขณะที่เราเปลี่ยนความไวของตัวพิมพ์เล็กและใหญ่)
hello_earth

สายไปงานปาร์ตี้ แต่ฉันยังยืนยันการแก้ไขนี้ ฉันต้องตั้งค่าเวอร์ชัน = 8 แม้ว่าฉันจะใช้ JDBC 11 - ไม่มีอะไรใหม่ไปกว่า 8
Keith

ฉันใช้เซิร์ฟเวอร์ฐานข้อมูลระยะไกลฉันไม่สามารถเข้าถึงเครื่องฉันสามารถเชื่อมต่อกับฐานข้อมูลโดยใช้ SQL Developer (โดยไม่มีข้อผิดพลาด) แต่แอปพลิเคชันของฉัน (ปรับใช้บน Tomcat) ทำให้เกิดข้อผิดพลาดนี้ ฉันเปลี่ยนการตั้งค่าที่เครื่องในพื้นที่ของฉันแล้วมันไม่ทำงาน ฉันต้องแก้ไขการตั้งค่าบนเครื่องเซิร์ฟเวอร์หรือไม่?
Gunwant


5

ยกเว้นการเพิ่มสิ่งต่อไปนี้ลงใน sqlnet.ora

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8
SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

หากคุณได้รับข้อผิดพลาด "ORA-01017: ชื่อผู้ใช้ / รหัสผ่านไม่ถูกต้องล็อกออนถูกปฏิเสธ" แสดงว่าคุณต้องสร้างรหัสผ่านใหม่


หากคุณได้รับข้อผิดพลาด "ORA-01017: ชื่อผู้ใช้ / รหัสผ่านไม่ถูกต้องล็อกออนถูกปฏิเสธ" แสดงว่าคุณต้องสร้างรหัสผ่านใหม่ นี่คือการช่วยชีวิต !! ขอบคุณ
Thomas VC

3

ยกเว้นการเพิ่มสิ่งต่อไปนี้ในsqlnet.ora

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8
SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

ฉันได้เพิ่มสิ่งต่อไปนี้ลงในทั้งไคลเอนต์และเซิร์ฟเวอร์ซึ่งช่วยแก้ปัญหาของฉันได้

SQLNET.AUTHENTICATION_SERVICES = (NONE)

โปรดดูโพสต์ ORA-28040: ไม่มีโปรโตคอลการตรวจสอบสิทธิ์ที่ตรงกัน


3

ฉันใช้ eclipse และหลังจากลองคำตอบอื่น ๆ ทั้งหมดแล้วมันก็ไม่ได้ผลสำหรับฉัน ในท้ายที่สุดสิ่งที่ได้ผลสำหรับฉันคือการย้ายojdb7.jarไปด้านบนใน Build Path กรณีนี้เกิดขึ้นเมื่อหลาย ๆ ขวดมีคลาสเดียวกันที่ขัดแย้งกัน

  1. เลือกโครงการใน Project Explorer
  2. คลิกขวาที่ Project -> Build Path -> Configure Build Path
  3. ไปที่Order and Exportแท็บและเลือกojdbc.jar
  4. คลิกปุ่มTOPเพื่อย้ายไปด้านบน

1

การเพิ่ม

SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

เป็นโซลูชันที่สมบูรณ์แบบไดเรกทอรี sql.ora .. \ product \ 12.1.0 \ dbhome_1 \ NETWORK \ ADMIN


1

คำถามเก่ามาก แต่ให้ข้อมูลเพิ่มเติมซึ่งอาจช่วยคนอื่นได้ ฉันยังพบข้อผิดพลาดเดียวกันและฉันใช้ ojdbc14.jar กับ 12.1.0.2 Oracle Database ในหน้าเว็บอย่างเป็นทางการของ Oracle ข้อมูลนี้จะระบุไว้ว่าเวอร์ชันใดรองรับไดรเวอร์ฐานข้อมูล นี่คือลิงค์และดูเหมือนว่าด้วย Oracle 12c และ Java 7 หรือ 8 เวอร์ชันที่ถูกต้องคือ ojdbc7.jar

ใน ojdbc6.jar สำหรับ 11.2.0.4


0

ข้อผิดพลาดเริ่มต้นของฉันคือ: ORA-28040: ไม่มีข้อยกเว้นโปรโตคอลการตรวจสอบสิทธิ์ที่ตรงกัน

เวอร์ชัน DB ของฉันคือ 12.2 (Solaris) และเวอร์ชันไคลเอนต์คือ 11.2 (windows) ฉันได้เพิ่มด้านล่างทั้งในเซิร์ฟเวอร์และไคลเอนต์ sqlnet.ora

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8 SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

ขณะเชื่อมต่อฉันมีชื่อผู้ใช้และรหัสผ่านที่ไม่ถูกต้องดังนั้นฉันจึงสร้างรหัสผ่านใหม่ (รหัสผ่านเดียวกัน) ในฐานข้อมูลซึ่งสามารถแก้ไขปัญหาของฉันได้


0

ในขณะที่สำหรับกรณีส่วนใหญ่การเปลี่ยนโถไดรเวอร์ ojdbc จะเป็นวิธีแก้ปัญหา แต่กรณีของฉันก็แตกต่างออกไป

หากคุณมั่นใจว่าคุณใช้ไดรเวอร์ ojdbc ที่ถูกต้อง ตรวจสอบอีกครั้งว่าคุณกำลังเชื่อมต่อกับฐานข้อมูลที่คุณคิดว่าเป็นจริงหรือไม่ ในกรณีของฉันคอนฟิกูเรชัน jdbc (ใน Tomcat / conf) ถูกชี้ไปที่ฐานข้อมูลอื่นที่มีเวอร์ชัน Oracle ต่างกัน


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.