Как установить odac oracle

Обновлено: 06.07.2024

При разработке программного обеспечения всегда руководствовался простым правилом, чем меньше в развивающемся проекте используется сторонних компонентов, платформ, технологий, тем лучше. Почти все гениальное — просто. К сожалению, у разработчика не всегда есть возможность свободного выбора средств и систем, с которыми он работает. Вот и мне достался проект Windows Forms + ODAC + Oracle DB Server.

С большой радостью узнал о выходе Oracle Data Access Components (ODAC) for Microsoft Entity Framework and LINQ to Entities (Beta2). Очень ждал этого момента и вот свершилось! Можно не использовать сторонние ORM — все под ключ.

Как научить приложение использовать Entity Framework через установленный на конечных машинах клиент ODAC — описано в пошаговой инструкции от Oracle. Кому интересно, как избавиться от необходимости установки клиента Oracle на машинах пользователей, прошу под кат.

Общие требования

  1. Visual Studio 2010 Service Pack 1
  2. Oracle Database server 9.2 или выше
  3. ODAC for Microsoft Entity Framework and LINQ to Entities
Подключаемые библиотеки

1.4 MB)) подключить как Reference и присвоить свойству “Copy local” значение “true”.

    «путь к клиенту»\client_1\oci.dll (

Этого достаточно для обеспечения доступа к БД без установки клиента на машине пользователя:

private bool TestConnect()
try
var oracleConnection = new OracleConnection
ConnectionString =
"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=ServerNameOrIP)(PORT=PortNumber)))(CONNECT_DATA=(SERVICE_NAME=DBName)));User >
>;
oracleConnection.Open();
var oracleCommand = new OracleCommand
CommandText = "select sysdate from dual" ,
Connection = oracleConnection,
Transaction = null
>;
var oracleDataAdapter = new OracleDataAdapter ;
var sysDateDataSet = new DataSet( "SomeName" );
oracleDataAdapter.Fill(sysDateDataSet, "dateTimeTable" );
return sysDateDataSet.Tables[0].Rows.Count > 0;
>
catch (Exception exx)
MessageBox.Show( string .Format( "Could not connect directly to an Oracle database: \n " , exx.Message));
return false ;
>
* This source code was highlighted with Source Code Highlighter .
Что необходимо сделать для использования Entity Framework Model без установки клиента Oracle

В файл конфигурации проекта (App.Config/Web.Config) будет автоматически (если вы выберете данный соответствующий пункт в мастере) добавлена строка подключения к БД Oracle:

< add name ="HREntities" connectionString ="metadata=res://*/HRModel.csdl|res://*/HRModel.ssdl|res://*/HRModel.msl;provider=Oracle.DataAccess.Client;provider connection string="Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=ServerNameOrIP)(PORT=PortNumber)))(CONNECT_DATA=(SERVICE_NAME=DBName)));User > providerName ="System.Data.EntityClient" />

Тут стоит обратить особое внимание на то, что значение, присвоенное атрибуту «provider connection string» обязательно должно быть в двойных кавычках (для их обозначения необходимо использовать код &_q_u_o_t). Это также стоит учесть при динамическом формировании строки подключения.

< system.data >
< DbProviderFactories > <br> < remove invariant ="Oracle.DataAccess.Client" />

< add name ="Oracle.DataAccess.Client" invariant ="Oracle.DataAccess.Client" description ="Oracle Data Provider for .NET" type ="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.112.2.40, Culture=neutral, PublicKeyToken=89b483f429c47342" />

</ DbProviderFactories >
</ system.data >
Тонкости

При динамическом подключении модели к БД «правильным» методом от MS, следует обратить внимание на не совсем корректное формирование строки подключения через объект EntityConnectionStringBuilder
string providerName = "Oracle.DataAccess.Client" ;
string dataSourse = (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=ServerNameOrIP)(PORT=PortNumber)))(CONNECT_DATA=(SERVICE_NAME=DBName)));User > var sqlBuilder =
new SqlConnectionStringBuilder
DataSource = dataSourse
>;
string providerString = sqlBuilder.ToString();
var entityBuilder =
new EntityConnectionStringBuilder
Provider = providerName,
ProviderConnectionString = providerString,
Metadata =
@"res://*/HRModel.csdl|res://*/HRModel.ssdl|res://*/HRModel.msl"
>;
using ( var conn =
new EntityConnection(entityBuilder.ToString()))
conn.Open();
Console .WriteLine( "Just testing the connection." );
conn.Close();
>

