Миграция с Oracle на MySql

Я хочу перейти с оракула на MySql. Я использую MySql Migration tools 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 работают на локальном хосте.

Как я могу решить эти ошибки?

2 ответа

Решение

Вы можете добавить имя использованной службы в базу данных Oracle или изменить введенное значение "OracleServiceXE" на правильное значение "XE". Введенное значение очень похоже на имя службы Windows по умолчанию и может быть перепутано с именем службы базы данных Oracle.

Чтобы изменить имя службы текущего экземпляра на OracleServiceXE:

alter system set service_name = 'OracleServiceXE';

lsnrctl services

также должен показывать имя службы после wards, если только экземпляр базы данных не находится в состоянии с ограничениями, в этом случае соединение с именем службы не будет установлено.

Мне кажется, что ваш URL-адрес соединения JDBC для Oracle является неправильным. Обычно это выглядит примерно так:

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

Что произойдет, если вы удалите двойную косую черту // и заменить слеш / между 1521/OracleServiceXE двоеточием :?

Другие вопросы по тегам