Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Создание dblink в чем причина  [new]
Летунья
Member

Откуда:
Сообщений: 387
Всем, здравствуйте!

Создаю dblink с Oracle на MySQL

При создании
[oracle@server ~]$ /usr/local/bin/odbcinst -i -s -f /usr/local/etc/tds.datasource.template
odbcinst: SQLWritePrivateProfileString failed with General error request failed.
odbcinst: SQLWritePrivateProfileString failed with General error request failed.

Выдает такую ошибку... Что она может означать? Думаю, что все остальное делаю верно (при необходимости опишу процесс). Но линк не работает, подозреваю, что именно из-за этой ошибки

Спасибо всем ответившим.
5 мар 09, 14:41    [6891804]     Ответить | Цитировать Сообщить модератору
 Re: Создание dblink в чем причина  [new]
Летунья
Member

Откуда:
Сообщений: 387
Забыла добавить, в алерт логе вот что:

Thu Mar 5 14:24:10 2009
HS: Created new FDS instance definition in server DD
HS: Instance id = 127, instance name = atm (class ODBC10.2.0.3.0_250)
5 мар 09, 14:49    [6891866]     Ответить | Цитировать Сообщить модератору
 Re: Создание dblink в чем причина  [new]
Летунья
Member

Откуда:
Сообщений: 387
Вот, еще.

Пытаюсь приконнектиться к этой базе, к которой линк создаем

[root@server bin]# tsql -S ttt -U base -P ...
locale is "en_US.UTF-8"
locale charset is "UTF-8"
Msg 20020, Level 9, State 0, Server OpenClient, Line 0
Unknown marker
Msg 20014, Level 9, State 0, Server OpenClient, Line 0
Login incorrect.
There was a problem connecting to the server

Где ttt - это псевдоним из freeds.conf,
base - имя базы, к которой хочу приконнектиться
5 мар 09, 17:45    [6893330]     Ответить | Цитировать Сообщить модератору
 Re: Создание dblink в чем причина  [new]
Летунья
Member

Откуда:
Сообщений: 387
Хочу добавить, что telnet присоединиться удается!..
10 мар 09, 10:45    [6903803]     Ответить | Цитировать Сообщить модератору
 Re: Создание dblink в чем причина  [new]
Летунья
Member

Откуда:
Сообщений: 387
Пробовали менять логин и пароль. Ошибка остается прежней!
10 мар 09, 12:03    [6904333]     Ответить | Цитировать Сообщить модератору
 Re: Создание dblink в чем причина  [new]
Летунья
Member

Откуда:
Сообщений: 387
Скажите, хоть в какой стороне копать? Есть мысль, что дело именно в том, что линк создаю именно на MySQL, т.к. на сервере настроена MSSQL и все отлично работает!..

Пользовалась (в том числе) информацией с https://www.sql.ru/forum/actualthread.aspx?tid=431539&hl=tsql

Исправляю файл: /usr/local/etc/freetds.conf

[ttt]
host = server_ttt
port = 3306
client charset = UTF8
tds version = 8.0

Проверяю, видно ли MySQL
[root@server bin]# tsql -S ttt -U base -P ...
locale is "en_US.UTF-8"
locale charset is "UTF-8"
Msg 20020, Level 9, State 0, Server OpenClient, Line 0
Unknown marker
Msg 20014, Level 9, State 0, Server OpenClient, Line 0
Login incorrect.
There was a problem connecting to the server
10 мар 09, 15:40    [6906022]     Ответить | Цитировать Сообщить модератору
 Re: Создание dblink в чем причина  [new]
Летунья
Member

Откуда:
Сообщений: 387
Народ, неужели никто не знает?! Может есть какие-то ссылки, инструкции? По инструкции для создания линка с MSSQL все сделала! Но все-равно не работает!
Нужно создать линк именно с MySQL! Не могу понять в чем моя ошибка? Что я делаю не верно?
11 мар 09, 11:16    [6909433]     Ответить | Цитировать Сообщить модератору
 Re: Создание dblink в чем причина  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
Летунья_первый месадж
Создаю dblink с Oracle на MySQL


Летунья
Народ, неужели никто не знает?! Может есть какие-то ссылки, инструкции? По инструкции для создания линка с MSSQL все сделала! Но все-равно не работает!
Нужно создать линк именно с MySQL! Не могу понять в чем моя ошибка? Что я делаю не верно?

если последнее верно, то вам не в этот форум... )))
11 мар 09, 11:29    [6909591]     Ответить | Цитировать Сообщить модератору
 Re: Создание dblink в чем причина  [new]
Летунья
Member

Откуда:
Сообщений: 387
pravednik,

Нужен линк для связи с MySQL из Оракла... :(
11 мар 09, 11:50    [6909766]     Ответить | Цитировать Сообщить модератору
 Re: Создание dblink в чем причина  [new]
Летунья
Member

Откуда:
Сообщений: 387
Вопрос с места сдвинула, но не получается что-то завершить.

Может, кому и пригодится. Создавала все согласно http://www.idevelopment.info/data/Oracle/DBA_tips/Heterogeneous_Services/HETERO_2.shtml, только у меня 10. Думаю, причина именно в этом.

Удалось к удаленной базе привязаться isql. Раньше не получалось.

Далее создала линк, только без public. И вот снова :(

SQL> select * from ip@link;
select * from ip@link
*
ERROR at line 1:
ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
[Generic Connectivity Using ODBC][unixODBC][MySQL][ODBC 3.51 Driver]Доступ закрыт
для пользователя 'user'@'192.168.154.18' (был использован пароль: ДА) (SQL State: S1000; SQL Code:
1045)
ORA-02063: preceding 2 lines from LINK

На помощь уже не расчитываю... Но, может кому ссылка пригодится!..
12 мар 09, 17:47    [6918841]     Ответить | Цитировать Сообщить модератору
 Re: Создание dblink в чем причина  [new]
Летунья
Member

Откуда:
Сообщений: 387
Выкладываю все по шагам, может будут какие-то идеи...

Задача:
создать гетерогенный сервис из Oracle в MySQL

Данные Оракла
база - isums
поль-ль - User
пароль - 12345

Данные MySQL
сервер - 1.2.3.4
port - 3306
база - atm
поль-ль - isums
пароль - 11111

Решение:
1. Настройка /usr/local/etc/odbc.ini

[serv-atm]
Driver = /usr/lib/libmyodbc3.so
Description = MySQL ODBC 3.51 Driver DSN
#Trace = Yes
SERVER = serv-atm
PORT = 3306
USER = isums
Password = 11111
Database = atm
OPTION = 3

serv-atm прописан в hosts

проверяем соединение под пользователем Oracle
[oracle@db2]$ isql -v serv-atm
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>


2. Далее создаем файл:
/usr/local/oracledb/hs/admin/initserv-atm.ora

Содержание:
HS_FDS_CONNECT_INFO = serv-atm
HS_FDS_SHAREABLE_NAME=/usr/lib/libmyodbc3.so
HS_FDS_TRACE_LEVEL = off
set ODBCINI=/usr/local/etc/odbc.ini


3. Правим файл /usr/local/oracledb/network/admin/listener.ora

(SID_DESC =
(PROGRAM = hsodbc)
(SID_NAME = serv-atm)
(ORACLE_HOME = /usr/local/oracledb/)
(ENVS=LD_LIBRARY_PATH = /usr/lib:/usr/local/oracledb/lib)
)

Перезагружаем: lsnrctl reload


4. Правим vi /usr/local/oracledb/network/admin/tnsnames.ora

serv-atm =
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.105.34)(PORT=1521))
(CONNECT_DATA =
(SERVICE_NAME=serv-atm)
)
(HS = OK)
)


5. Создаем линк в Оракле под пользователем isums
sqlplus user/12345@ISUMS;

SQL*Plus: Release 10.2.0.3.0 - Production on Fri Mar 13 11:56:29 2009

Copyright (c) 1982, 2006, Oracle. All Rights Reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> create database link ushtu_atm connect to isums identified by "11111" using 'serv-atm';

Database link created.

6. Делаю выборку (проверка работы линка)

SQL> select * from ip@ushtu_atm;
select * from ip@ushtu_atm
*
ERROR at line 1:
ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
[Generic Connectivity Using ODBC][MySQL][ODBC 3.51 Driver]Доступ закрыт для пользователя
'ISUMS'@'192.168.105.34' (был использован пароль: ДА) (SQL State: S1000; SQL Code: 1045) ORA-02063:
preceding 2 lines from USHTU_ATM
13 мар 09, 14:05    [6923060]     Ответить | Цитировать Сообщить модератору
 Re: Создание dblink в чем причина  [new]