* This source code was highlighted with Source Code Highlighter .

В результате entityBuilder.ToString() вернет строку подключения с лишними одинарными кавычками, в которые заключено полностью значение атрибута provider connection string
metadata=…;provider=Oracle.DataAccess.Client;provider connection string= ' Data Source= \" (DESCRIPTION=(… ); User color="red">\"'

В то время как провайдер Oracle требует строку подключения следующего формата:
metadata=…;provider=Oracle.DataAccess.Client;provider connection string= \" Data Source=(DESCRIPTION(…); User color="red">\"

– иначе выдает ошибку.
Пока можно формировать строку подключения некрасиво:

private bool DynamicConnect()
const string providerName = "Oracle.DataAccess.Client" ;
const string serverName = "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=ServerNameOrIP)(PORT=PortNumber)))(CONNECT_DATA=(SERVICE_NAME=DBName)));User >;
const string metadata = "metadata=res://*/HRModel.csdl|res://*/HRModel.ssdl|res://*/HRModel.msl" ;
var entBild = string .Format( "metadata=;provider=;provider connection string=\"Data Source=\";" , metadata, providerName, serverName);
try
var conn = new EntityConnection(entBild);
conn.Open();
var hrEntities = new HREntities(conn);
var tmpResult = hrEntities.BRIDGE.Count();
conn.Close();
return true ;
>
catch (Exception exx)
MessageBox.Show( string .Format( "Could not connect directly to an Oracle database: \n " , exx.Message));
return false ;
>
>

* This source code was highlighted with Source Code Highlighter .

Быть может это отголоски бета версии – посмотрим как будет в релизе, который, как обещает Oracle, состоится в четвертом квартале 2011 года.

Некоторые возможности могут присутствовать в одном продукте, но не в других из-за расписаний развертывания и возможностей конкретного узла.

Предварительные требования

Поддерживаемые версии Oracle:

  • Oracle Server 9 и более поздних версий
  • Клиент доступа к данным Oracle (ODAC) — программное обеспечение версии 11.2 и более поздней

Прежде чем можно будет подключиться к базе данных Oracle с помощью Power Query, необходимо установить клиентское программное обеспечение Oracle версии 8.1.7 или выше на компьютере. Чтобы установить 32-разрядное клиентское программное обеспечение Oracle, перейдите на страницу 32-разрядной версии Oracle Data Access Components (ODAC) с Oracle Developer Tools для Visual Studio (12.1.0.2.4). Чтобы установить 64-разрядную версию клиента Oracle, перейдите на страницу 64-разрядной версии ODAC 12c Release 4 (12.1.0.2.4) Xcopy для 64-разрядных версий Windows.

Для подключения к базе данных Oracle с помощью локального шлюза данных необходимо установить правильное клиентское программное обеспечение Oracle на компьютере, где выполняется шлюз. Используемое клиентское программное обеспечение Oracle зависит от версии сервера Oracle, но всегда будет соответствовать 64-разрядному шлюзу. Дополнительные сведения см. в статье Управление своим источником данных — Oracle.

Поддерживаемые возможности

  • Используя режим Import
  • DirectQuery
  • Расширенные параметры
    • Время ожидания команды в минутах
    • Инструкция SQL
    • Включить столбцы отношений
    • Навигация с помощью полной иерархии

    Подключение базы данных Oracle из Power Query Desktop

    Чтобы установить соединение, сделайте следующее:

    Выберите параметр база данных Oracle в выбранном соединителе.

    Укажите сервер Oracle для подключения к серверу. Если требуется идентификатор безопасности, укажите его с помощью формата ServerName/SID, где SID — уникальное имя базы данных. Если формат имя_сервера/SID не подходит, попробуйте использовать формат имя_сервера/имя_службы, где имя_службы — это псевдоним, используемый при подключении.

    Введите подключение к базе данных Oracle.

    Если вы используете локальную базу данных или автономные подключения к базе данных, вам может потребоваться поместить имя сервера в кавычки, чтобы избежать ошибок подключения.

    при подключении из Power BI Desktop выберите режим подключения к данным импорта или DirectQuery . В остальных шагах примера используется режим подключения с импортом данных. Дополнительные сведения о DirectQuery см. в статье Использование DirectQuery в Power BI Desktop.

    Если вы подключаетесь к этой базе данных Oracle впервые, выберите тип проверки подлинности, который вы хотите использовать, а затем введите свои учетные данные. Дополнительные сведения о проверке подлинности см. в статье Проверка подлинности с помощью источника данных.

    Введите учетные данные базы данных Oracle.

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

    Подключение базы данных Oracle из Power Query в сети

    Чтобы установить соединение, сделайте следующее:

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

    В появившемся диалоговом окне база данных Oracle укажите сервер Oracle для подключения к серверу. Если требуется идентификатор безопасности, укажите его с помощью формата ServerName/SID, где SID — уникальное имя базы данных. Если формат имя_сервера/SID не подходит, попробуйте использовать формат имя_сервера/имя_службы, где имя_службы — это псевдоним, используемый при подключении.

    Введите подключение к базе данных Oracle в Интернете.

    Выберите имя локального шлюза данных.

    Необходимо выбрать локальный шлюз данных для этого соединителя, будь то база данных Oracle в локальной сети или на веб-сайте.

    Если вы подключаетесь к этой базе данных Oracle в первый раз, выберите тип учетных данных для подключения в поле тип проверки подлинности. Если планируется использовать учетную запись, созданную в Oracle, а проверку подлинности Windows, выберите вариант Базовый.

    Введите свои учетные данные.

    В навигаторе выберите нужные данные, а затем выберите преобразовать данные для преобразования данных в Power Query редакторе.

    Подключение с помощью дополнительных параметров

    Power Query Desktop предоставляет набор дополнительных параметров, которые можно добавить в запрос при необходимости.

    Дополнительные параметры, включаемые в диалоговое окно "подключение к базе данных Oracle".

    В следующей таблице перечислены все дополнительные параметры, которые можно задать в Power Query Desktop.

    Дополнительный параметр Описание
    Время ожидания команды в минутах Если подключение длится дольше 10 минут (время ожидания по умолчанию), можно ввести другое значение в минутах, чтобы соединение было открыто дольше. Этот параметр доступен только в Power Query Desktop.
    Инструкция SQL Дополнительные сведения см. в подразделе Импорт данных из базы данных с помощью собственного запроса к базе данных.
    Включить столбцы отношений Если флажок установлен, включает столбцы, которые могут иметь связи с другими таблицами. Если этот флажок снят, эти столбцы отображаться не будут.
    Навигация с помощью полной иерархии Если флажок установлен, навигатор отображает полную иерархию таблиц в базе данных, к которой выполняется подключение. Если флажок не установлен, навигатор отображает только те таблицы, столбцы и строки которых содержат данные.

    Выбрав нужные дополнительные параметры, нажмите кнопку ОК в Power Query рабочем столе, чтобы подключиться к базе данных Oracle.

    Устранение неполадок

    Если синтаксис именования неверен или не настроен должным образом, в Oracle может возникнуть любая из нескольких ошибок.

    • ORA-12154: TNS: не удалось разрешить указанный идентификатор подключения.
    • ORA-12514: TNS: прослушиватель в настоящее время не знает о службе, запрошенной в дескрипторе подключения.
    • ORA-12541: TNS: нет прослушивателя.
    • ORA-12170: TNS: истекло время ожидания подключения.
    • ORA-12504: TNS: прослушивателю не предоставлены SERVICE_NAME в CONNECT_DATA.

    Эти ошибки могут произойти, если клиент Oracle не установлен или неправильно настроен. Если он установлен, убедитесь, что файл tnsnames. ORA настроен правильно и вы используете правильный net_service_name. кроме того, необходимо убедиться, что net_service_name между компьютером, на котором используется Power BI Desktop, и компьютером, на котором выполняется шлюз. Дополнительные сведения см. в разделе Необходимые условия.

    Кроме того, могут возникнуть проблемы совместимости между версией сервера Oracle и версией клиента доступа к данным Oracle. Как правило, необходимо, чтобы эти версии совпадали, так как некоторые сочетания несовместимы. Например, ODAC 12. x не поддерживает Oracle Server версии 9.

    Скачайте Power BI Desktop из Центра загрузки вместо магазина Microsoft Store.

    Если вы используете Сервер отчетов Power BI, см. сведения о типе соединения Oracle.

    Читайте также: