Error while compiling program with oci.h

I was developing small utility using C++ some time ago and used Visual Studio as IDE and compiler. I’ve included oci.h to connect to Oracle Database like this

#include <stdio.h>
#include «oci.h»

but got following errors

Error    C2371    ‘BOOLEAN’: redefinition; different basic types
Error    C2632    ‘char’ followed by ‘int’ is illegal
Warning    C4091    ‘typedef ‘: ignored on left of ‘unsigned char’ when no variable is declared
Error (active)    E0084    invalid combination of type specifiers

This is because oratypes.h and Wtypesbase.h (Wtypes.h) have conflict while defining type boolean. Problem was solved by adding «Wtypesbase.h» as first include like this

#include «Wtypesbase.h»
#include <stdio.h>
#include «oci.h»

GoldenGate 12.3: announcement, new features and installation

Oracle has release new version of GoldenGate 12.3 in 18 August. This is very long awaited version – it postponed 2 or 3 times because of some very important new features. See some useful links for GoldenGate 12.3:

Continue reading ‘GoldenGate 12.3: announcement, new features and installation’ »

Oracle BigData Lite VM introduction

imageVirtual Machine Oracle BigData Lite is vm created by Oracle for development and demo purposes of BigData (Cloudera) and Oracle technologies working together.

You can download BigData Lite VM from Oracle site. This vm includes following software (for vm version 4.4):

Continue reading ‘Oracle BigData Lite VM introduction’ »

Гарантированная процедура для снятия (kill) сессий в RAC

Участвуя в пилотных проектах и тестирую программный код, я часто натыкаюсь на задачу, когда нужно снять все сессии от какого-то одного пользователя. Процедуры, которые предоставляет Oracle работают, но не всегда удобны в применении, а в случае RAC они иногда и не работают вообще.

Для снятия сессий в Oracle используются две команды:

  • alter system kill session ‘SID, SERIAL#’
  • alter system disconnect session ‘SID, SERIAL#’

Первая из этих команд сродни «kill -15», т.е. на эту команду сессия может не отреагировать. Вторая команда больше похоже на «kill -9», т.е. убивает сессию безусловно. Я заметил, что, например, в случае выполнения команды с высокой параллельностью сессия не всегда убивается командой alter system kill session. В то же время alter system disconnect session  отрабатывает великолепно, но у нее нет режима снятия сессии, работающей на другом узле в кластере. Т.е. если мы подключились к кластеру через NODE1, то disconnect session не сможет снять сессию на NODE2.

Вторая, скорее не проблема, а неудобность — это то, что нельзя сразу снять все сессии от одного пользователя. Приходится писать цикл.

Для удобства я сделал пару процедур, облегчающих мне жизнь.

Continue reading ‘Гарантированная процедура для снятия (kill) сессий в RAC’ »

Oracle Enterprise Metadata Management (OEMM): обзор и инсталляция

Обзор

