Oracle oci что это

Обновлено: 05.07.2024

Корпорация Oracle представила новый сервис Oracle Cloud Infrastructure (OCI) GoldenGate. Это полностью управляемый облачный сервис, гарантирующий заказчикам, что их данные всегда доступны в любом нужном месте, в том числе для аналитики в реальном времени. OCI GoldenGate создан на основе технологии транспорта данных в реальном времени — Oracle GoldenGate.

Сервис Oracle Cloud Infrastructure (OCI) GoldenGate предоставляет заказчикам платформу для репликации данных, с возможностью проектирования, исполнения, организации и мониторинга событий в реальном времени потоковой передачи данных в различные системы-потребители. Это первый облачный сервис такого рода, предлагающий гибкое решение с оплатой по факту использования для репликации баз данных общего назначения, интеграции данных, передачи их в облако в реальном времени и поддержки аналитики временных рядов, пока данные находятся в активном состоянии.

OCI GoldenGate — облачный сервис, который может преодолеть основные препятствия, стоящие на пути ИТ-компании при миграции критически важных баз данных в облако. Для извлечения, репликации и загрузки данных в облачные хранилища данных требуется время, опыт и навыки, что делает процесс чрезмерно сложным и дорогостоящим. Сервис OCI GoldenGate, наоборот, обеспечивает высокоавтоматизированную интеграцию данных, сбор данных об изменениях и репликацию транзакций в реальном времени. Он позволяет согласовать интеграцию операционной базы данных с аналитическими данными в режиме реального времени в экосистеме из нескольких облаков. Благодаря сочетанию гибких возможностей облака и простоты эксплуатации затраты заказчиков можно снизить вдвое по сравнению с вариантами самостоятельных решений от других поставщиков облачных услуг.

Основные сценарии использования сервиса OCI GoldenGate:

  • хранилище данных в реальном времени. Обеспечение непрерывного сбора и доставки измененных данных между OLTP и системами хранилищами данных в реальном времени;
  • Oracle SaaS. Прямая интеграция с Oracle SaaS приложениями для обеспечения сбора данных об изменениях в реальном времени и доставки этих данных в системы-потребители или аналитические витрины, чтобы обеспечить более глубокий анализ и понимание бизнеса;
  • операционная отчетность. Перенос аналитической нагрузки с продуктивных баз данных в облако и прочие более дешевые платформы в целях снижения стоимости владения, сохраняя возможность real-time аналитики;
  • интеграция операционных данных. Интеграция операционных данных между OLTP-системами в режиме реального времени. Платформа для создания сервис-ориентированной архитектуры и работы с данными в реальном времени путем публикации измененных данных.

OCI GoldenGate работает на основе новейшей микросервисной архитектуры Oracle GoldenGate 21c, которая позволяет создавать глобальную аналитику событий подключенных систем и устройств. Полностью инкапсулируемые микросервисы OCI GoldenGate позволяют заказчикам бесшовно интегрировать сервис в свой конвейер разработки CI/CD в качестве первоклассного сервиса «инфраструктура как код». OCI GoldenGate разработан для интеграции с локальными mesh-развертываниями GoldenGate Docker и Kubernetes без общих зависимостей платформы и общего репозитория, что обеспечивает превосходную управляемость при более низкой совокупной стоимости владения. Разработчики и администраторы баз данных могут моментально настроить сервис на троекратное автоматическое масштабирование, чтобы начинать с малого и расти по мере увеличения видов нагрузок.

Новый сервис Oracle Cloud Infrastructure GoldenGate предоставляет пользователям именно то, что им больше всего нравится в Oracle GoldenGate и OCI, в простом, многофункциональном и доступном пакете. Он отлично дополняет такие облачные сервисы на OCI, как автономные базы данных, Oracle Exadata Cloud Service и Oracle Database Cloud Service, обеспечивая простую, высоко производительную и доступную платформу для транспорта данных в реальном времени.

По Вашему запросу ничего не найдено.

Рекомендуем сделать следующее:

  • Проверьте правильность написания ключевых слов.
  • Используйте синонимы введенных Вами ключевых слов, например “приложение” вместо “программное обеспечение”.
  • Попробуйте воспользоваться одним из популярных поисковых запросов ниже.
  • Начните новый поиск.

Oracle C and C++ Interfaces

Oracle Database supports C and C++ programmers with a choice of high performance APIs, including standards-compliant, open-source and proprietary interfaces.

Oracle Call Interface

Oracle Call Interface is the comprehensive, high performance, native C language interface to Oracle Database for custom or packaged applications.

A broad range of customers including Fortune 500 customers and ISVs develop high performance applications directly in Oracle Call Interface.

Oracle Call Interface libraries are included by default in Oracle Database 18c. Oracle Call Interface is also in the lightweight Oracle Instant Client, allowing ISVs and customers to quickly install and deploy Oracle Call Interface applications and tools. See the Oracle Instant Client page for more information.

Oracle Database Programming Interface for C (ODPI-C)

Oracle Database Programming Interface for C (ODPI-C) is a new open source library of C code that simplifies the use of common Oracle Call Interface features for Oracle Database drivers and user applications.

ODPI-C is a thin layer on top of Oracle Call Interface and requires Oracle client libraries.

Oracle C++ Call Interface (OCCI)

Based on the Standard C++ and object-oriented paradigm, OCCI is designed for improved productivity and quality in developing Oracle Database applications.

OCCI is being successfully used for client-server, middle-tier, and complex object modeling applications.

OCCI is the natural interface for accessing Oracle object-relational features like object types, inheritance, relationships and collections. Objects are represented as C++ class instances in OCCI leading to seamless integration between the application and database. The navigational access method with the client object cache provides complete database transparency.

The Oracle ODBC driver for Oracle Database enables ODBC applications to connect to Oracle Database. In addition to standard ODBC functions, users can leverage Oracle specific features for high performance data access.

The Oracle ODBC driver is an ODBC 3.52 compliant driver and is available as an easy to install Oracle Instant Client package.

При вычислении, то вызов интерфейс Oracle ( OCI ) состоит из набора Си -Language API , программного обеспечения , которые обеспечивают интерфейс к базе данных Oracle .

OCI предлагает процедурный API не только для выполнения определенных задач администрирования баз данных (таких как запуск и завершение работы системы), но и для использования PL / SQL или SQL для запроса, доступа и управления данными. Библиотека OCI, основанная на недокументированном пользовательском программном интерфейсе Oracle (UPI), действует как « интерпретатор » между приложениями и сетевым протоколом баз данных низкого уровня.

СОДЕРЖАНИЕ

История

Корпорация Oracle впервые выпустила OCI (под названием HLI, Host Language Interface) с Oracle Database версии 6 в 1988 году. Поскольку HLI (а впоследствии OCI) работал как оболочка для UPI, их первоначальные соглашения об именах очень напоминали те, которые использовались для вызовов UPI, которыми они были. основано на. Например, оператор отката : звонок upirol в UPI стал orol в OCI.

Позже, в Oracle8 (выпущенном в 1997 г.), вызовы OCI получили более описательные имена; orol стал OCITransRollback . Последующие улучшения были внесены в каждую версию OCI, включая 11g (выпущенную в 2007 году). Корпорация Oracle утверждает, что OCI «настолько надежен, что каждый оператор SQL в базе данных Oracle выполняется с OCI».

Реализации

OCI настолько популярен, что, помимо Oracle , несколько других поставщиков реализовали свои собственные библиотеки, совместимые с OCI API. На сегодняшний день существуют OCI-совместимые библиотеки для ANTs Data Server (ADS), EnterpriseDB и СУБД ЛИНТЕР SQL.

Библиотеки на основе OCI

Несколько библиотек основаны на OCI, в том числе:

Из-за сложности OCI API также существует несколько более простых в использовании библиотек-оболочек OCI, например:

  • библиотека libsqlora8 с открытым исходным кодом (устарела).
  • библиотека OCILIB с открытым исходным кодом .
  • Open BSD лицензированы библиотеку Oracle Template Library OTL.

Рекомендации

Внешние ссылки

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

OCCI - расшифровывается как Oracle C++ Call Interface и представляет собой специализированное апи для работы с СУБД Oracle используя C++ что в общем то явствует из названия. Для использования необходимо подключить заголовочный файл "occi.h".

Принятые именования объектов Environment* env;
Connection* conn;
Statement* stmt;
ResultSet* rs;
SQLException &sqlExcp;

Давайте рассмотрим пример небольшой тестовой программы использующей интерфейс OCCI:

Сборка программы для Linux, обратите внимание на пути к заголовочным файлам (-I) и библиотекам (-L)

  • OCI Shared Library (libociei.so on Solaris and oraociei10.dll on Windows); correct installation of this file determines if you are operating in Instant Client mode
  • Client Code Library (libclnstsh.so.10.1 on Solaris and oci.dll on Windows)
  • Security Library (libnnz10.so on Solaris and orannzsbb10.dll on Windows)
  • OCCI Library (libocci.so.10.1 on Solaris and oraocci10.dll on Windows)

Более подробную информацию можно получить здесь: Instant client.
Рассмотрим базовые объекты используемые программой.

Environment - предназначен для создания среды управления памятью и ресурсами для других объектов OCCI. Объекты создаются в рамках среды, программа может иметь несколько сред, среда может иметь несколько соединений(даже к разным базам) или пулов соединений. Доступные режимы создания

  • OBJECT - использование объектных расширений Oracle напрямую в программе на C++. Через специальную утилиту возможно подключение к базе и создание прототипов объектов хранящихся в базе прямо в виде классов C++. Например этот режим необходим для работы объекта Date из состава OCCI.
  • SHARED - данные разных запросов(курсоров) используются повторно, т.е. экономится память и время выполнения.
  • THREADED_MUTEXED - для использования разными потоками(в многопоточном приложении) без применения синхронизации - она обеспечивается автоматически для Environment, Map, ConnectionPool, Connection.
  • THREADED_UNMUTEXED - синхронизацию должно обеспечить приложение.
  • execute: Выполнить любой не специфичный запрос
  • executeUpdate: Выполнение DML и DDL
  • executeQuery: Запрос в базу, предполагает возвращение результата

Позволяет выполнять не только SQL-выражения но и PL/SQL(обрамленный BEGIN/END;)

ResultSet и Connection не рассматриваются, предлагаю обратиться к документации за информацией по этим объектам.

Работа с параметризованными запросами

Обычно запросы содержат переменные в своем составе, например в предложении WHERE. Для эффективной работы с такими запросами используются параметризованные запросы. Конечно, запрос может быть и не параметризованным - собираться программой динамически, а затем подаваться для создания Statement - однако это не самый легкий(применительно к С++) и что самое главное далеко не оптимальный подход.

Если вы разрабатываете приложения под Oracle то скорее всего в курсе некоторых вопросов повышения производительности приложений, одним из которых является применение связываемых переменных. Использование связываемых переменных уменьшает количество жестких разборов sql-выражений, снижает нагрузку на разделяемый пул и в итоге может значительно увеличить скорость работы. Аналогичная ситуация с многократным использованием курсора - уменьшается число мягких разборов и т.д. - речь сейчас не об этом. Должен добавить только что в случае если вы узнали о работе со связываемыми переменными из того, что я написал выше - скорее всего вам следует почитать Т. Кайта "Oracle для профессионалов", главу "Стратегии и средства настройки".

Вернемся к делу - параметризованный запрос это sql-выражение на месте переменных(не обязательно всех) стоят идентификаторы подставляемых значений - ":1", ":var", ":data1". Перед использованием их надо связать с конкретными величинами - это производится вызовом метода stmt->setXXX(setString, setInt, ….) . Для более скоростной обработки можно использовать stmt->setDataBuffer , отличие этого метода от setXXX в том что методы setXXX копируют содержимое источника в выделяемый OCCI буфер что может снизить производительность приложений при больших размерах источника данных. В противоположность setXXX setDataBuffer использует в качестве источника непосредственно переданный параметр, без выделения памяти и копирования. Если вы используете setXXX - сразу после вызова метода можно менять источник, что недопустимо при использовании setDataBuffer

Вот участок кода иллюстрирующий вышесказанное:

  • stmt->setAutoCommit(false); - для информации, чтобы не было автоматических фиксаций транзакций при каждом выполнении, по умолчанию стоит false.
  • Переменные в Statement* присваиваются по порядку следования в выражении. В случае если вы напишите, к примеру
    "Insert into test(field_1,field_2) values(:2,:1)" и прикрепите переменные используя
    setInt(1,10);
    setInt(2,20);
    переменная с именем :2 получит значение 10, c именем :1 - соответственно 20
  • Особое внимание следует уделить методу fromText - он очень полезен если в базу нужно ввести число, например типа unsigned long long - прямое присваивание в этом случае не возможно, удобно использовать метод fromText. Нужно помнить что он не срабатывает после того как к объекту применялся метод setNull() - сначала нужно инициализировать объект просто присвоив ему начальное значение. С типом Date аналогичная ситуация, кроме того env должен быть создан с параметром OBJECT. Также для работы метода требуется явное указание параметров nlsParam.
  • При присоединении данных переменной длины к повторно используемому курсору(например строк) выделяйте изначально достаточно места в буфере вызывая setString c параметром максимальной длины. Например:

Работа с переменными IN/OUT, OUT

Мы рассмотрели только переменные передаваемые в режиме IN, но OCCI позволяет работать с OUT & IN/OUT. Такие переменные актуальны в случае использования так называемых callable statemens - имеется виду вызов процедур и функций на PL/SQL.

Рассмотрим работу с такими запросами. Предположим, в базе имеется функция на PL/SQL, вот ее прототип:

Пример работы с ней:

  • Регистрировать параметры нужно указывая их максимальную длину
  • Устанавливать значения параметров IN/OUT после регистрации, иначе значение будет потеряно

Повышение производительности

Как упоминалось ранее для приложений, в которых скорость выполнения запросов является критичной можно использовать функцию setDataBuffer.

paramIndex Номер параметра buffer указатель на буфер с данными type Тип данных в буфере size Размер элемента в буфере length Текущая длина данных в текущей ячейке буфера ind Индикатор. Указывает когда данные пустые, в случае если -1 было вставлено NULL - значение, в случае вызова подпрограммы в запросе -1 указывает что возвращено NULL. rc Код возврата. Этот параметр неприменим к данным передаваемым методами Statement-a, но для данных возвращаемых из вызовов процедур возвращает параметро-зависимый код ошибки.

При инициализации данных используя setDataBuffer данные считываются последовательно из памяти, т.е. после каждой итерации(количество заранее указывается) происходит смещение указателя на адрес следующего элемента. Метод setDataBuffer можно использовать совместно с Statement* stmt->setXXX или без него. Рассмотрим оба варианта использования этого метода

Допустим, в базе создана таблица следующей вида:

Код выполняющий вставку в таблицу:

Важно понимать, что в данном случае объявление char vals[4][10] = ; нельзя заменить на char* vals[4] - и заполнить адреса произвольно, данные должны идти последовательно. Теперь рассмотрим тот же вариант, но когда все данные содержатся в массивах:

В использовании stmt->setMaxIterations(4); нет необходимости Подобным образом можно не только вставлять данные, но и извлекать их. Код из документации по OCCI иллюстрирующий это:

Заключение

В общем, это все что я хотел написать - надеюсь приведенные здесь примеры помогут вам быстро начать использование Oracle в ваших проектах на C++. OCCI очень простой и мощный интерфейс работы с Oracle. Здесь не затронуты вопросы использования BLOB, использование потоков Stream, объектное программирование и Object Type Translator (OTT), получение метаданных, разработка многопоточных приложений например используя ConnectionPool и т.д. По всем этим вопросам стоит обратиться к документации по Oracle - Oracle C++ Call Interface Programmer’s Guide ссылку на которую я приводил в начале статьи.

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