복붙노트

[SPRING] Io 예외 : Oracle Cloud에서 Oracle 오류 ORA-12650

SPRING

Io 예외 : Oracle Cloud에서 Oracle 오류 ORA-12650

나는 나의 DB 시스템 (오라클 11g)을위한 Oracle 클라우드 PAAS 리눅스 서버를 사용하고 있고, 모든 자바 애플리케이션을 실행할 수있는 리눅스 애플리케이션 서버를 가지고있다.

내가 구름 DB를 기계에 연결할 수있는 봄 기반의 웹 응용 프로그램이 있다고 가정합니다. Toad의 스키마에 오라클에 액세스하려고 시도했지만 예상대로 작동하지만 애플리케이션에서 데이터를 검색하기 위해 DB를 누르려고하면 오류가 발생합니다.

java.sql.SQLException: Io exception: Oracle Error ORA-12650
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:420)
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
    at java.sql.DriverManager.getConnection(DriverManager.java:582)
    at java.sql.DriverManager.getConnection(DriverManager.java:154)
    at GetConnection.main(GetConnection.java:35)

또한 SID에서 DB 시스템의 서비스 이름으로 서비스 액세스를 확장하려고했습니다. 여전히 같은 오류가 있습니다. 동일한 코드가 우리가 설정 한 다른 클라우드 컴퓨터에서 잘 작동합니다. 하지만이 클라우드 시스템은 오라클 팀에서 수행했으며 대부분의 작업은 기본적으로 수행됩니다.

이 문제를 해결하기 위해 귀하의 제안을 공유하십시오.

해결법

  1. ==============================

    1.이 문제는 Oracle DB 시스템 암호화 ENCRYPTION_SERVER 설정 때문에 발생합니다. 내가 어떤 것을 디폴트로 설정하고 사용하도록 설정했는지, 사용하지 않도록 설정하거나 라인에 주석을 달면 애플리케이션이 예상대로 작동합니다. 아래는 참조 용 파일 이름입니다.

    이 문제는 Oracle DB 시스템 암호화 ENCRYPTION_SERVER 설정 때문에 발생합니다. 내가 어떤 것을 디폴트로 설정하고 사용하도록 설정했는지, 사용하지 않도록 설정하거나 라인에 주석을 달면 애플리케이션이 예상대로 작동합니다. 아래는 참조 용 파일 이름입니다.

    Filename : sqlnet.ora (We have to disable ENCRYPTION_SERVER settings)
    File Location : ../oracle/product/11.2.0/dbhome_1/network/admin 
    

    희망이 좀 도움이됩니다.!

  2. ==============================

    2.그것은 전혀 도움이되지 못했습니다. 실제로 나는 당신의 해결책을 따라 갔고, 나는 해결하려고 노력하는 것보다 더 중대하고 심각한 다른 오류를 갖게되었습니다. 설명해 줄게. 우선 당신이 언급 한 "무능한"가치는이 매개 변수에 대해 받아 들여지는 가치조차되지 않습니다. 오라클 (Oracle Docs)에 따르면 다음과 같이 누구나 사용할 수있는 가치가 있습니다.

    그것은 전혀 도움이되지 못했습니다. 실제로 나는 당신의 해결책을 따라 갔고, 나는 해결하려고 노력하는 것보다 더 중대하고 심각한 다른 오류를 갖게되었습니다. 설명해 줄게. 우선 당신이 언급 한 "무능한"가치는이 매개 변수에 대해 받아 들여지는 가치조차되지 않습니다. 오라클 (Oracle Docs)에 따르면 다음과 같이 누구나 사용할 수있는 가치가 있습니다.

    SQLNET.ENCRYPTION_SERVER 목적

    데이터베이스 서버의 암호화 기능을 켜십시오.

    태만

    받아 들인

    가치

    SQLNET.ENCRYPTION_SERVER=accepted
    

    필자의 경우 12c Oracle Cloud 데이터베이스에서 애플리케이션을 시작하려고 할 때 기본값이 "필수"로 설정되어 "Io exception : Oracle Error ORA-12650"오류가 발생합니다. 매개 변수를 "수락 됨"으로 설정하면 문제가 해결되고 응용 프로그램을 시작할 수 있습니다. 그래도 오류가 발생하는 경우 다음 매개 변수를 허용으로 설정할 수도 있습니다. SQLNET.CRYPTO_CHECKSUM_SERVER = 허용 sqlnet.ora에서이 값이 "required"로 설정되어 있는지 확인하십시오.

    OCI 설치뿐만 아니라 내 응용 프로그램도 테스트 용이므로 프로덕션 환경에서는 사용하지 않으려합니다. SQLNET.ENCRYPTION_SERVER 및 SQLNET.CRYPTO_CHECKSUM_SERVER의 값을 "accepted"로 설정하면 데이터베이스 보안이 크게 저하되어 액세스 할 수있는 모든 응용 프로그램의 공격에 취약 해집니다. 가장 좋은 경우는 ENCRYPTION을 "필수"로 사용하도록 응용 프로그램을 수정하는 것입니다.

  3. from https://stackoverflow.com/questions/46919402/io-exception-oracle-error-ora-12650-in-oracle-cloud by cc-by-sa and MIT license