1

我想从 oracle 迁移到 MySql。我正在使用 MySql 迁移工具 5.0。迁移向导出现问题。

建立连接时出错

错误信息是

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)

两个 SQL 服务器都在 localhost 上运行。

我该如何解决这些错误?

4

2 回答 2

2

您可以将使用的服务名称添加到 oracle 数据库,或将输入的值“OracleServiceXE”修改为正确的值“XE”。输入的值看起来很像默认的 Windows 服务名称,并且可能与 Oracle 数据库服务名称混淆。

要将当前实例服务名称更改为 OracleServiceXE:

alter system set service_name = 'OracleServiceXE';

lsnrctl services

也应该在病房后显示服务名称,除非数据库实例处于受限状态,否则使用服务名称的连接将失败。

于 2011-05-15T17:59:22.283 回答
0

在我看来,您用于 Oracle 的 jdbc 连接 URL 是错误的。通常它看起来像这样:

jdbc:oracle:thin:@localhost:1521:xe

如果您删除双斜线并用冒号//替换斜线会/发生什么?1521/OracleServiceXE:

于 2011-05-15T17:27:12.867 回答