В последнее время необходимость управления метаданными становится очевидной задачей во все большем количестве крупных компаний. Почти все компоненты современных информационных технологий (CASE средства, ETL, хранилища данных, BI, EAI содержат метаданные. Эти метаданные распределены, часто дублируют друг друга, меняются со временем, зависят от используемой методологии и технологий, в которых они используются.

Особенно остро проблема управления метаданными встает в компаниях, использующих инструменты от разных вендоров. В этом случае отсутствует единое представление движения данных в компании. Что влечет за собой дублирование данных (разные команды не знаю об уже существующих в хранилище данных), сложность определения источника некачественных данных (причиной ошибки в отчете может быть как ошибка в BI, так и в ETL) и, как следствие, общее недоверие бизнес-пользователей к аналитике.

Oracle Enterprise Metadata Management (OMM) обеспечивает следующие возможности по управлению метаданными:

  • Data Governance
  • Аннотирование и комментирование метаданных
  • Сравнение, интеграцию и маппинг метаданных
  • Версионирование и управление конфигурацией
  • Управление жизненным циклом метаданных
  • Lineage и impact analysis

Continue reading ‘Oracle Enterprise Metadata Management (OEMM): обзор и инсталляция’ »

Презентация Oracle Database In-Memory

db12c_inmemory_cup Сижу в главном офисе Oracle на сходке Data Integration Software Community (OGG, ODI, EDQ, ODSI). А в соседней комнатке Ларри Эллисон готовится презентовать Oracle Database In-Memory. На входе в главный конференц-зал стоят охранники и, похоже, не пускают. Зато вот маркетинговый стаканчик себе зачетный взял (см. слева).

Трансляция будет доступна по следующей ссылке в 10:00 AM Pacific Time, в Москве это 21:00.

Oracle BI 11.1.1.7.1 и SampleApp V309R2

В открытом доступе появилась новая версия Oracle BI SampleApp — это набор демонстраций, призванных показать, что может быть реализовано на базе продуктов Oracle. В новой версии расширены демонстрации по интеграции с:

  • Spatial
  • Enterprise R
  • Endeca
  • Oracle 12c
  • Oracle Text
  • Oracle Data Mining

Публичная демка доступна по адресу http://slc02okm.oracle.com:7780/analytics/saw.dll?bieehome&startPage=1

Логин: Prodney/Admin123

Кому хочется развернуть у себя качайте виртуальную машину вот здесь: http://www.oracle.com/technetwork/middleware/bi-foundation/obiee-samples-167534.html

Некоторые особенности работы с Oracle GoldenGate в режиме downstream

У меня в последнее время было уже 3 крупных и весьма успешных проекта, где GoldenGate Capture настраивали в режиме Integrated Downstream. Этот режиме уникален для GoldenGate и принципиально не может быть реализован в других продуктах (Attunity, SharePlex, Informatica и т.д.), поскольку требует использования XStream, который лицензируется как часть GoldenGate.

Его особенности в том, что (я буду иллюстрировать с помощью рисунка для Standby, но для Downstream все практически также):

  • нагрузка на источник нулевая. Ресурсы тратятся только на пересылку потока журналов). При этом, если мы настраиваем режим LGWR+ASYNC (а так обычно и делается), то пересылкой журналов занимаются процессы LNSn, которыхМенжинская может быть несколько.
    lgwrasync
  • В то же время обеспечивается real-time захват изменений данных. Как можно видеть из рисунка выше передачу журналов обеспечивают процессы LNSn, которые не ждут переключения журнала, а шлют их в потоковом режиме. На Downstream базе их принимает RFS и пишет в Standby Redo Log File (на Downstream они тоже называются Standby Redo).
  • захват изменений осуществляет с помощью XStream, который великолепно масштабируется (для баз с нагрузкой около 500 Гб журналов в час это означает принципиальную возможность репликации, а для ненагруженных это значит, что имеется большая свобода действий)
  • поддерживаются все часто используемые типы данных
  • интеграция с Data Guard. Если будет выполнено переключение на резервный сервер, то GoldenGate продолжит корректно работать

В то же время этот режим имеет и ряд особенностей, о которых мне задают вопросы что делать, если:

  • база данных источника использует старую версию СУБД (10.1, 10.2, 11.1)? 
  • downstream-базе лежала в течение некоторого времени и за это время журналы базы данных источника успели прокрутиться, а иногда даже уехать на ленту?
  • downstream-база умерла и ее невозможно восстановить

Я не буду в этой статье рассказывать о начальной настройке — это уже было сделано в статье Новые возможности GoldenGate 11.2: режим Downstream. Итак, начнем.

Continue reading ‘Некоторые особенности работы с Oracle GoldenGate в режиме downstream’ »

Используем Real-Time Cascade Standby Databases 12c для GoldenGate

real-time cascade ggМне часто задают вопросы о том, как при репликации полностью изолировать нагрузку GoldenGate от СУБД источника. Если честно, то чаще всего это не требуется, потому что

  • GoldenGate «съедает» очень небольшую часть ресурсов источника (обычно укладываемся в 3-5% ресурсов CPU).
  • Есть режим ALO, когда парсинг архивных журналов СУБД осуществляется на отдельном сервере, но даже в этом режиме не обеспечивается online-репликация (задержка зависит от частоты переключения журналов)

Но вопрос все равно существует, и вот в Oracle 12c я могу сказать: «Да! Теперь это возможно!». Имя этой технологии — Real-Time Cascading. Обычно она используется для Real-Time Cascading Standby, но отлично работает и для GoldenGate.

Continue reading ‘Используем Real-Time Cascade Standby Databases 12c для GoldenGate’ »

Oracle GoldenGate 12c: новый тип Replicat — Coordinated

coordЯ уже писал о том, что если у вас GoldenGate 12c, а целевая СУБД Oracle 11.2.0.4 или более новая, то можно использовать Integrated Replicat, который обладает рядом преимуществ по сравнению с Classic Replicat. Ключевое преимущество, конечно, это простота настройки репликации в системах с большой нагрузкой. Но что делать тем, у кого версия СУБД Oracle не соответствует указанным или тем, у кого вообще нет Oracle, а есть какой-нибудь DB2 или Sybase? Для этой категории пользователей Oracle также приготовил подарок — Coordinated Replicat.

Итак, чем же отличается Coordinated Replicat от об Classic Replicat? Давайте посмотрим на архитектуру

Continue reading ‘Oracle GoldenGate 12c: новый тип Replicat — Coordinated’ »