Не подключается к oracle
В отношении вышеизложенного я исследовал следующие документы (среди прочего ..) -
Ввиду возникшей ошибки я создал простое тестовое приложение. состоящий из одной (wpf) страницы с одной кнопкой. В случае нажатия кнопки я пытаюсь создать соединение с базой данных Oracle -
Следуя информации в приведенных выше статьях, я убедился, что следующие Dll находятся в моей папке «bin» -
• oci.dll
• ociw32.dll
• orannzsbb10.dll
• oraocci10.dll
• oraociicus.dll
• msvcr71.dll
(последний назван в отчаянии . ) и сослался на Oracle.DataAccess.dll.
Кроме того, сообщается следующее -
На основании исключения NullReferenceException в источнике данных я предполагаю, что проблема заключается в одной из dll (?), Поскольку я «создаю новый» OracleConnection выше, прежде чем пытаться ссылаться на него.
Кроме того, выполнение кода перескакивает через «перехватчик (NullReferenceException nullExcept)» и переходит прямо к перехвату OracleException.
Извините за бессвязный разговор, но надеюсь, что это имеет смысл? Любая помощь / совет приветствуются!
Хорошо, очень поздно возвращаться к этому, за что приношу свои извинения!
Тем временем наша БД была обновлена (!), И при изменении списка dll, чтобы включить -
- oraocci11.dll
- oraociccus11.dll
- OraOps11w.dll
- orannzsbb1.dll
из «10» версий, все еще безуспешно, я отредактировал App.xaml (после обширного поиска здесь и в Интернете) следующим образом:
BindingRedirect сделал свое дело!
Похоже, что библиотеки DLL сильно зависят от совместимых номеров версий.
Хотел бы я сказать, что я действительно понял, как это работает, но это так, и теперь у меня есть рабочие связи .
Похоже, что библиотеки DLL сильно зависят от совместимых номеров версий This. Oracle - ничто, если не ЧРЕЗВЫЧАЙНО обидчивый, и у меня были целые серверы, спасавшие только из-за несоответствия версий XX1 / XX2. Это должно было быть моим предложением по отладке, и я рад, что это решено. Вы должны принять свой собственный ответ, чтобы другие люди могли его найти.
Это случилось со мной.
После небольшого колдовства я удалил этот ключ из своего реестра: HKEY_CURRENT_USER\Software\ORACLE и все снова заработало.
Убедитесь, что ODAC настроен правильно. Я бы предложил использовать TNSNAMES (у вас не должно быть всей этой информации в строке подключения imo). См. Раздел настройки TNSNAMES в этом документе (11.2). Также см. Нижний раздел для общих проблем с подключением.
Как только это будет сделано, это должно быть так же просто, как поместить строку подключения в свойство настроек вашего проекта и выполнить:
В вашем примере ваш oraConnect не был создан (у вас просто есть OracleConnection oraConnect), поэтому часть «new OracleConnection», которая не работает, приводит к исключению нулевой ссылки (если я все равно понимаю ваше объяснение того, где он ломается). Здесь также должен помочь отладчик в VS;)
РЕДАКТИРОВАТЬ: вы можете настроить простое тестовое консольное приложение с простым открытием / закрытием соединения. Это может устранить любой шум, кроме правильной настройки ODAC. Что-то вроде (непроверено, предположим, что tnsnames настроены):
В этой статье описывается настройка связанного сервера с компьютера, на Microsoft SQL Server запущенного в базу данных Oracle, а также основные действия по устранению ошибок, которые могут возникнуть при настройках связанного сервера с базой данных Oracle.
Оригинальная версия продукта: Microsoft SQL Server 2005 выпуск Standard, Microsoft SQL Server 2005 developer Edition, Microsoft SQL Server 2005 выпуск Enterprise, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Workgroup Edition
Исходный номер КБ: 280106
Ошибка SQL Server 21624 или 21629
Если используется клиентское программное обеспечение Oracle версии 10g, поставщиком является OraOLEDB10.dll, для версии 9i — это OraOLEDB.dll. Поставщик устанавливается в каталог %ORACLE_HOME%\BIN (например, в «C:\oracle\product\10.1.0\Client_1\bin»). Если обнаружено, что поставщик Oracle OLEDB не установлен на распространителе, установите его с установочного диска клиентского программного обеспечения Oracle, предоставляемого корпорацией Oracle. Дополнительные сведения см. в статье Настройка издателя Oracle.
- regsvr32 OraOLEDB10.dll или regsvr32 OraOLEDB.dll .
Ошибка SQL Server 21642, связанная с повторяющимся именем входа связанного сервера
«Для разнородных издателей необходим связанный сервер. Связанный сервер с именем " " уже существует. Удалите связанный сервер или выберите другое имя издателя».
Эта ошибка может возникнуть при попытке непосредственно создать связанный сервер, или если ранее была удалена связь между издателем Oracle и распространителем SQL Server , и теперь предпринимается попытка перенастроить издатель. Если эта ошибка возникает при попытке перенастроить издатель, удалите связанный сервер с помощью sp_dropserver (Transact-SQL).
Если вам нужно подключиться к издателю Oracle через подключение связанного сервера, создайте другое имя службы TNS и используйте это имя при вызове процедуры sp_addlinkedserver (Transact-SQL). Сведения о создании имен службы TNS см. в документации Oracle.
Какое имя у моего сервера Oracle?
Выполните один из следующих запросов, чтобы узнать имя сервера Oracle.
SELECT host_name FROM v$instance
SELECT sys_context('USERENV','SERVER_HOST') FROM dual
Формат строки подключения
Ниже приведен формат типичной строки подключения.
Издатель Oracle связан с другим распространителем
«Экземпляр "OraclePublisherName>" сервера Oracle ранее использовал "SQLServerDistributorName>" в качестве распространителя. Чтобы использовать "NewSQLServerDistributorName>" в качестве его распространителя, необходимо удалить текущую конфигурацию репликации на экземпляре сервера Oracle, в результате чего будут удалены все публикации на этом экземпляре сервера».
«Сервер Oracle "OracleServerName>" уже определен в качестве издателя "OraclePublisherName>" на распространителе "SQLServerDistributorName>. ". Для повторного создания удалите издатель или открытый синоним " "».
При удалении издателя Oracle объекты репликации в базе данных Oracle автоматически очищаются. Однако в некоторых случаях необходима ручная очистка объектов репликации Oracle. Для ручной очистки объектов репликации Oracle, созданных при репликации, выполните следующее:
Подключитесь к издателю Oracle с разрешениями администратора базы данных.
Выполните команду SQL DROP PUBLIC SYNONYM MSSQLSERVERDISTRIBUTOR; .
Ошибка SQL Server 21617
«Не удается запустить SQL*PLUS. Убедитесь, что на распространителе установлена текущая версия клиентской программы Oracle».
Попытайтесь найти SQL*PLUS на распространителе. Для установки клиента Oracle 10g имя этого исполняемого файла — sqlplus.exe. Обычно данная программа устанавливается в каталог %ORACLE_HOME%/bin. Чтобы убедиться, что путь SQL*PLUS содержится в системном пути, проверьте значение системной переменной Path:
Щелкните правой кнопкой мыши Мой компьютер, затем выберите Свойства.
Перейдите на вкладку Дополнительно , затем щелкните Переменные среды.
В диалоговом окне Переменные среды , в списке Системные переменные выберите переменную Path и щелкните Изменить.
В диалоговом окне Изменение системной переменной выполните следующие действия: если в текстовом поле Значение переменной путь к папке, содержащей sqlplus.exe, отсутствует, измените строку, чтобы она содержала этот путь.
Если на распространителе не удается найти sqlplus.exe, установите на распространителе текущую версию клиентского программного обеспечения Oracle. Дополнительные сведения см. в статье Настройка издателя Oracle.
Возникает ошибка SQL Server 21684
«Разрешений, связанных с именем входа администратора для издателя Oracle «%s», недостаточно».
Чтобы проверить разрешения, предоставленные пользователю, выполните следующий запрос: SELECT * from session_privs . Результат выполнения должен быть аналогичен следующему:
CREATE PUBLIC SYNONYM
DROP PUBLIC SYNONYM
Ошибка SQL Server 21628
«Не удалось обновить реестр распространителя "%s", чтобы позволить поставщику OLEDB для Oracle (OraOLEDB.Oracle) запускаться в процессе с SQL Server. Убедитесь, что пользователю с текущим именем входа разрешается вносить изменения в разделы реестра, принадлежащие SQL Server ».
Для системы публикации Oracle необходимо, чтобы запись реестра существовала и была установлена в 1 для 64-разрядных распространителей. Если запись не существует, SQL Server будет пытаться создать ее. Если запись существует, но установлена в 0, установка не изменится, и настройка издателя Oracle завершится неудачей.
Для просмотра и изменения установки реестра выполните следующие действия:
В диалоговом окне Выполнить введите regedit, затем нажмите кнопку OK.
Перейдите к папке HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\ \Providers.
В папке для поставщиков (Providers) должна находиться папка с именем OraOLEDB.Oracle. В этой папке должна присутствовать DWORD-переменная с именем AllowInProcess, которой присвоено значение 1.
Если обнаружено, что переменная AllowInProcess установлена в 0, обновите запись реестра до 1:
Щелкните правой кнопкой мыши запись, затем щелкните Изменить.
В диалоговом окне Изменение строкового параметра введите 1 в поле Значение поля .
Ошибка Oracle ORA-22285
Если в таблице имеется столбец BFILE, данные для столбца хранятся в файловой системе. Административной учетной записи репликации должно быть предоставлено право доступа в каталог, в котором хранятся данные. С этой целью должно использоваться следующее синтаксическое выражение:
GRANT READ ON DIRECTORY TO
«ORA-22285: несуществующий каталог или файл для операции FILEOPEN»
Методы устранения неполадок с подключением к серверу Oracle
Чтобы отлукать проблемы с подключением Oracle с драйвером Microsoft ODBC для Oracle или поставщик OLE DB для Oracle (Майкрософт), выполните следующие действия:
Используйте утилиту Oracle SQL Plus (утилиту запросов на основе командной строки) для проверки возможности подключения к Oracle и получения данных.
Если вы не можете подключиться к Oracle и получить данные, у вас либо плохая установка или конфигурация компонентов клиента Oracle, либо вы неправильно создали псевдоним службы прозрачной сети (TNS) для сервера Oracle, когда вы использовали SQL*Net Easy Configuration или Oracle Net8 Easy Configuration utility. Обратитесь к администратору базы данных Oracle (DBA), чтобы убедиться, что компоненты Oracle, которые должны быть правильно установлены и настроены.
Проверьте версию клиента Oracle (SQL чистая версия), установленного * на компьютере. Для драйвера Microsoft ODBC для Oracle поставщик OLE DB для Oracle (Майкрософт) требуется установка SQL*Net версии 2.3 или более поздней версии на клиентский компьютер.
Подключение из SQL Плюс (средство клиентского запроса Oracle) может появиться, но необходимо перезапустить компьютер, чтобы подключение ODBC/OLE DB функционировало правильно.
При использовании Oracle 8i файл .rgs пуст.
Если клиент Oracle установлен, и вы получите ошибку, которая указывает на то, что компоненты клиента Oracle 7.3 или более поздней части должны быть установлены на компьютере, убедитесь, что экологическая переменная PATH на клиентский компьютер содержит папку, в которой был установлен клиент Oracle, например, Oracle_Root\Bin. Если вы не можете найти эту папку, добавьте папку в переменную PATH, чтобы устранить ошибку.
Убедитесь, что Ociw32.dll находится в папке Oracle_Root\bin. Этот .dll не может существовать в любом другом расположении на клиентский компьютер. Убедитесь, что DLLs клиентского компонента Oracle (например, файл Core40.dll и файл ora.dll) не существуют вне Oracle_Root папки или * подмостков.
Убедитесь, что на компьютере установлена одна клиентская версия Oracle. Несколько версий SQL*Net не могут существовать на одном клиентском компьютере с помехами и критическими операциями (например, TNS и alias lookups).
Корпорация Майкрософт рекомендует установить локальный клиент Oracle, а не делать это путем сопоставления удаленного клиента Oracle на компьютере, а затем включить его в путь системы для подключения к Oracle через ODBC/OLE DB. Но поставщик и драйвер проверяются с локально установленным клиентом Oracle, а не на сетевой совместной основе.
В этой теме рассматривается ряд вопросов, которые могут возникнуть при настройке и использовании издателя Oracle.
Ошибка Oracle ORA-01000
Репликация использует курсоры в издателе Oracle в процессе добавления статей в публикацию. Во время этого процесса возможно превышение максимально допустимого количества курсоров, доступных на издателе. Если это происходит, возникает следующая ошибка:
«ORA-01000: превышение максимального числа открытых курсоров»
Для исключения этой проблемы необходимо убедиться, что для параметра max_open_cursors в базах данных Oracle установлено достаточно большое число (по меньшей мере, 1 000). Дополнительные сведения об этой установке приводятся в документации Oracle.
Сводка
В этой статье описывается настройка связанного сервера с компьютера, который работает Microsoft SQL Server в базу данных Oracle, и основные действия по устранению неполадок, которые могут возникнуть при настройках связанного сервера с Oracle. Большая часть сведений в этой статье применима к средам, настроенным для использования поставщика OLEDB Microsoft для Oracle (MSDAORA). Избегайте использования этой функции в новых разработках и планируйте изменять приложения, использующие эту функцию в настоящее время. Вместо этого используйте поставщика OLE DB Oracle.
Дополнительные сведения о настройке связанного сервера с помощью olEDB-поставщика Oracle в обзоре How to get up and running with Oracle and Linked Servers.
Текущая версия драйвера Microsoft ODBC для Oracle соответствует спецификации ODBC 2.5, в то время как поставщик OLE DB для Oracle является родным поставщиком API OCI Oracle 7. Драйвер и поставщик используют клиент SQL*Net (или Net8 для Oracle 8x) и библиотеку интерфейса вызовов Oracle и другие клиентские компоненты Oracle для подключения к базам данных Oracle и получения данных. Клиентские компоненты Oracle важны и должны быть правильно настроены для успешного подключения к базам данных Oracle с помощью драйвера и поставщика.
Из microsoft Data Access Components (MDAC) версии 2.5 и более поздних версий драйвер Microsoft ODBC и поставщик OLE DB поддерживают только Oracle 7 и Oracle 8i с следующими ограничениями:
Типы данных для Oracle 8.x, такие как CLOB, BLOB, BFILE, NCHAR, NCLOB и NVARCHAR2, не поддерживаются.
Функция Unicode на серверах Oracle 7.x и 8.x не поддерживается.
Несколько экземпляров клиентов Oracle или несколько домов Oracle не поддерживаются, поскольку они зависят от первого появления дома Oracle в переменной SYSTEM PATH.
Возвращение нескольких результатов из сохраненной процедуры или пакета SQL не поддерживается с помощью ADO или OLEDB.
Вложенные внешние соединители не поддерживаются.
Сохранение XML не поддерживается.
Версия с более чем 8i не поддерживается с помощью этих драйверов.
Сторонние продукты, которые обсуждаются в этой статье, производятся компаниями, независимыми от Microsoft. Корпорация Майкрософт не дает никаких явных, подразумеваемых и прочих гарантий относительно производительности или надежности этих продуктов.
Ошибка Oracle ORA-01555
Следующая ошибка базы данных Oracle относится не к репликации моментального снимка, а к тому, как Oracle строит подходящие для чтения представления данных:
"ORA-01555: слишком старый моментальный снимок"
При помощи объектов, называемых сегментами отката, Oracle создает пригодные для чтения представления данных на момент выдачи инструкции SQL. Ошибка «слишком старый моментальный снимок» может возникнуть, если данные отката переписываются другими, одновременно выполняющими сеансами. До версии Oracle 9i для уменьшения частоты появления этой ошибки рекомендовался метод увеличения размера или количества сегментов отката и назначения больших транзакций для определенных сегментов отката.
В Oracle 9i корпорация Oracle ввела концепцию табличного пространства UNDO, заменяющую сегмент отката. Для предотвращения ошибки «слишком старый моментальный снимок» в Oracle 9i рекомендуется следующее:
Создайте табличное пространство UNDO с достаточным количеством свободного места.
Установите гарантию хранения для табличного пространства (для версий Oracle 10G и выше).
Настройте параметры инициализации Oracle UNDO_MANAGEMENT и UNDO_RETENTION.
Дополнительные сведения об исключении причин ошибки «слишком старый моментальный снимок» см. в документации Oracle.
Ввод строки подключения
Введите строку подключения в поле ConnectionString либо введите имя DSN в поле Dsn на странице Выбор источника данных или Выбор назначения. После того как вы введете строку подключения, мастер проанализирует ее и отобразит отдельные свойства и их значения в списке.
Ниже показан экран, который появляется после ввода строки подключения.
Действия по настройкам связанного сервера с Oracle
Необходимо установить клиентскую программу Oracle на компьютере, SQL Server на котором установлен связанный сервер.
Установите нужный драйвер на компьютере с SQL Server. Microsoft поддерживает только драйвер поставщик OLE DB для Oracle (Майкрософт) Microsoft ODBC для Oracle. Если вы используете стороннего поставщика или стороннего драйвера для подключения к Oracle, необходимо связаться с соответствующим поставщиком для любых проблем, которые могут возникнуть с помощью поставщика или драйвера.
Если вы используете драйвер поставщик OLE DB для Oracle (Майкрософт) и Microsoft ODBC для Oracle, рассмотрите следующие вопросы:
Как поставщик OLE DB, так и драйвер ODBC, включенный в компоненты доступа к данным Майкрософт (MDAC), требуют SQL*Net 2.3.x или более поздней версии. Необходимо установить клиентское программное обеспечение Oracle 7.3.x или более поздний вариант на клиентский компьютер. Клиентский компьютер — это компьютер, на который SQL Server.
Убедитесь, что на компьютере с SQL Server установленА версия MDAC 2.5 или более поздней версии. С помощью MDAC 2.1 или более ранней версии невозможно подключиться к базам данных, в которые используется Oracle 8. x или более поздней версии.
Чтобы включить MDAC 2.5 или более поздние версии для работы с клиентской программой Oracle, реестр необходимо изменить на клиентном компьютере, который работает SQL Server, как указано в следующей таблице.
Перезапустите компьютер, который SQL Server после установки клиентского программного обеспечения Oracle.
На компьютере, который SQL Server, установите связанный сервер с помощью следующего сценария.
Если для Oracle используется драйвер Microsoft ODBC, параметр можно указать @datasrc имя DSN. Для подключения без DSN строка поставщика поставляется через @provstr параметр. С поставщик OLE DB для Oracle (Майкрософт) используйте псевдоним сервера Oracle, настроенный в файле TNSNames.Ora для @datasrc параметра. Дополнительные сведения см. в разделе "sp_addlinkedserver" в SQL Server Books Online.
В этот раздел, описание метода или задачи включены действия, содержащие указания по изменению параметров реестра. Однако неправильное изменение параметров реестра может привести к возникновению серьезных проблем. Поэтому следует в точности выполнять приведенные инструкции. Для дополнительной защиты создайте резервную копию реестра, прежде чем редактировать его. Так вы сможете восстановить реестр, если возникнет проблема. Дополнительные сведения о том, как создать и восстановить реестр, щелкните следующий номер статьи, чтобы просмотреть статью в базе знаний Майкрософт: 322756 Как создать и восстановить реестр в Windows
Для получения расширенных сведений о любой ошибке при выполнении распределенного запроса можно использовать любой из следующих двух методов.
Подключение SQL Server использовать SQL Server Management Studio и запустить следующий код, чтобы включить флаг трассировки 7300.
Интерфейс::Метод не справился с кодом hex-error.
Код hex-error можно найти в файле Oledberr.h, который включен в набор разработки программного обеспечения MDAC (SDK).
Ошибка 7399. Поставщик OLE DB "%ls" для связанного сервера "%ls" сообщил об ошибке. %ls
Включай флаг трассировки 7300 или SQL profiler для захвата события ошибок OLEDB для получения расширенных сведений об ошибках OLEDB.
"ORA-12154: TNS:не удалось разрешить имя службы"
"Клиентские и сетевые компоненты Oracle (tm) не найдены. Эти компоненты поставляются корпорацией Oracle и являются частью установки клиентского программного обеспечения Oracle Version 7.3.3 (или больше) ".
Эти ошибки возникают при проблеме подключения к серверу Oracle. Просмотрите методы устранения неполадок с подключением в разделе Сервер Oracle ниже для дополнительных устранений неполадок.
Ошибка 7302. Не удается создать экземпляр поставщика OLE DB "MSDAORA" для связанного сервера "%ls".
Если вы используете стороннего поставщика Oracle, а поставщик Oracle не может работать вне процесса SQL Server, в результате изменения параметров поставщика включить его в процессе. Чтобы изменить параметры поставщика, используйте один из следующих методов.
Метод 1 Найдите следующий ключ реестра. Затем измените значение записи AllowInProcess (DWORD) на 1. Этот ключ реестра расположен под соответствующим именем поставщика: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\ProviderName .
Ошибка 7312. Недопустимое использование схемы и/или каталога для поставщика OLE DB "%ls" для связанного сервера "%ls". Было предоставлено имя из четырех части, но поставщик не предоставляет необходимые интерфейсы для использования каталога и/или схемы.
Ошибка 7313. Для поставщика "%ls" для связанного сервера была указана недействительный схема или каталог.
Ошибка 7314. Поставщик OLE DB "%ls" для связанного сервера "%ls" не содержит таблицу "%ls". Таблица либо не существует, либо у текущего пользователя нет разрешений на эту таблицу.
На стороне Oracle в верхнем шкафу хранится таблица или столбец, созданный без двойных кавычках. Если таблица или столбец заключены в двойные кавычка, таблица или столбец хранятся как есть.
В следующем вызове показано, существует ли таблица в схеме Oracle. В этом вызове также указывается точное имя таблицы.
Ошибка 7413. Не удалось подключиться к связанному серверу "%ls" (OLE DB Provider '%ls'). Включить делегирования или использовать удаленный SQL Server для текущего пользователя. Msg 18456, Level 14, State 1, Line 1 Login failed for user ' ' .
Ошибка 7391. Операция не может быть выполнена, так как поставщик OLE DB "MSDAORA" для связанного сервера "%ls" не смог начать распределенную транзакцию. След ошибки OLE DB [OLE/DB Provider 'MSDAORA' ITransactionJoin::JoinTransaction returned 0x8004d01b]
Если все записи реестра верны, MtxOCI.dll файл загружается. Если файл MtxOCI.dll не загружен, нельзя выполнять распределенные транзакции с Oracle с помощью поставщик OLE DB для Oracle (Майкрософт) или с помощью драйвера Microsoft ODBC для Oracle. Если вы используете сторонного поставщика и получаете ошибку 7391, убедитесь, что поставщик OLE DB, который вы используете, поддерживает распределенные транзакции. Если поставщик OLE DB поддерживает распределенные транзакции, убедитесь, что координатор распределенных транзакций Майкрософт (MSDTC) запущен и имеет доступ к сети.
Ошибка 7392. Невозможно запустить транзакцию для поставщика OLE DB "MSDAORA" для связанного сервера "%ls". Трассировка ошибки OLE DB [OLE/DB Provider 'MSDAORA' ITransactionLocal::StartTransaction возвращена 0x8004d013: ISOLEVEL=4096].
Поставщик OLE DB вернул ошибку 7392, так как для этого сеанса может быть активна только одна транзакция. Эта ошибка указывает на то, что при явной или неявной транзакции поставщик OLE DB пытается сделать заявление об изменении данных, а поставщик OLE DB не поддерживает вложенные транзакции. SQL Server требуется эта поддержка, чтобы при определенных условиях ошибки можно было прекратить действие заявления об изменении данных при продолжении транзакции.
Если он on, SQL Server не требует вложенной поддержки транзакций SET XACT_ABORT от поставщика OLE DB. Поэтому выполните перед выполнением заявлений об изменении данных в удаленных таблицах в SET XACT_ABORT ON неявной или явной транзакции. Делайте это в том случае, если поставщик OLE DB, который вы используете, не поддерживает вложенные транзакции.
Ошибка SQL Server 21620
При соединении с базой данных Oracle, версия которой предшествует версии 8.1, для публикации Oracle необходимо, чтобы версия клиентского программного обеспечения Oracle, установленного на распространителе, была не ниже 9. При соединении с базой данных Oracle 8.1 или более поздней версии рекомендуется, чтобы версия клиентского программного обеспечения Oracle была не ниже 10.
«Версия SQL*PLUS, доступная через переменную системного пути, в настоящее время недостаточна для поддержки публикации Oracle. Убедитесь, что на распространителе установлена текущая версия клиентской программы Oracle».
Если на распространителе установлено несколько версий клиентского программного обеспечения Oracle, убедитесь, что самая последняя версия не ниже 9, и что переменная системного пути ссылается вначале на эту версию (ссылки на другие версии могут использоваться, если самая последняя версия располагается первой). Дополнительные сведения о редактировании переменной системного пути см. в приводимом выше разделе «Ошибка SQL Server 21617».
Подключение к Oracle с помощью драйвера Microsoft ODBC для Oracle
Другие поставщики данных и дополнительные сведения
Сведения о подключении к Oracle с помощью поставщика данных, не представленного в этом списке, см. в разделе Строки подключения Oracle. Этот сторонний сайт также содержит дополнительные сведения о поставщиках данных и параметрах подключения, описанных на этой странице.
Я потратил 3 дня, пытаясь понять, почему я не могу подключиться к своей базе данных Oracle 12 с клиентской машины. Я прочитал много статей и погуглил, но пока не смог найти решение. Я испробовал все возможное и уже известное. Так что я надеюсь, что кто-то сможет указать мне правильное направление.
Вот некоторые подробности:
- Win7 x64 с установленным Oracle 12c.
- Windows Server 2012 R2 (клиент, да, эта установка не идеальна. Позже объясню почему).
- Windows Server 2012 R2 (контроллер домена)
- Все машины являются виртуальными машинами и являются частью домена.
- Все виртуальные машины работают под управлением ESXI 6.0.
Я могу без проблем сделать следующее:
Войдите на сервер Oracle.
ORCL - это мой Oracle isntance (глобальный идентификатор базы данных).
6.1 запустить tnsping orcl
6.2 статус lsnrctl (запущен и работает)
6.3 остановите и перезапустите службу списка из оснастки «Службы Windows».
6.4 система sqlplus / xyz @ orcl
6.5 Oracle SQL Developer может подключаться к ORCL
6.6 может пинговать клиентскую машину.
Однако Я НЕ МОГУ делать следующее:
7.1 скопировал tnsnames.ora с сервера oracle на этот клиентский компьютер и поместил его в папку [ORACLE_HOME] \ network \ admin, где он должен быть. заменил localhost на IP-адрес сервера Oracle.
7.2 Использование sqlplus system / xyz @ orcl или Oracle SQL Developer для подключения
7.3 может пинговать сервер Oracle.
7.4 tnsping orcl (сбой)
7.4 уже отключил все брандмауэры (доменные, частные и общедоступные) на сервере Oracle. Проблем с брандмауэрами или портами быть не должно.
Что бы я ни делал, я просто не могу подключиться с клиентской машины. Может кто подскажет, что я делаю не так? Кстати, мне не удалось установить Oracle 12c на Win2012R2. Итак, я установил на Win7x64. Но в конечном итоге все виртуальные машины будут работать на Windows Server 2012R2. Это моя домашняя лаборатория.
replaced "localhost" with the oracle sserver IP
Похоже, слушатель слушает только localhost (127.0.0.1); вы можете подтвердить это с помощью lsnrctl status или с помощью netstat -an | find "1521" (или вашего фактического номера порта, если вы не используете значение по умолчанию).
Вам необходимо изменить ваш, listener.ora чтобы либо прослушивать как localhost, так и IP-адрес сервера , либо слушать только внешний адрес. Но у последнего есть побочные эффекты - ваши существующие подключения и tnsnames.ora записи должны быть изменены, чтобы ссылаться на этот адрес (или, даже если он статический, DNS-имя, которое разрешается на этот адрес), и вашу базу данных может потребоваться изменить, чтобы он знает адрес слушателя для регистрации через LOCAL_LISTENER параметр инициализации. После изменения listener.ora вам нужно будет отскочить от слушателя, а затем вы сможете проверить его netstat снова.
Выполнены изменения, требующие перенастройки издателя
Для изменения таблиц метаданных репликации или процедур необходимо удалить и перенастроить издатель. Чтобы перенастроить издатель, необходимо удалить издатель и настроить его вновь при помощи среды SQL Server Management Studio, Transact-SQL или объектов RMO. Дополнительные сведения о настройке издателя см. в разделе Настройка издателя Oracle.
Удаление издателя Oracle (среда SQL Server Management Studio )
Подключитесь к распространителю для издателя Oracle в среде SQL Server Management Studio , а затем раскройте узел сервера.
Щелкните правой кнопкой мыши Репликация, затем щелкните Свойства распространителя.
На странице Издатели диалогового окна Свойства распространителя снимите флажок для издателя Oracle.
В этом разделе показано, как подключаться к источникам данных Oracle со страницы Выбор источника данных или Выбор назначения в мастере импорта и экспорта SQL Server. Для подключения к Oracle можно использовать ряд поставщиков данных.
Подробные требования и необходимые условия для подключения к базе данных Oracle выходят за рамки этой статьи Майкрософт. В ней предполагается, что у вас уже установлено клиентское программное обеспечение Oracle и вы можете успешно подключиться к целевой базе данных Oracle. Для получения дополнительных сведений обратитесь к администратору базы данных Oracle или к документации по Oracle.
Параметры подключения для этого поставщика данных одинаковы независимо от того, является ли Oracle источником или назначением. Таким образом, на страницах Выбор источника данных и Выбор назначения мастера отображаются одинаковые параметры.
Вам не нужно вводить строку подключения в поле ConnectionString списка. После ввода отдельных значений для имени сервера Oracle (источника данных) и информации для входа мастер собирает строку подключения из отдельных свойств и их значений.
Возникает ошибка SQL Server 21626 или 21627
- «Невозможно подключиться к серверу базы данных Oracle "%s" с помощью поставщика OLEDB для Oracle (OraOLEDB.Oracle)».
Указываемые параметры (драйвер ODBC для Oracle)
Параметры подключения для этого поставщика данных и драйвера ODBC одинаковы независимо от того, является ли сервер Oracle источником или назначением. Таким образом, на страницах Выбор источника данных и Выбор назначения мастера отображаются одинаковые параметры.
Чтобы подключиться к Oracle с помощью драйвера ODBC для Oracle, соберите строку подключения, используя указанные ниже параметры и их значения. Полный формат строки подключения приведен после списка параметров.
Вы можете получить помощь в построении строки подключения. Кроме того, вместо указания строки подключения вы можете предоставить существующее имя DSN (имя источника данных) или создать новое. Дополнительные сведения об этих возможностях см. в разделе Подключение к источнику данных ODBC.
Драйвер
Имя драйвера ODBC — Microsoft ODBC for Oracle.
Server
Имя сервера Oracle.
Uid и Pwd
Идентификатор пользователя и пароль для подключения.
Ошибка SQL Server 21663 возникает из-за отсутствия первичного ключа
«Не найден правильный первичный ключ для исходной таблицы [TableOwner>].[TableName>]»
Сведения о требованиях для первичных ключей см. в подразделе «Уникальные индексы и ограничения» раздела Design Considerations and Limitations for Oracle Publishers.
Распространителю SQL Server не удается подключиться к экземпляру базы данных Oracle
Если распространителю SQL Server не удается подключиться к издателю Oracle, необходимо убедиться в следующем:
Необходимое программное обеспечение Oracle установлено на распространителе.
База данных Oracle доступна в режиме в «сети» и к ней не удается подключиться при помощи такого средства, как SQL*Plus.
Имя входа, которое репликация использует для подключения к издателю Oracle, имеет достаточно разрешений. Дополнительные сведения см. в статье Настройка издателя Oracle.
Имена TNS, определенные во время настройки издателя Oracle, приводятся в файле tnsnames.ora.
Используются правильные значения Oracle Home и пути. Даже если есть только один набор исполняемых файлов Oracle, установленных на распространителе SQL Server , проверьте, чтобы были правильно установлены переменные среды, относящиеся к Oracle Home. При изменении значений переменных среды необходимо остановить и перезапустить SQL Server , чтобы эти изменения вступили в действие.
Дополнительные сведения о настройке и проверке подключения см. в подразделе "Установка и настройка клиентского сетевого программного обеспечения Oracle на распространителе SQL Server" раздела Настройка издателя Oracle.
Проблемы, связанные с разрешениями для пользовательской схемы репликации
Пользовательская схема репликации должна иметь разрешения, описанные в подразделе "Создание пользовательской схемы вручную" раздела Настройка издателя Oracle.
Ошибка, касающаяся клиентского и сетевого программного обеспечения Oracle
«Не удалось подключиться к серверу с помощью [поставщика Microsoft OLE DB для Oracle]. Клиентские и сетевые компоненты Oracle не найдены. Эти компоненты поставляются корпорацией Oracle и являются частью установочного пакета клиентского программного обеспечения Oracle 7.3.3 или более поздней версии. Поставщик не может функционировать, пока эти компоненты не будут установлены».
Если на распространителе устанавливается подходящее клиентское программное обеспечение Oracle, то убедитесь в том, что SQL Server остановлен, а затем перезапустите его после завершения установки клиентского ПО. Это необходимо SQL Server для распознавания клиентских компонентов.
Если проверено, что эти разрешения предоставлены и что компоненты установлены должным образом, но эта ошибка продолжает возникать, убедитесь в правильности значений настроек в разделе реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI.
Для Oracle 10g правильными являются следующие значения настроек:
Для Oracle 9i правильными являются следующие значения настроек:
Читайте также: