Oracle에서 MySql으로 마이그레이션하려고합니다. MySql Migration 도구 5.0을 사용하고 있습니다. 마이그레이션 마법사에서 문제가 발생했습니다.Oracle에서 MySql으로 마이그레이션
오류 메시지는 모두 SQL 서버가 로컬 호스트에서 실행중인
Connecting to source database and retrieve schemata names.
Initializing JDBC driver ...
Driver class Oracle Thin JDBC Driver using Service
Opening connection ...
Connection jdbc:oracle:thin:system/**********@//127.0.0.1:1521/OracleServiceXE
The list of schema names could not be retrieved (error: 0).
ReverseEngineeringOracle.getSchemata :Listener refused the connection with the following error:
ORA-12514, TNS:listener does not currently know of service requested in connect descriptor
The Connection descriptor used by the client was:
//127.0.0.1:1521/OracleServiceXE
Details:
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:280)
oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:328)
oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:361)
oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:151)
oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:595)
java.sql.DriverManager.getConnection(Unknown Source)
java.sql.DriverManager.getConnection(Unknown Source)
com.mysql.grt.modules.ReverseEngineeringGeneric.establishConnection(ReverseEngineeringGeneric.java:141)
com.mysql.grt.modules.ReverseEngineeringOracle.getSchemata(ReverseEngineeringOracle.java:43)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
com.mysql.grt.Grt.callModuleFunction(Unknown Source)
입니다.
어떻게 이러한 오류를 해결할 수 있습니까?
Oracle 서비스 이름이 이미 'OracleServiceXE'입니다. 변경할 필요가 없습니다. – smitrp
@ smitpatel24 lsnrctl show services가 OracleServiceXE를 지원되는 Oracle 서비스로 표시하는 경우에 맞습니다. 작성한 것으로부터 인스턴스가 제한된 세션에 있거나 OracleServiceXE를 지원하지 않습니다. 그렇다면 lsnrctl show services는 무엇을 보여줍니까? –
XE의 경우 데이터베이스 인스턴스 이름은 XE이며 TNSNAMES.ORA의 서비스 이름입니다. 이것이 바로 JDBC에 필요한 것입니다. 모두가 Windows를 사용하지는 않기 때문에 (충격, 공포) Windows 서비스 이름을 사용하지 마십시오. –