казинак
Member

Откуда:
Сообщений: 1273
чисто из любопытства вопрос:
а мимо оракла удается через ODBC прицепиться к MySQL?
13 мар 09, 15:14    [6923865]     Ответить | Цитировать Сообщить модератору
 Re: Создание dblink в чем причина  [new]
MazoHist
Guest
Написано же русским по белому:
Доступ закрыт для пользователя 'ISUMS'@'192.168.105.34' 
Ковыряйте настройки доступа мускула (эх... как же давно это было...)
13 мар 09, 17:53    [6925330]     Ответить | Цитировать Сообщить модератору
 Re: Создание dblink в чем причина  [new]
Летунья
Member

Откуда:
Сообщений: 387
Все оказалось намного проще. Подсказали ДБА через третьих лиц!!!

SQL> create database link ushtu_atm connect to "isums" identified by "11111" using 'serv-atm';

Надо было поставить кавычки.
Я с облегчением вздохнула, но не тут то было. Сегодня вот снова

[ ~]$ export NLS_LANG=AMERICAN_AMERICA.al32UTF8

[~]$ sqlplus ....@ISUMS;

SQL*Plus: Release 10.2.0.3.0 - Production on Mon Mar 16 16:17:48 2009

Copyright (c) 1982, 2006, Oracle. All Rights Reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> select * from "ip"@ushtu_atm;
ERROR:
ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
[Generic Connectivity Using ODBC][unixODBC][MySQL][ODBC 3.51 Driver][mysqld-4.1.20-log]У вас ошибка в запросе. Изучите документацию по используемой версии MySQL на предмет корректного синтаксиса около '"ip" WHERE "ip"='10.1.1.1' AND
"nsap"='00308555db80' AND "vc"='' AND "brand"='Ci' на строке 1 (SQL State: 37000; SQL Code: 1064)
ORA-02063: preceding 2 lines from USHTU_ATM



no rows selected

Elapsed: 00:00:33.63
SQL> select count(*) from "ip"@ushtu_atm;

COUNT(*)
----------
808923186

Elapsed: 00:00:00.02

Причем значения выводит неверные!!!! Там не больше 3 тыс д.б. В чем причина?
16 мар 09, 16:21    [6933361]     Ответить | Цитировать Сообщить модератору
 Re: Создание dblink в чем причина  [new]
Летунья
Member

Откуда:
Сообщений: 387
Неужели совсем нет идей?

Сама склоняюсь либо к кривым драйверам, либо к шрифтам...
17 мар 09, 09:54    [6935827]     Ответить | Цитировать Сообщить модератору
 Re: Создание dblink в чем причина  [new]
Летунья
Member

Откуда:
Сообщений: 387
Проблему так и не удается решить. Больше склоняюсь к тому, чтобы изменить параметр в фйле
initserv-atm.ora

HS_LANGUAGE=AMERICAN_AMERICA.CP1252

При просмотре параметров для MySQL


$ isql -v serv-atm
SQL> SHOW VARIABLES;

Результат:
 character_set_client                                        | latin1                                                                                                                                                                                                                                                                                                      |
| character_set_connection                                    | latin1                                                                                                                                                                                                                                                                                                      |
| character_set_database                                      | latin1                                                                                                                                                                                                                                                                                                      |
| character_set_results                                       | latin1                                                                                                                                                                                                                                                                                                      |
| character_set_server                                        | latin1                                                                                                                                                                                                                                                                                                      |
| character_set_system                                        | utf8                                                         

Как понять? Какой именно шрифт нужно прописать в настройках файла initserv-atm.ora?
18 мар 09, 11:36    [6942301]     Ответить | Цитировать Сообщить модератору
 Re: Создание dblink в чем причина  [new]
Captain Gizmo
Member

Откуда: Киев
Сообщений: 8
Летунья
Проблему так и не удается решить. Больше склоняюсь к тому, чтобы изменить параметр в фйле
initserv-atm.ora

HS_LANGUAGE=AMERICAN_AMERICA.CP1252

При просмотре параметров для MySQL


$ isql -v serv-atm
SQL> SHOW VARIABLES;

Результат:
 character_set_client                                        | latin1                                                                                                                                                                                                                                                                                                      |
