Oraoledb oracle что это
В этой теме рассматривается ряд вопросов, которые могут возникнуть при настройке и использовании издателя Oracle.
Ошибка SQL Server 21663 возникает из-за отсутствия первичного ключа
«Не найден правильный первичный ключ для исходной таблицы [TableOwner>].[TableName>]»
Сведения о требованиях для первичных ключей см. в подразделе «Уникальные индексы и ограничения» раздела Design Considerations and Limitations for Oracle Publishers.
Ошибка 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 .
Component Certifications
Oracle provides support information for components on various platforms, lists compatible client and database versions, and identifies patches and workaround information.
Find the latest certification information at:
You must register online before using OracleMetaLink. After logging into OracleMetaLink, select Product Lifecycle from the left-hand column. From the Products Lifecycle page, select the Certifications button. Other Product Lifecycle options include Product Availability, Desupport Notices, and Alerts.
This one specifies OS authentication to be used when connecting to an Oracle database.
Provider = OraOLEDB.Oracle; Data Source = MyOracleDB; OSAuthent = 1;
Ошибка SQL Server 21620
При соединении с базой данных Oracle, версия которой предшествует версии 8.1, для публикации Oracle необходимо, чтобы версия клиентского программного обеспечения Oracle, установленного на распространителе, была не ниже 9. При соединении с базой данных Oracle 8.1 или более поздней версии рекомендуется, чтобы версия клиентского программного обеспечения Oracle была не ниже 10.
«Версия SQL*PLUS, доступная через переменную системного пути, в настоящее время недостаточна для поддержки публикации Oracle. Убедитесь, что на распространителе установлена текущая версия клиентской программы Oracle».
Если на распространителе установлено несколько версий клиентского программного обеспечения Oracle, убедитесь, что самая последняя версия не ниже 9, и что переменная системного пути ссылается вначале на эту версию (ссылки на другие версии могут использоваться, если самая последняя версия располагается первой). Дополнительные сведения о редактировании переменной системного пути см. в приводимом выше разделе «Ошибка SQL Server 21617».
Oracle’s Provider
In my limited testing, the Oracle OLEDB provider was installed when I installed the Oracle Server itself. So, in most cases, I would think the provider should already be listed. If it isn’t, you will need to install it using the Oracle Data Access Components (ODAC) install. This comes in a 64bit and 32bit flavor. Here are the links, I could find today, to download ODAC. You may want to validate the version of your Oracle Server if you want to match up the versions between the Server and Client libraries.
After that is installed, we should see Oracle Provider for OLE DB in the provider list within the UDL. You will then need to restart the Data Management Gateway Service. The test connection should work at that point. If it still doesn’t, try rebooting the server that the Data Management Gateway is installed on.
Bitness Matters (32bit vs. 64bit)
One thing to remember with the UDL and with the Data Management Gateway is that bitness matters. If you are on a 64bit machine, the UDL, by default, will show the 64bit OLEDB Providers. If you installed the 32bit Data Management Gateway on a 64bit Windows machine, you will need the 32bit Oracle OLEDB Provider.
Looking on the machine where I have the Data Management Installed, I don’t see Oracle’s OLEDB Provider listed on the 64bit side. I have the 64bit Data Management Gateway installed.
Ошибка SQL Server 21642, связанная с повторяющимся именем входа связанного сервера
«Для разнородных издателей необходим связанный сервер. Связанный сервер с именем " " уже существует. Удалите связанный сервер или выберите другое имя издателя».
Эта ошибка может возникнуть при попытке непосредственно создать связанный сервер, или если ранее была удалена связь между издателем Oracle и распространителем SQL Server , и теперь предпринимается попытка перенастроить издатель. Если эта ошибка возникает при попытке перенастроить издатель, удалите связанный сервер с помощью sp_dropserver (Transact-SQL).
Если вам нужно подключиться к издателю Oracle через подключение связанного сервера, создайте другое имя службы TNS и используйте это имя при вызове процедуры sp_addlinkedserver (Transact-SQL). Сведения о создании имен службы TNS см. в документации Oracle.
Ошибка 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.
System Requirements
The following items are required on a system to use Oracle Provider for OLE DB:
Windows NT, Windows XP, Windows 2000, or Windows Server 2003
Access to an Oracle database (Oracle8i or later)
Redistributable files provided with Microsoft Data Access Components (MDAC) 2.1 or higher are required by the provider. These files are available at the Microsoft Web site:
Oracle Services for Microsoft Transaction Server release 10.1 or higher. This is required for consumers using Microsoft Transaction Server (MTS) or COM+.
OraOLEDB.Oracle.1' is not registered on local machine SSIS
][1]
I have uninstalled and reinstalled oracle client,
I installed both 32 & 64 bit drivers to local machine,
made sure the ODBC test connection is working but I still get the error
Проблемы, связанные с разрешениями для пользовательской схемы репликации
Пользовательская схема репликации должна иметь разрешения, описанные в подразделе "Создание пользовательской схемы вручную" раздела Настройка издателя Oracle.
TNS-less connection string
Provider = OraOLEDB.Oracle; Data Source = (DESCRIPTION=(CID=GTU_APP)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=myHost)(PORT=myPort)))(CONNECT_DATA=(SID=MyOracleSID)(SERVER=DEDICATED))); User Id = myUsername;
Password = myPassword;
Ошибка 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.
Выполнены изменения, требующие перенастройки издателя
Для изменения таблиц метаданных репликации или процедур необходимо удалить и перенастроить издатель. Чтобы перенастроить издатель, необходимо удалить издатель и настроить его вновь при помощи среды SQL Server Management Studio, Transact-SQL или объектов RMO. Дополнительные сведения о настройке издателя см. в разделе Настройка издателя Oracle.
Удаление издателя Oracle (среда SQL Server Management Studio )
Подключитесь к распространителю для издателя Oracle в среде SQL Server Management Studio , а затем раскройте узел сервера.
Щелкните правой кнопкой мыши Репликация, затем щелкните Свойства распространителя.
На странице Издатели диалогового окна Свойства распространителя снимите флажок для издателя Oracle.
This chapter introduces Oracle Provider for OLE DB (OraOLEDB).
This chapter contains these topics:
Ошибка, касающаяся клиентского и сетевого программного обеспечения 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 правильными являются следующие значения настроек:
Ошибка Oracle ORA-01000
Репликация использует курсоры в издателе Oracle в процессе добавления статей в публикацию. Во время этого процесса возможно превышение максимально допустимого количества курсоров, доступных на издателе. Если это происходит, возникает следующая ошибка:
«ORA-01000: превышение максимального числа открытых курсоров»
Для исключения этой проблемы необходимо убедиться, что для параметра max_open_cursors в базах данных Oracle установлено достаточно большое число (по меньшей мере, 1 000). Дополнительные сведения об этой установке приводятся в документации Oracle.
Ошибка Oracle ORA-22285
Если в таблице имеется столбец BFILE, данные для столбца хранятся в файловой системе. Административной учетной записи репликации должно быть предоставлено право доступа в каталог, в котором хранятся данные. С этой целью должно использоваться следующее синтаксическое выражение:
GRANT READ ON DIRECTORY TO
«ORA-22285: несуществующий каталог или файл для операции FILEOPEN»
Overview of OraOLEDB
Oracle Provider for OLE DB (OraOLEDB) is an OLE DB data provider that offers high performance and efficient access to Oracle data by OLE DB consumers.
In general, this developer's guide assumes that you are using OraOLEDB through OLE DB or ADO.
For sample code, the latest patches, and other technical information on the Oracle Provider for OLE DB, go to
See Also:
Controling rowset cache mechanism
Specifies the type of caching used by the provider to store rowset data. OraOLEDB provides two caching mechanisms; File and Memory.
Provider = OraOLEDB.Oracle; Data Source = MyOracleDB; User Id = myUsername; Password = myPassword; CacheType = File;
Memory is the default value. All the rowset data is stored in-memory which provides better performance at the expense of higher memory utilization.
File = All the rowset data is stored on disk. This caching mechanism limits the memory consumption at the expense of performance.
Возникает ошибка SQL Server 21626 или 21627
- «Невозможно подключиться к серверу базы данных Oracle "%s" с помощью поставщика OLEDB для Oracle (OraOLEDB.Oracle)».
Ошибка 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 в поле Значение поля .
Overview of OLE DB
OLE DB is an open standard data access methodology which utilizes a set of Component Object Model (COM) interfaces for accessing and manipulating different types of data. These interfaces are available from various database providers.
Oracle XE, C++ ADO
Provider = OraOLEDB.Oracle; Data Source = localhost:1521/XE; Initial Catalog = myDataBase; User Id = myUsername; Password = myPassword;
OLE DB Design
OLE DB's design centers around the concept of a consumer and provider. Figure 1-1, "OLE DB Flow" is an illustration of the OLE DB system. The consumer represents the traditional client. The provider places data into a tabular format and returns it to the consumer.
Figure 1-1 OLE DB Flow
OLE DB data providers are a set of COM components that transfer data from a data source to a consumer. An OLE DB Provider places that data in a tabular format in response to calls from a consumer. Providers can be simple or complex. A provider may return a table, it may allow the consumer to determine the format of that table, and it may perform operations on the data.
Each provider implements a standard set of COM interfaces to handle requests from the consumer. A provider may implement optional COM interfaces to provide additional functionality.
With the standard interfaces, any OLE DB consumer can access data from any provider. Because of COM components, consumers can access them in any programming language that supports COM, such as C++, Visual Basic, and Java.
OLE DB Data Consumers
The OLE DB data consumer is any application or tool that utilizes OLE DB interfaces of a provider to access a broad range of data.
Oracle XE, VB6 ADO
Provider = OraOLEDB.Oracle; dbq = localhost:1521/XE; Database = myDataBase; User Id = myUsername; Password = myPassword;
Распространителю 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 связан с другим распространителем
«Экземпляр "OraclePublisherName>" сервера Oracle ранее использовал "SQLServerDistributorName>" в качестве распространителя. Чтобы использовать "NewSQLServerDistributorName>" в качестве его распространителя, необходимо удалить текущую конфигурацию репликации на экземпляре сервера Oracle, в результате чего будут удалены все публикации на этом экземпляре сервера».
«Сервер Oracle "OracleServerName>" уже определен в качестве издателя "OraclePublisherName>" на распространителе "SQLServerDistributorName>. ". Для повторного создания удалите издатель или открытый синоним " "».
При удалении издателя Oracle объекты репликации в базе данных Oracle автоматически очищаются. Однако в некоторых случаях необходима ручная очистка объектов репликации Oracle. Для ручной очистки объектов репликации Oracle, созданных при репликации, выполните следующее:
Подключитесь к издателю Oracle с разрешениями администратора базы данных.
Выполните команду SQL DROP PUBLIC SYNONYM MSSQLSERVERDISTRIBUTOR; .
32bit Providers
When looking at the 32bit UDL, you will see an Oracle provider listed called Microsoft OLE DB Provider for Oracle.
This is not the Oracle OLEDB Provider that comes from Oracle itself. This is an old Microsoft Provider that ships with windows and makes use of the Oracle 7 & 8 client libraries. The Data Management Gateway does not use this Provider. The Microsoft provider is only a 32bit provider and will not show up in the 64bit list.
3 Answers
If you are trying to use Oracle OLEDB provider, what is the point to test ODBC connection?
They have nothing to do with each other.
I would suggest to create a udl flle, and check there what OLEDB provider is installed.
And upon selection a proper Oracle OLEDB provider, you can test the connection.
You should see something like below. I don't have Oracle OLEDB provider installed on my machine, but you should see and select Oracle's provider, and proceed to the Connection tab to test the connection.
UPDATE
Upon testing your connections successfully via udl file, you can open that udl file in notepad. It will reveal for you the entire connection string that is working. You can go now to SSIS, and compare its Oracle connection properties vs. connection in the udl file. Specially the provider attribute of the connection in SSIS. If there is a discrepancy, you can adjust it to match what is in the udl file.
I created a udl-oracle file as you suggested and the test connection was successful for oracle procider for OLE DB
However when I try to test connection on SSIS it still fails with the error "
Test connection failed because of an error in initializing provider. The 'OraOLEDB.Oracle.1' provider is not registered on the local machine."
OraOLEDB Installation
Oracle Provider for OLE DB is included as part of your Oracle installation. It contains the features and demos that illustrate how to use this product to solve real-world problems.
See Also:
During the installation process, the files listed in Table 1-1 are installed on the system. Some files have ver in their name to indicate the release version.
Table 1-1 Oracle Provider for OLE DB Files
where lang is the appropriate language
where lang is the appropriate language
Controling the chunksize
This one specifies the size, in bytes, of the data in LONG and LONG RAW columns fetched and stored in the provider cache.
Provider = OraOLEDB.Oracle; Data Source = MyOracleDB; User Id = myUsername; Password = myPassword; ChunkSize = 200;
Providing a high value for this attribute improves performance, but requires more memory to store the data in the rowset. Valid values are 1 to 65535. The default is 100.
PLSQLRSet: If the stored procedure, provided by the consumer, returns a rowset, PLSQLRSet must be set to TRUE (enabled).
NDatatype: This property allows the consumers to specify whether any of the parameters bound to the command are of Oracle's N datatypes (NCHAR, NVARCHAR or NCLOB). This information is required by OraOLEDB to detect and bind the parameters appropriately. This property should not be set for commands executing SELECT statements. However, this property must be set for all other SQLs such as INSERT, UPDATE, and DELETE.
SPPrmsLOB: This property allows the consumer to specify whether one or more of the parameters bound to the stored procedures are of Oracle's LOB datatype (CLOB, BLOB, or NCLOB). OraOLEDB requires this property to be set to TRUE, in order to fetch the parameter list of the stored procedure prior to execution. The use of this property limits the processing overhead to stored procedures having one or more LOB datatype parameters.
Возникает ошибка SQL Server 21684
«Разрешений, связанных с именем входа администратора для издателя Oracle «%s», недостаточно».
Чтобы проверить разрешения, предоставленные пользователю, выполните следующий запрос: SELECT * from session_privs . Результат выполнения должен быть аналогичен следующему:
CREATE PUBLIC SYNONYM
DROP PUBLIC SYNONYM
Using distributed transactions
This one specifies sessions to enlist in distributed transactions. This is the default behaviour.
Provider = OraOLEDB.Oracle; Data Source = MyOracleDB; User Id = myUsername; Password = myPassword; DistribTX = 1;
We had a case that came in where the customer was trying to configure a Data Source within the Power BI Admin Center for an Oracle Server. During the creation of that Data Source, they went to set the credentials, and received the following error.
Failed to test connection. The ‘OraOLEDB.Oracle’ provider is not registered on the local machine.
There was nothing present within System Health of the Power BI Admin Center. Within the Data Management Gateway Event Log, we do see the error.
Log Name: Data Management GatewaySource: Data Management Gateway Host ServiceDate: 1/7/2015 9:55:27 AMEvent ID: 20001Task Category: NoneLevel: WarningKeywords: ClassicUser: N/AComputer: CAPTTHRACE.battlestar.localDescription: Failed to connect to the database. Error message: The ‘OraOLEDB.Oracle’ provider is not registered on the local machine.
Even though we may be doing the test connection on a different machine from where the Data Management Gateway is located, the test connection is actually invoked via the Data Management Gateway. That is why we see the error in the Event Log for the Data Management Gateway.
This issue is due to the fact that we can’t find the Oracle OLEDB Provider from the Data Management Gateway perspective. We can verify this by using a Universal Data Link (UDL) file to see what OLEDB Providers are available on the machine. See Connectivity 101 for more information regarding a UDL File.
NOTE: By default the Oracle OLEDB Provider should be installed. I saw this with both Oracle 11 and Oracle 12.
Controling the fetchsize
This one specifies the number of rows the provider will fetch at a time (fetch array).
Provider = OraOLEDB.Oracle; Data Source = MyOracleDB; User Id = myUsername; Password = myPassword; FetchSize = 200;
The FetchSize value must be set appropriately depending on the data size and the response time of the network. If the value is set too high, this could result in more wait time during the execution of the query. If the value is set too low, this could result in many more round trips to the database. Valid values are 1 to 429,496,296. The default is 100.
Читайте также: