Миграция с 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
двоеточием :
?