| character_set_connection                                    | latin1                                                                                                                                                                                                                                                                                                      |
| character_set_database                                      | latin1                                                                                                                                                                                                                                                                                                      |
| character_set_results                                       | latin1                                                                                                                                                                                                                                                                                                      |
| character_set_server                                        | latin1                                                                                                                                                                                                                                                                                                      |
| character_set_system                                        | utf8                                                         

Как понять? Какой именно шрифт нужно прописать в настройках файла initserv-atm.ora?


Для начала не шрифт, а кодовую страницу. Потом, непонятно почему ты 1252 используешь, стандартно american_america.CL8MSWIN1251, но очевидно стоит попробовать HS_LANGUAGE=AMERICAN_AMERICA.UTF8 либо варианты.
19 мар 09, 10:57    [6947503]     Ответить | Цитировать Сообщить модератору
 Re: Создание dblink в чем причина  [new]
Летунья
Member

Откуда:
Сообщений: 387
Снова в вопросе продвинулась:
дело, оказывается в кодировке. Оракл судя по всему не понимает, что ему передает MySQL.
Итак. Делаю выборку:

SQL> select * from "ip"@ushtu_atm;
ERROR:
ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
[Generic Connectivity Using ODBC][MySQL][ODBC 3.51 Driver][mysqld-4.1.20-log]?
?AO IUEAEA ? UA?OIO?. eU??EO? AIE?I?IOA?EA ?I EO?II?U??IIE ??OOEE MySQL IA
?O?AI?O EIOO?EOIICI OEIOAEOEOA IEIII '"ip" WHERE "ip"='10.1.1.1' AND
"nsap"='00308555db80' AND "vc"='' AND "brand"='Ci' IA OOOIE? 1 (SQL State:
37000; SQL Code: 1064)
ORA-02063: preceding 2 lines from USHTU_ATM

Если выборку делать по другой таблице, то
SQL> select * from "alias"@ushtu_atm

Возвращает данные, причем правильное количество, но часть из них крякозябры.

Запросы типа
SQL> select count(*) from "alias"@ushtu_atm;

  COUNT(*)
----------
2.4567E+11
возвращают неправильно значение


Все настройки уже были описаны, на Оракле
NLS_LANGUAGE                   AMERICAN
NLS_NCHAR_CHARACTERSET         AL16UTF16
NLS_TERRITORY                  AMERICA
NLS_CURRENCY                   $
NLS_ISO_CURRENCY               AMERICA
NLS_NUMERIC_CHARACTERS         .,
NLS_CHARACTERSET               AL32UTF8
NLS_CALENDAR                   GREGORIAN
NLS_DATE_FORMAT                DD-MON-RR
NLS_DATE_LANGUAGE              AMERICAN
NLS_SORT                       BINARY
NLS_TIME_FORMAT                HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT           DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT             HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT        DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY              $
NLS_COMP                       BINARY
NLS_LENGTH_SEMANTICS           BYTE
NLS_NCHAR_CONV_EXCP            FALSE
NLS_RDBMS_VERSION              10.2.0.3.0

Не понятно, какую кодировку использовать в настройках
HS_LANGUAGE

Пробовала там менять на различные, пока ни к какому результату не привело...
19 мар 09, 12:09    [6948177]     Ответить | Цитировать Сообщить модератору
 Re: Создание dblink в чем причина  [new]
Captain Gizmo
Member

Откуда: Киев
Сообщений: 8
Летунья


Не понятно, какую кодировку использовать в настройках
HS_LANGUAGE

Пробовала там менять на различные, пока ни к какому результату не привело...


какие пробовала?
в мускуле данные в latin1, попробуй AMERICAN_AMERICA.WE8ISO8859P1, это вроде соответствует latin1.
19 мар 09, 12:39    [6948397]     Ответить | Цитировать Сообщить модератору
 Re: Создание dblink в чем причина  [new]
Captain Gizmo
Member

Откуда: Киев
Сообщений: 8
либо US7ASCII
19 мар 09, 12:40    [6948411]     Ответить | Цитировать Сообщить модератору
 Re: Создание dblink в чем причина  [new]
Летунья
Member

Откуда:
Сообщений: 387
Captain Gizmo,

Спасибо, что откликнулись. Попробовала предложенные Вами коды, ошибка осталась прежней.
И не ясно, почему из одной таблицы данные выбирает, хоть и корявенько, а из другой нет.

Посмотрели в настройках MySQL кодировку:
cp1251
на все таблицы. Может дело именно в том, что тип данных разный? И Оракл их просто не понимает?

А может проблема быть в самом драйвере?
Я думаю, если бы проблема была в драйвере, тогда бы не было подключения через
isql
или выборка оттуда велась бы с ошибкой.
19 мар 09, 14:01    [6949136]     Ответить | Цитировать Сообщить модератору
 Re: Создание dblink в чем причина  [new]
Captain Gizmo
Member

Откуда: Киев
Сообщений: 8
Летунья
Captain Gizmo,

Спасибо, что откликнулись. Попробовала предложенные Вами коды, ошибка осталась прежней.
И не ясно, почему из одной таблицы данные выбирает, хоть и корявенько, а из другой нет.

Посмотрели в настройках MySQL кодировку:
cp1251
на все таблицы. Может дело именно в том, что тип данных разный? И Оракл их просто не понимает?

А может проблема быть в самом драйвере?
Я думаю, если бы проблема была в драйвере, тогда бы не было подключения через
isql
или выборка оттуда велась бы с ошибкой.


что-то непонятно в какой кодировке данные в мускуле, вроде бы вы выкладывали системные переменные и там было latin1, тоесть 7-битная. теперь говорите о 1251...
ну а оракл, видимо пытается работать в UTF. проблема в том, что во всех этих кодировках разная длина символов, как следствие разная длина слов, видимо поэтому результаты для разных таблиц у вас разные. возможно даже ситуация, когда данные в мускуле в 1251, но согласно вашим настройкам он выдаёт в latin1 отрезая 1 бит, ну а в придачу ещё и вы говорите ораклу что данные в utf бегут, где гипотетически на каждый символ до 3-х 8-битных байтов может использоваться :)

вопрос на засыпку: HS_LANGUAGE=AMERICAN_AMERICA.CL8MSWIN1251 пробовали?
19 мар 09, 14:18    [6949314]     Ответить | Цитировать Сообщить модератору
 Re: Создание dblink в чем причина  [new]
Летунья
Member

Откуда:
Сообщений: 387
Вот, на что пробовала менять в HS_LANGUAGE:

1. RUSSIAN_CIS.CL8MSWIN1251
2. RUSSIAN_CIS.UTF8
3. AMERICAN_AMERICA.UTF8 
4. AMERICAN_AMERICA.WE8MSWIN1252 
5. american_america.CL8MSWIN1251
6. AMERICAN_AMERICA.WE8ISO8859P1

Насчет кодировки mysql:
1. Latin1 вижу я со своей машины при подключении к MySQL через isql -v
2. cp1251 видит программист, подключившись к этой базе через свое приложение
19 мар 09, 14:25    [6949386]     Ответить | Цитировать Сообщить модератору
 Re: Создание dblink в чем причина  [new]
Captain Gizmo
Member

Откуда: Киев
Сообщений: 8
Летунья
Вот, на что пробовала менять в HS_LANGUAGE:

1. RUSSIAN_CIS.CL8MSWIN1251
2. RUSSIAN_CIS.UTF8
3. AMERICAN_AMERICA.UTF8 
4. AMERICAN_AMERICA.WE8MSWIN1252 
5. american_america.CL8MSWIN1251
6. AMERICAN_AMERICA.WE8ISO8859P1

Насчет кодировки mysql:
1. Latin1 вижу я со своей машины при подключении к MySQL через isql -v
2. cp1251 видит программист, подключившись к этой базе через свое приложение


нет идей. что касается почему одна таблица выдаёт данные, а другая нет, стоит поискать в различии типов колонок. могу предположить в таблице ip есть колонка с таким типом данных, которого нет в alias. например, поле большого размера.
19 мар 09, 14:34    [6949447]     Ответить | Цитировать Сообщить модератору
 Re: Создание dblink в чем причина  [new]
Летунья
Member

Откуда:
Сообщений: 387
Captain Gizmo,

Спасибо. Ясно стало, что надо вопрос соединения с базой, видно, другим способом решать.
Может сделать подключение на тестовом сервере, например, с уже обновленными драйверами...

Как считаете, обновление драйвера MySQL-connection-odbc может решить проблему?
И не помешает ли его обновление работе других линков?
19 мар 09, 15:34    [6950017]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить