Создание dblink к БД MySQL

146
18 марта 2021, 01:30

Необходимо создать dblink к БД Mysql. Просьба помочь.

Ошибка при выборе из dblink

ERROR at line 1:
ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
ORA-02063: preceding line from TEST2

Конфиг odbc.ini cat /etc/odbc.ini

[MySQL]
Driver      = MySQL
Description = MySQL
Database  = ocsweb
Server      = 10.167.0.14
User = ospo
Password = qwerty11
PORT = 3306

Конфиг из hs/admin

cat /opt/oracle/product/18c/dbhomeXE/hs/admin/initdg4odbc.ora

HS_FDS_CONNECT_INFO = ospo
HS_FDS_SHAREABLE_NAME = /usr/lib64/libmyodbc5.so
set ODBCINI=/etc/odbc.ini

Конфиг listener.ora

cat /opt/oracle/product/18c/dbhomeXE/network/admin/listener.ora

DEFAULT_SERVICE_LISTENER = XEPDB1
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = oracleapex)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )
SID_LIST_LISTENER =
 (SID_LIST =
  (SID_DESC =
   (ORACLE_HOME=/opt/oracle/product/18c/dbhomeXE)
   (SID_NAME = MySQL)
   (PROGRAM = dg4odbc)
   #(ENVS ="LD_LIBRARY_PATH=/opt/oracle/product/18c/dbhomeXE/bin/dg4odbc:/opt/oracle/product/18c/dbhomeXE/lib")
  )
 )

Тут насчет ENVS не совсем уверен, поэтому закомментировал.

Конфиг tnsnames.ora

cat /opt/oracle/product/18c/dbhomeXE/network/admin/tnsnames.ora

MYSQL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
    (CONNECT_DATA =
     (SID = mysql)
    )
    (HS = OK)
  )

Тестирую odbc

isql -v MySQL
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+

Тест tnsping

tnsping mysql
TNS Ping Utility for Linux: Version 18.0.0.0.0 - Production on 02-JUL-2019 10:12:13
Copyright (c) 1997, 2018, Oracle.  All rights reserved.
Used parameter files:
/opt/oracle/product/18c/dbhomeXE/network/admin/sqlnet.ora

Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))) (CONNECT_DATA = (SID = mysql)) (HS = OK))
OK (40 msec)

Захожу в БД

sqlplus sys/ as sysdba

Создаю дблинк

SQL> create public database link test2 connect to "ospo" identified by "qwerty11" using 'MYSQL';
Database link created.

Пытаюсь выбрать данные

select * from "ports"@test2
                      *
ERROR at line 1:
ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
ORA-02063: preceding line from TEST2

В интернете везде пишут что такая ошибка когда пишешь логин и пароль без двойных кавычек, т.к. oracle автоматом подставляет большие буквы для логина и пароля. Ну тут я делаю с кавычками.

Где еще мог ошибиться? пожалуйста помогите :)

READ ALSO
Выполнение миграций в консоли yii2

Выполнение миграций в консоли yii2

Есть проектВ нем есть миграции

110
Сохранить картинку на сервер

Сохранить картинку на сервер

Ребят, всем привет! столкнулся с такой проблемой - сохранение картинки на сервер

136
Получить свойство Protected из объекта

Получить свойство Protected из объекта

Приходит от апи ответМне нужно получить некоторые значения из него, но свойство xmlData protected и не могу получить доступ к нему

92
PHP Проблема при работе с классом

PHP Проблема при работе с классом

Создаю класс My_Class, в нем хранится информация об авторизацииЛогины и пароли нужно получать извне и записывать в массив $authorization

127