11g - информация для Вашего руководства

Если Вы захотите склонить свое начальство или начальство Ваших заказчиков к миграции на 11g Вам понадобятся красивые картинки с ответом на вопрос - чем же 11g лучше, чем 10g и 9i ?


Не хочу вдаваться в техническую дискуссию - картинки для Большого начальства. Красивые. Подробностей их получения у меня нет. Однако, такие вещи публикуют только после тестов, это точно.

Вы найдете еще красивые слайды в презентации Andrew Mendelsohn, Senior Vice President Database Server Technologies. Также Вам могут пригодиться высказывания заказчиков про 11g (англ.)


Читать дальше...

ASM - to be or not to be ?

Про ASM я уже писал несколько раз. Однако эта тема беспокоит людей, мы получаем много вопросов - следует использовать ASM или нет.

В книге Oracle Automatic Storage Management Bill Bridge пишет, что идея ASM возникла у него в 1996 году, когда он работал в проекте по внедрению Oracle Video Server. У них возникли проблемы с производительностью, из за того, что часть дисков оказалась перегружена, а часть простаивала. Тогда, идея, чтобы БД сама автоматически распределяла экстенты между всеми дисками показалась ему отличной.

В 1996 году еще не было Linux LVM (так думает википедея), SUN Microsystems еще не раздавала Solaris Volume Manager, а Windows еще не умела зеркалировать диски (так думаю я).

С тех пор, ОС сделали большой шаг вперед, и многие содержат встроенные средства зеркалирования и балансировки нагрузки между дисками. Но каждая ОС обладает своим особенным volume manager, а значит его нужно изучать.

ASM дает нам возможность использовать кросс-платформенное средство хранения наших файлов Oracle (данные, redo, archive log, control, backup. Все кроме binaries). А значит, время вложенное в ASM для администратора не пропадет, при изменении платформы.


Если функции зеркалирования и балансировки нагрузки выполняет Ваш умный дисковый массив, стоит ли Вам использовать ASM ? Стоит, но разумно. Стоит поручить массиву работу, которую он выполнить лучше чем софтверное решение, и при этом не потребит CPU вашего сервера БД. Т.е. в ASM нужно выдать 1 lun и создать на нем одну группу external redundancy для данных (возможно еще одну для FRA). Почему все таки не создать на этом lun обычную файловую систему ? Как видно из картинки, ASM минует несколько уровней системных вызовов, а поэтому окажется эффективнее. По производительности ASM приближается к производительности сырых (raw) устройств.

Когда стоит не использовать ASM ? Если у Вас куплен, например, Veritas Storage Foundation, Oracle Disk Manager, у Вас всегда используется только одна ОС, накоплен многолетний опыт работы с Veritas, очень серьезная по нагрузке БД - я бы рекомендовал продолжить работать с Veritas. Там есть некоторые приятные возможности по работе с группами, которых нет в ASM. Хочу уточнить, что ASM бесплатен, в отличии от весьма серьезных затрат на лицензии Veritas.

Еще один аргумент в защиту ASM - если ваша single instance уже использует ASM, то переход в RAC или на Exadata для Вас будет значительно облегчен.

Можно построить даже extended cluster используя ASM, а не покупая дорогостоящих дисковых подсистем с опциями синхронизации между площадками.

Если вы добавите диск в конфигурацию дисковой группы, ASM произведет перераспределение нагрузки между дисками. При этом, вы можете указать степень влияния процесса перераспределения на существующую систему. Насколько я принимаю, делать такое в ONLINE умеют только аппаратные массивы класса midrange и выше.

Несколько фактов использования ASM (Статистика основана на нашей внутренней информации. Пользователи могу использовать или не использовать ASM не уведомляя Oracle):

  • В промышленной эксплуатации с 2004 года
  • 65% инсталляций RAC используют ASM
  • 25% исталляций 10g используют ASM

Много VLDB баз данных объемом до 10TB используют ASM.

Примеры серьезных инсталляций:
  • Sprint - 300 TB data
  • Amazon – 150 TB data


Здесь вы найдете массу технических деталей по ASM.

Ребята из CERN озаботились, а вдруг что-то случиться с заголовками дисков, где ASM хранит свою конфигурацию и надо будет достать данные. И разобрались, что к чему.


Читать дальше...

Redo Transport Compression for Data Guard ASYNC

Как Вы знаете, в 11g осуществляется компрессия redo при передаче на standby, но только во время преодоления отставания (gap resolution). Понятно, что хочется компрессировать redo при передаче и в нормальном режиме, чтобы не допустить этого самого отставания (gap)

Появилась замечательная Note:729551.1: Redo Transport Compression in a Data Guard Environment.


Для того, чтобы включить компрессию нужно установить атрибут в log_archive_dest_x

LOG_ARCHIVE_DEST_2='SERVICE=stdb ASYNC COMPRESSION=ENABLE DB_UNIQUE_NAME=stdb'

и установить параметр:
_REDO_TRANSPORT_COMPRESS_ALL=TRUE


Если используется Data Guard Broker то можно указать такой синтаксис
DGMGRL> EDIT DATABASE 'boston' SET PROPERTY 'RedoCompression' = ENABLE;

(параметр _REDO_TRANSPORT_COMPRESS_ALL должен быть установлен)


Хочу обратить Ваше внимание, что согласно ноте, это работает только для асинхронного режима
(asynchronous redo transport mode)

Также в ноте, есть любопытное замечание - что указание атрибута MAX_CONNECTIONS не дает преимуществ после включения компрессии при передачи redo.


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


Читать дальше...

Совместный семинар Oracle и RDTEX

28 ноября Oracle Сonsulting и компания РДТЕХ проводят совместный семинар
"Миграция на новую версию СУБД Oracle. Методика и опыт реализации в многофилиальных
компаниях".

Семинар ориентирован на руководителей IT-подразделений крупных холдингов и компаний,
имеющих филиальную сеть.

Регистрация на сайте РДТЕХ: http://www.rdtex.ru/win/root/event20081128.html


Читать дальше...

Exadata Storage Server, part 2

Exadata Storage Server, part 1 .

Наверное, самое интересное техническим специалистам, а как именно происходит фильтрация данных, как именно Exadata возвращает меньше данных, чем обычный дисковый массив ?

В английской терминологии этот процесс еще называют Predicate Offload или Smart Scan.

Оптимизатор может использовать режим обращения Predicate Offload только, если запрос использует Direct Read Full table scan и таблица расположена на дисковой группе, которая состоит из дисков Exadata. Обычно, Direct Read производиться, используя Parallel Query. В Parallel Query один процесс выполняет роль координатора, другие (PQ slaves) выполняют собственно чтение. PQ slave, определяет фильтр и набор за писей, который ему нужно прочитать. Если это возможно, вместо кода чтения direct path вызывается код взаимодействия с Exadata (речь идет о kernel code path). Этот код, с помощью ASM, переводит имена сегментов в диски, смещения, необходимый объем для чтения. Дальше открывается специальный поток, в котором эти данные передаются на Exadata. (если у нас несколько cell, это также легко определить с помощью метаданных ASM. Таким образом правильный набор команд посылается нужному cell)

Процесс CELLSRV на стороне Exadata, получает поток команд на чтение и необходимый фильтр. Далее с помощью библиотеки из состава ядра Oracle он выполняет необходимую фильтрацию и возвращает результат. Результат - это только необходимые нам записи и колонки. Я где-то прочитал, что на самом деле это блоки БД, которые содержат только нужные данные, но не подтвердить, не опровегнуть этого утверждения не могу.

На самом деле, процесс конечно более сложный, там целый протокол общения - iDB (Intelligent Database protocol). Из документов следует, что iDB работает через Reliable Datagram Sockets (RDSv3), не могу не процитировать "extremely fast low-latency protocol".

Что следует из вышеприведенного текста. Ячейкам Exadata (cell) нет необходимости общаться между собой в момент выполнения запроса. Каждая ячейка получает нужную ей команду.

Поскольку речь идет о Direct Path Read, нет проблемы c read consistency. Перед началом Direct Path Read всегда выполняется tablespace checkpoint object-checkpoint, т.е. сброс грязных блоков этого объекта.

Выполнение Join. Exadata не выполняет Join. Их по прежнему выполняет сервер СУБД. Но если идет связка очень большой и очень маленькой таблицы, почему бы не подсказать Exadata некоторые ключи для фильтрации ? :)

Презентация с OpenWorld утверждает, что Smart Scan умеет обрабатывать:

  • Uncommitted data and locked rows
  • Chained rows
  • Compressed tables
  • National Language Processing
  • Date arithmetic
  • Regular expression searches
  • Partitioned tables
А также:
  • Star join filtering is performed within Exadata storage cells
  • Dimension table predicates are transformed into filters that are applied to scan of fact table

Последнее утверждение совпадает с тем, что я написал чуть выше про Join.

Наконец еще несколько деталей. Я приводил график, из которого следует, что сильно ускоряется например tablespace creation. Можно предположить, что с сервера СУБД просто идет команда Exadata на разметку определенного дискового пространтсва, что конечно быстрее чем форматировать каждый блок .

Конечно, у Вас могут одновременно существовать дисковые группы ASM и на обычном массиве и на Exadata. Ограничение - в составе одной группы могут быть только диски одного типа (либо Exadata grid disk, либо обычнные). Но я пока не знаю, можно ли выполнять smart scan по таблице, чьи партиции лежат на разного типа группах ? Подозреваю, что нет.


Продолжение следует... Поговорим о миграции и стоимости. А пока, расскажите об этом блоге своему директору :))))))


Читать дальше...

Exadata Storage Server, part 1

Как я писал, на Open World было объявлено о Database Machine и Exadata Storage Server. Данная заметка, первая из серии, об Exadata.
Отмазка:
Сразу оговорюсь - моя цель написать максимально доступно, а значит, не всегда абсолютно технически верно. Также я сделал массу предположений, которые могут оказаться неправильными.

Благодаря служебному положению, у меня есть доступ к Exadata Storage Software, я потихоньку разбираюсь, как оно все работает.



Идея:
В хранилищах данных при обработке запросов между дисковым массивом и сервером СУБД передается слишком много данных. Даже если мы делаем выборку по определенному региону, нам нужно передать информацию блоками данных (8K или даже 16K) в которых нам полезными могут оказаться 100 или 200 байт. Все эти блоки данных нужно передать через SAN маршрутизаторы, SAN адаптеры, выделить под них память с ОС, отфильтровать не нужные нам записи и колонки. Что если уже на выходе дискового массива к нам придут только нужные записи и колонки ? Было бы неплохо. Но для этого дисковый массив должен знать структуру блока и немного понимать SQL.

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

Реализация:
Аппаратная реализация - мы собираем наш дисковый массив (storage server) из ячеек (cell), в каждой ячейке HP ProLiant DL180 G5, 12 дисков, 2 - 4-x ядерных процессора. Используя SAS диски, получаем 1.5 Tb, SATA - 3,3 Tb. В каждой ячейке 2 InfiniBand порта.



Программная реализация - Oracle Unbkreakable Linux + Oracle Exadata Storage Software. Последнее - это не ASM и не Database. Это некоторое новое ПО. Ниже я попытаюсь пояснить, что оно делает.

Раз Exadata - это дисковый массив, значит его нужно подключить к нашему серверу БД.
На сервере БД у нас есть ASM. Значит ASM должен увидеть нашу Exadata как внешний storage. Чтобы ASM увидел, мы создаем пару конфигурационных файлов в /etc/oracle/network/cell директории. А раз возникает новая функциональность, то поддерживается она только начиная с версии 11.1.0.7.

По пржнему, ASM выполняет всю свою работу - поддержание striping, mirroring, rebalancing и пр. БД выполняет свою - разбор SQL выражений, и определение, нельзя ли попросить storage выполнить ту или иную часть SQL запроса. Чтобы стало совершенно понятно, где что стоит, привожу картинку.



Обратите внимание на специальный уровень libcell & процесс diskmon.

Так что же умеет Oracle Exadata Storage Software ?

По крайне мере 3 вещи:

  • Зная структуру блока, обеспечивает фильтрацию данных и возвращение результата используя протокол iDB. Я думаю, что Exadata умеет фильтровать не сложные условия. Например если в условие влючить pl/sql функцию, то Exadata может вернуть данные, основвывая только на других предикатах, а окончательная фильтрация будет осуществляться на стороне сервера БД
  • Управление правами доступа между серверами БД и управление нагрузкой.
  • Реализует проверку блоков БД при вводе - выводе ( HARD инициатива)

Что же мы видим со стороны сервера БД ?

Вот такой план выполнения со словами TABLE ACCESS STORAGE FULL.


TTDEMO@orcl > select count(*) from cell_accounts;

COUNT(*)
----------
1000000

TTDEMO@orcl > select plan_table_output from table(dbms_xplan.display_cursor(null,null,'BASIC ROWS +NOTE +COST +PEEKED_BINDS'));

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
EXPLAINED SQL STATEMENT:
------------------------
select count(*) from cell_accounts

Plan hash value: 3481329747

-------------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)|
-------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | 1504 (100)|
| 1 | SORT AGGREGATE | | 1 | |

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
| 2 | TABLE ACCESS STORAGE FULL| CELL_ACCOUNTS | 808K| 1504 (1)|
-------------------------------------------------------------------------


FAQ:

Q. Поддерживает ли Exadata Advanced Compression ?
A. Поскольку компрессия работает на уровне блока, для того, чтобы посмотреть в блок ничего не надо, достаточно знать как блок устроен. Поэтому, да.

Q. Поддерживает ли Exadata Advanced Security ?
A. Для того, чтобы расшифровать блок, нужно знать ключ. Пока нет описанного метода передачи ключей между серверов БД и Exadata. Поэтому, скорее, нет.


Q. Нужно ли модифицировать приложение, чтобы оно использовало Exadata Storage ?
A. Нет. Любое существующее приложение будет работать с Exadata как с обычным массивом. Для приложения существуют лишь таблицы, расположенные в табличных пространтсвах на группах ASM. Но приложение может получить прирост производительности, если выполняет тяжелые запросы к БД.

Благодарности: Андрею Пивоварову (Andrey.Pivovarov, oraclebi.ru) за мозговой штурм в части как-оно-там-работает-на-самом-деле.

Ссылки:
exadata-technical-whitepaper.pdf (объект «application/pdf»)
Kevin Closson blog

Осталась масса вопросов - какие приложения получат выигрыш, какие нет, как мигрировать, как смотреть планы и так далее.
Продолжение следует...


Читать дальше...

DBOD-2

UPDATE 4. Мы начали рассылку приглашений. Если Вы были в листе ожиданий, возможно Вы получите приглашение 2 раза, это нормально. Регистрироваться 2 раза не нужно :). Письма с подтверждением или отказом в регистрации придут от моего имени (Dmitry.Volkov@оракл.ком). Все это связано с временными (я надеюсь) проблемами с нашей системой регистрации. Надеюсь на Ваше понимание.

UPDATE 3 . Регистрация открыта !

Следующий семинар Database Options Details будет проходить 4-5 декабря в Москве.
Мероприятие будет открытым - и для партнёров и для заказчиков. Адрес мероприятия - Москва, Шлюзовая наб., дом 6, отель Катерина-Сити,этаж 8, зал «Нобель»

Приглашение на семинар. Ссылка на программу.
Правила регистрации. Регистрация.

Если у Вас есть проблемы с регистрацией, обращайтесь пожалуйста к Юлии Ивановой (julia.ivanova)


Основные изменения по сравнению с предыдущим событием:

  • Новая фотография двигателя Конкорд.
  • Событие стало 2-х дневным. Мы добавляем Spatial, Security, OLAP, Exadata (!)
  • Мы улучшили контент благодаря замечаниям слушателей первой версии.
  • Большее число спикеров - 8 (!) человек.

Мы скоро откроем регистрацию - пожалуйста следите за этим сообщением.
Как и первая версия, вторая будет бесплатной. Если Вы хотите гарантировать себе место на этом событии, у Вас есть две возможности:

  1. Написать мне письмо, почему именно Вы должны попасть на событие: рассказать о каких-то существующих или планируемых проектов с 11g.
  2. Попасть на событие в качестве спикера. Темы - Ваш опыт использования опций в 11g/10g, опыт миграции на 11g. Присылайте тезисы доклада - договоримся.

PS
Спикеры с наших предыдущих событий получают место автоматически на все следующие события.


Читать дальше...

duplicate <..> for standby from active database

Я был совершенно уверен, что копирования БД через сеть идет в один поток. И был совершенно не прав. Так бывает, что запоминаешь информацию, и забываешь откуда ее услышал :(

Наш эксперт HA Вадим Гусев (Vadim.Gousev) убедительно показал мне, что это не так.
Действительно, после команды

rman target / auxiliary sys/oracle@stdb.ru.oracle.com

появляется одно соединение, а после выполнения

configure device type disk parallelism 2;
run {

duplicate target database for standby from active database;
}

их открывается 2. За сетевыми соединениями я следил с помощью команды

lsof -i | grep oracle | grep stdb

На standby появляются 2 сессии ожидающие передачи по сети.

select MACHINE, sid, serial#, WAIT_CLASS, WAIT_TIME from v$session;

dbsrv 139 4 Network 0
dbsrv 140 3 Network 0


Вот и строй после этого людям стенды. А они тебя еще и научат за это :))))))))))))))))))


Читать дальше...

Oracle and Flash Drive

Ребята из EMC выложили интересный ролик про их технологию Flash Drive. Обещают ускорение OLTP приложений в 30 раз.

К ролику прилагается более сдержанная в оценках white paper. Ответ Intel.

PS
Мне лично показалось интересным тот факт, что ролик выложен на YouTube. С одной стороны, такая информация должна появляться на официальном сайте. С другой стороны, если люди привыкли выкладывать свои "домашние" ролики на YouTube, почему не взять камеру и не записать 8 минутный ролик? Мне кажется будет потихоньку происходить размытие между корпоративным консерватизмом и реально удобными сервисами. Мы кстати, тоже имеем возможность записать какие-то части презентаций и выложить их на YouTube. Будет это интересно ?


Читать дальше...

Oracle Extended RAC Cluster on Oracle VM

Невероятной силы статья как собрать и протестировать Extended Cluster в домашних условиях:
Build Your Own Oracle Extended RAC Cluster on Oracle VM and Oracle Enterprise Linux

После такого собрать кластер может даже школьник. Написал ее кстати, если я правильно понял, аспирант :)

Единственное, что я не понял - как он вводит задержку, для эмуляции собсвенно расстояния. Этот момент описан, просто он остался пока мне непонятен. Буду благарен, если в комментариях появится ответ.


Читать дальше...

Spatial на русском

Александр Рындин (Alexander.Ryndin, Oracle CIS) начал вести блог по Spatial на русском языке.

Не расстрайивайтесь, если не сразу все поймете. Я вот, например полностью понял только пост про установку Linux, и то, потому, что там картинок много :))))))))

Spatial - серьезная тема....

Не пропустите мега-пост как скрестить Spatial и BI!

Александр будет выступать на семинаре Database Option Details, 4-5 декабря.


Читать дальше...

RAT perfomance overhead

И White Papers, и наша wiki считают, что performance overhead при использовании RAT, цитата - "обычно менее 5%". Давайте посмотрим, что это за магическое число и что имеется в виду под perfomance overhead.

Для того, чтобы разобраться как работает захват (Capture) рекомендую прочитать патент на RAT DATABASE WORKLOAD CAPTURE AND REPLAY ARCHITECTURE. Оказалось, что его читать интереснее, чем документацию.

Несомненно, рекомендуют прочитать в оригинале, вот несколько цитат из него:

"
Capture processes <..> may be implemented as separate concurrently executing processes or as concurrently executing threads of the same process, for example. <..> Capture processes <..> capture all workload that production database server receives from external entities
"
"
Data stored in these in-memory buffers is compressed and written out in batches to persistent storage
"
"
When executed, SQL SELECT statements may cause production database server to return <..> values that satisfy the criteria specified in the statements. <..> the captured workload includes selected values that are returned as a result of the execution of SQL SELECT statements.
"

OS - Linux dbsrv 2.6.18-53.1.13.9.1.el5xen
Hardware - HP Compaq 8510w
Oracle 11g (11.1.0.7)


Для начала несколько тестов. чтобы набрать фактов для дальнейших размышлений.

drop table t1;
create table t1 (
id number(10),
small_vc varchar2(10),
padding varchar2(1000)
)
;

create unique index t1_pk on t1(id);


Тест N1
1 сессия, commit вне цикла, один курсор

set timi on set time on begin for i in 1..100000 loop insert into t1 values(i, lpad(i,10), rpad('x',1000)); end loop; commit; end; /

160K данных в директории Capture. Разницу в производительности с включенным capture & выключенным я измерить не смог. Таким образом этот случай укладывается в выше приведённые 5 %.


Тест N2
commit в цикле, sql выражения генерим случайным образом (execute immediate). Объем директории с данными Capture вырос до 6 Mb (для сравнения, объем файла trc после включения event 10046 составляет 90 Mb). Вы видете, что объем захваченной информации вырос в 30 раз. На одной сессии я опять таки не смог измерить разницу в производительности. конкретной сессии.

declare random_str varchar2(500); sql_stmt varchar(1000); begin for i in 1..200000 loop select dbms_random.string('U', 10) into random_str from dual; sql_stmt := 'insert into t1 (id, small_vc, padding) values(' || to_char (i)|| ', lpad(' || to_char(i)|| ',10),'|| chr(39)|| random_str ||chr(39) ||' )'; execute immediate sql_stmt; commit; end loop; end; /

OK, теперь самое время понять, как это работает. Для начала, как работает захват нагрузки. < href="http://download.oracle.com/docs/cd/B28359_01/server.111/e12253/toc.htm">Oracle® Database Real Application Testing User's Guide прочитан, но ничего про процесс(ы) захвата нет. В init.ora ничего подобного нет. А сколько их нужно, чтобы сохранить нагрузку от 100 сессий ? А от 1000 ?

Решение приходит внезапно просто:

Я запускаю нагрузку, в top нахожу процесс пользователя oracle который генерит у меня > 90% загрузки процессора, далее запускаю команду lsof (list of open files)

/usr/sbin/lsof -p 7814

oracle 7814 oracle 10u REG 253,0 3801088 2251233 /tmp/wc/inst1/aa/wcr_4k57tan0027n6.rec

Среди вывода я вижу явно файл с записанной нагрузкой ! Конечно же, самой сессии проще всего записать свою нагрузку ! Дополнительным фактом может быть сообщение "not all sessions could flush their capture buffers" в alert.log

Итак, каждая сессия сама накапливает данные в буфере и сбрасывает его на диск. Размер буфера в памяти - согласно источнику внизу - 64K, по моим тестам, это - 128K. Именно на столько больше требовалось сессиям с включенным режимом захвата нагрузки.

Хочу отметит, что Механиз Capture не мешает работать трассировке. Т.е. Вы легко можете одновременно влючить в сессии трассировку и производить захват. Трассировка также будет производиться. Конечно, в реальной жизни так делать не стоит.

Теперь выводы:

0. Объем захватываемой информации прямо пропорционален тому, насколько правильно написано приложение.

1. Если у Вас правильно написанная OLTP система (использует bind переменные), не делает commit слишком часто, нет проблем с вводом выводом, вы правильно расположите директорию для захваченных данных на отдельном диске, у вас достаточно свободного CPU, вы будете захватывать не все подряд, а тщательно настроите фильтры - вы вполне можете получить потери производительности для приложения < 5%.

2. Все изменения в БД должны будут попасть теперь кроме redo logs еще и в захваченную нагрузку. Например, я 1024 раза вставил в таблицу случайную строку длиной 1024 байта и получил в файлах захваченной нагрузки 1 Mb информации. Если у Вас система DW , загружающая информацию 10-ками гигабайт - вся эта информация будет еще раз записана на диск. Возможно, хорошая идея до захвата информации оценить ее объем, произведя mining redo, отобрав скажем нужные записи по пользователю. Ни о каких 5% тут конечно речь идти не будет. Удвоение ввода вывода окажется для вас гораздо дороже.

5. Несмотря на то, что в патенте прямо говориться об этом, мне не удалось увидеть, что capture собирает все полученные значения результата select'а. Скорее всего собирается лишь контрольная сумма, чтобы сказать совпадает результат запроса или нет. Т.е. для систем отчетности, которые делают большие сложные запросы и возможно возвращают на клиента большой result set Capture не будет представлять серьёзной опасности - объем собираемой информации относительно мал по сравнению с result set.

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




PS Вся информация получена из открытых источников. Хочу поблагодарить Марка Ривкина, за то, что он обратил мое внимание на цифру 5%.


Читать дальше...

Oracle TechForum-2008, 5 ноября 2008, материалы

UPDATE 1. Опубликованы ссылки на репортаж cnews о форуме и ссылки на материалы технологических классов TimesTen & DataIntegrator.

В данном сообщении опубликованы материалы Oracle TechForum-2008, касающиеся
тематики Oracle Database & Options.






По традиции, публикую некоторые вопросы, которые были нам заданы и ответы на них:

Q. Каков процент пользователей используют сейчас 11g ?
A. Едиственная статистика, которая нам доступна, это кол-во открытых SR на metalink. По ней 11g уже победила 8i, и старается догнать 9i. 10g, конечно, пока вне конкуренции. В Европе уже есть 11gRAC в production.

Q. В Чем отличие между OEL & RHEL ?
A. Отличия нет, версия ядра таже самая. Но используя OEL и купив поддержку, вы можете проводить обновления ОС с сервера обновлений Oracle. Что может оказаться очень полезно, особенно если у Вас промышленная БД. Конечно эти update будут включены в RHEL, но позже.

Q. Можно ли будет использовать опции, такие как Advanced Compression или TDE в случае использования Exadata ?
A. Мы специально не рассказывали про Exadata, поскольку не пробовали ее вживую. Из документов пока известно, что цитата "With Exadata, all database features and tools work just as they do with traditional non-Exadata storage". Я буду изучать этот вопрос.


Читать дальше...

Oracle TechForum-2008, 5 ноября 2008

UPDATE. Подтверждения регистрации на технические классы и на параллельные сессии были высланы 30 октября. Пожалуйста проверьте свою почту и настройки вашего спам-фильтра.

Пожалуйста не пропустите описание секции Database & Options, ссылку на регистрацию, описание технологических классов и многое другое в этом сообщении ниже !



Пожалуйста, не пропустите 5 ноября 2008 года и наш TechForum-2008 ! Некоторые подробности также приводит cnews.



Могу поделиться, что на секции "Oracle Database 11g - что там внутри" будет, как всегда, неожиданное вступительное слова Сергея Данилова, интересные выступления заказчиков, Active Data Guard, Real Application Testing (см. детали ниже).

Игорь Мельников покажет невероятный пример совместного использования наших опций, я попробую вставить свои 5 копеек в защиту CBO. Наши с Игорем выступления начнутся после 17 часов, так что пожалуйста, запасайтесь бутербродами. Контента у нас много.

И конечно же, не пропустите выступления Сергея Иванович Томина - это будет круто ! Потому, что это всегда круто ! :)

Я чуть не забыл, что также будут демонстрации возможностей нашей Database 11.1.0.7 !
Приходите.

Update 1. Ссылка на программу. Благодаря опечатке, в этой программе я выступаю 4 раза. Это шутка конечно же. Я надеюсь, что google проиндексирует эту страницу и я смогу ее показывать вместо резюме :))))))

Update 2. Ссылка на регистрацию.

Update 3. Дополненения к программе

Database and Options – что там внутри?

Для того, чтобы в реальных проектах успешно использовать все возможности баз данных Oracle, необходимо обладать максимально полной технической информацией о том, как работают опции сервера баз данных. В рамках сессии «Database and Options – что там внутри?» мы постараемся показать новые опции Oracle 11g со всех 360 градусов.

В рамках сессии будут в деталях рассмотрены такие опции, как Active Data Guard, Advanced Compression, Partitioning, RAC, Total Recall и другие. Вы увидите живые демонстрации работы Database Options 11g, которые будут производиться на виртуальной машине Oracle VM. Кроме этого, Вы сможете задать любые вопросы нашим техническим специалистам, познакомиться и завести контакты.

Сергей Томин. Эволюция! Эволюция! Эволюция!

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

Владимир Гусев: Active Data Guard

Active Data Guard – простое, высокопроизводительное решение, которое хранит актуальную копию производственной БД для перенаправления интенсивных запросов, отчетов и резервных копий с производственной базы данных на резервную.


Марк Ривкин: Real Application Testing: Снижение рисков при миграции со старых версий СУБД Oracle

Опция RAT позволяет оценить влияние различных изменений (в HW, OS, настройках Oracle, cтруктуре данных) на работу производственной системы еще до того, как эти изменения будут в нее внесены. Особенно это актуально для оценки влияния миграции на новые версии СУБД Oracle. Теперь можно заранее узнать не появятся ли новые ошибки после миграции, как изменится производительность системы и отдельных запросов после миграции. Можно выявить и заранее настроить ухудшившиеся после миграции SQL предложения

Выступление заказчика: Опыт использования Real Application Clusters

Технология Real Application Clusters позволяет запустить приложения на двух или более компьютерах одновременно, распараллелив нагрузку между ними. На этой сессии наш заказчик поделится с Вами опытом обеспечения высокой доступности бизнес-критичной системы при помощи этой технологии. Вы узнаете как внедрив RAC удалось получить отказоустойчивое решение, при этом оставив производительность в допустимых пределах и чтобы одновременно конечные пользователи ничего не заметили!

Выступление заказчика: Опыт использования Enterprise Manager Grid Control

Enterprise Manager Grid Control является централизованным, интегрированным средством управления экосистемой Oracle из окна web-навигатора. На этой сессии Вы получите информацию из первых рук о том, как удалось решить ряд задач управляемости больших корпоративных систем с помощью функциональности Grid Control. Заказчик приведет несколько реальных примеров использования Tuning Pack, Diagnostics Pack, Configuration Management Pack, Provisioning Pack и Data Masking Pack для решения своих бизнес задач.

Игорь Мельников:Оркестр опций Oracle Database 11g

Наши заказчики уже много слышали Oracle Database Options. Но чаще всего, в работе над проектами, стараются ограничиться лишь одной из них, считая задачу взаимодействия разных опций слишком сложной. В данной презентации Вы познакомитесь на реальном примере с одновременным использованием опций Partitioning, Advanced Compression и Transparent Data Encryption для достижения максимальной производительности и защищенности данных в Oracle Database.

Дмитрий Волков: Oracle Database 11g для профессионалов
Основные проблемы при миграции БД возникают с планами выполнения запросов. То, что отлаживалось не один месяц, может перестать работать в один момент в результате миграции. Именно это, на наш взгляд, часто является барьером к проведению миграции. Механизмы стабилизации планов 11g помогут Вам избежать этой проблемы. Оптимизатор в 11g также обладает расширенными возможностями по генерации оптимальных планов, а также предоставляет новые возможности по управлению статистикой оптимизатора.

Update 4. Описание технологических классов и регистрация на них !


Читать дальше...

RAC DD4D 22-23 октября, Москва, гостиница Катерина

Наш семинар RAC DD4D завершился сегодня. Программа семинара. Материалы семинара (только для слушателей, архиватор winrar 3.80 for windows, размер архива 23 Mb).

На фотографии - 2 Сергея Данилова, с разницей в 5 лет, 2 версии Oracle Database и 1 зуб мурости, но все с той же темой доклада - Oracle RAC.

Еще несколько фотографий (ч/б). Все фотографии (только для участников семинара, 25 Mb, Winrar 3.80 for Windows).














Судя по реакции слушателей семинар им очень понравился. Приведу несколько отзывов:

  • "Был на многих мероприятиях Oracle - это лучшее из всех", ЗАО РНТ
  • "Отличное содержание семинара. Крайне полезная информация, которую тяжело получить из public источников", CBOSS
  • "Очень понравились уровень подготовки докладчиков, выступления заказчиков", RSTYLE
  • "Интересный живой семинар, очень высокий уровень подготовки докладчиков, много примеров и best practice", ПЕТЕР-СЕРВИС
  • "Хорошо подготовленные выступления, ораторы - профессионалы своего дела, много информации, но не нудно, а иногда и весело", IBS
Со своей стороны хочу отметить очень грамотные и полные технических деталей выступления наших заказчиков, уже внедривших у себя RAC. Ребята нашли время для оформления своих достижений в презентации, нашли время приехать и выступить. Большое спасибо ! Эти презентации будут в открытом доступе после нашего TechForum.

Как всегда были на выстоте выступления Eвгения Горбоконенко и Андрей Криушина (RDTEX) и демострации Игоря Мельникова, что также отмечено в анкетах наших слушателей.

Были заданы достаточно интересные вопросы, на которые так просто во время выступления и не ответишь.



Первый из них связан с особенностями работы streams в RAC. Пока могу отослать к уже известному мне материалу в этом блоге. Второй связан с поддержкой RAC Weblogic'ом. Пока ответа, я не знаю, опубликую его здесь.

UPDATE 1.
В комментариях Timur приводит полезные ссылки на документацию Weblogic.

Попробую добавить также своих ссылок:
http://www.oracle.com/technology/products/database/clustering/pdf/bestpracticesforxaandrac.pdf
На странице 6 начинается раздел "BEA WebLogic Server 8.1 SP4 MultiPool Patch and Oracle RAC 10g" со слов "WebLogic Server 8.1 SP4 now provides a patch.." после которых ясно, что имеет смысл уточнить версию Weblogic. Далее из note 220970.1
"
The key item here is whether or not they are using XA. If they are using XA (Tuxedo for example), then they should use the DTP service with 10g Release 2. Have the customer review the Best Practices for using XA with RAC on OTN .
If it is not XA then services and Net Service Connection Load Balancing should work fine. They can tune aspects of the recovery such as instance recovery time. Using BEA, they do not get the advanced features such as Fast Connection Failover (FCF) and Runtime Connection Load Balancing
"
И далее цитата нашего product manager "Weblogic would recommend creating multi-pools with a pool for each instance and they will load balance/failover connections across the pools. However you will have to have workload static to an instance, you will not be able to take advantage of running a service on a subset of instances and failover to other instances. At this point, you are probably better off using the Weblogic multi-pools when using weblogic.
"
Еще цитата - "Weblogic не принимает FAN сообщений"

Продолжаю искать информацию....

UPDATE 2.
Презентация по perfomance tuning Streams 11g с OpenWorld. Упомянаются советы изменить commit_serialization, сделать buffered_queue. В деталях описан процесс мониторинга для 10g & 11g, а также как определить события ожидания (вы помните я рассказывал про них ?) для streams конфигурции.
Крайне рекомендуется к прочтению.

UPDATE 3.
Для слушателей выложены материалы семинара. См. Выше по тексту. Если Вы забыли логин/пароль напиши мне с email адреса, который указали при регистрации.


Читать дальше...

RAC DD4D news

Следующий семинар RAC DD4D будет проходить 22-23 октября в Москве, в отеле Катерина. Осталось несколько дней. Этот семинар для партнеров. В этот раз, прежде всего мы стараемся выполнить обещание перед теми, кому отказали в прошлые разы, и в первую очередь пригласили их. Есть шанс, что кто-то отказался и осталось еще несколько мест, я не знаю. Знает Виктория Бессонова (victoriya.bessonova), +7 495 641 1400.

Если вы можете объяснить почему мы должны пригласить именно Вас, можете написать мне (dmitry.volkov). У нас есть еще несколько свободных стульев в президиуме. Оттуда отлично все видно и слышно, кстати :))

Update 1.
Начало события в 10:00 оба дня. Мы всегда начинаем вовремя :)
Проезд: Москва, м. Павелецкая, Шлюзовая набережная д6/1, гостиница Катерина. Внимание, у нас будет зал Цельсиус ! Необходимо войти в гостиницу, пройти мимо лифтов, выйти в дверь на улицу и войти в дверь в здании напротив. Последняя агенда (subject to last minute change).


Читать дальше...

11.1.0.7

Выход патча 11.1.0.7 уже не новость, но лично для меня пока не очевидно, что он приносит нам нового. Пока я знаю 2 новости:

- Выход Universal Connection Pool for Java ( including JDBC, JNDI, LDAP, JCA, etc).
Attached a deprecation notice of the existing implicit connection cache, to
be included in Oracle Database 11g R2 Readme.

Oracle Database 11g UCP Downloads

Один из разработчиков на нашем семинаре жаловался на то, что существующий pool не удобен, что есть реализации удобнее. Видимо не он один это заметил, и вот ответ.

- в 11.1.0.7 уже включены необходимые патчи для использования SPA при upgrade с более ранних релизов (10.2.x.x., 9.2.0.8).



Обратите внимание, как можно использовать Database 11g при обновлениях с 9i на 10gR2. Replay Driver отправляет на выполнение запросы в 10g, а результат анализируется с помощью SPA на 11g. На систему 10g нужно ставить патчи, или иметь версию 10.2.0.4, на систему 11g нужно ставить патчи, или иметь версию 11.1.0.7



Metalink Notes:
560977.1
562899.1

На Oracle TechForum эту тему подробно раскроет Марк Ривкин (Mark.Rivkin).


Читать дальше...

Пакет UTL_FILE в RAC

Недавно один из партнеров-разработчиков задал мне вопрос относительно работы с пакетом UTL_FILE в среде RAC.
Действительно: вопрос интересный. Давайте разберемся.



В качестве тестового стенда я буду использовать наш RAC 11g VMWare Image.
Итак, для начала, мы создаем каталог на локальном диске первого узла:

   rac1-> mkdir /u01/app/oracle/admin/racdb/log_dir
rac1->


Затем создаем объект-директорию (directory) в СУБД:
  rac1-> sqlplus / as sysdba

SQL*Plus: Release 11.1.0.7.0 - Production on Sun Oct 12 12:18:06 2008

Copyright (c) 1982, 2008, Oracle. All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production
With the Partitioning, Real Application Clusters and Real Application Testing options

SQL> create directory log_dir as '/u01/app/oracle/admin/racdb/log_dir';

Directory created.

SQL> grant read, write on directory log_dir to rscott;

Grant succeeded.

SQL> exit;


Теперь, подключившись к первому узлу, попробуем записать файл в наш каталог log_dir:
  C:\>sqlplus rscott/rtiger@rac1

SQL*Plus: Release 11.1.0.7.0 - Production on Sun Oct 12 12:22:33 2008

Copyright (c) 1982, 2007, Oracle. All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production
With the Partitioning, Real Application Clusters and Real Application Testing options

SQL>
SQL> declare
2 v_xFile utl_file.file_type;
3 v_xLine varchar2(32) := 'Hello World!';
4 begin
5 v_xFile := utl_file.fopen('LOG_DIR', 'test.log' , 'a');
6
7 utl_file.put_line(v_xFile,v_xLine);
8
9 utl_file.fflush(v_xFile);
10 utl_file.fclose(v_xFile);
11 end;
12 /

PL/SQL procedure successfully completed.

SQL> exit


Проверим наш файл на файловой системе первого узла:

rac1-> more /u01/app/oracle/admin/racdb/log_dir/test.log
Hello World!
rac1->
как видите: пока никаких проблем!

Давайте попробуем записать в этот каталог файл с второго узла (здесь и далее вывод утилиты SQL+ сокращен для удобства восприятия):

C:\>sqlplus rscott/rtiger@rac2

SQL>
SQL> declare
2 v_xFile utl_file.file_type;
3 v_xLine varchar2(32) := 'Hello World!';
4 begin
5 v_xFile := utl_file.fopen('LOG_DIR', 'test.log' , 'a');
6
7 utl_file.put_line(v_xFile,v_xLine);
8
9 utl_file.fflush(v_xFile);
10 utl_file.fclose(v_xFile);
11 end;
12 /
declare
*
ERROR at line 1:
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 41
ORA-06512: at "SYS.UTL_FILE", line 512
ORA-29283: invalid file operation
ORA-06512: at line 5
Мы получаем ошибку: на втором узле нет такого каталога в операционной системе.

Вывод: в RAC необходимо создавать каталоги на разделе файловой системе который виден сразу всем узлам кластера!
Вы можете возразить: "но ведь я могу создать одинаковые каталоги на всех узлах". Да, - можете, но для того, чтобы найти ваш файл, нужно будет обойти все узлы кластера, и поэтому работа с файлами сильно усложниться.

В нашем случае: создадим каталог в разделе который примонтирован к всем узлам; в качестве файловой системе используется OCFS:

rac1-> mkdir /ocfs/log_dir
rac1->

Переопределим нашу директорию LOG_DIR, чтобы она указывала на новый каталог

rac1-> sqlplus / as sysdba

SQL> create or replace directory log_dir as '/ocfs/log_dir';

Directory created.

И теперь снова попытаемся записать в этот каталог с второго узла:

C:\>sqlplus rscott/rtiger@rac2

SQL>
SQL> declare
2 v_xFile utl_file.file_type;
3 v_xLine varchar2(32) := 'Hello World!';
4 begin
5 v_xFile := utl_file.fopen('LOG_DIR', 'test.log' , 'a');
6
7 utl_file.put_line(v_xFile,v_xLine);
8
9 utl_file.fflush(v_xFile);
10 utl_file.fclose(v_xFile);
11 end;
12 /

PL/SQL procedure successfully completed.



Проверим наличие нашего файла с первого узла:

rac1-> more /ocfs/log_dir/test.log
Hello World!
rac1->
Все замечательно работает!

Но как быть, если в моем кластере нет разделяемого тома с кластерной файловой системой ?

Эту ситуацию мы рассмотрим в следующей серии (т.е. посте). :-)
Выход есть, и он не требует покупки и установки дополнительного софта !



Читать дальше...

LoadBalance for RAC

Спешу сообщить, что выпущена новая версия утилиты для тестирования балансировки нагрузки в момент соединения в среде RAC - LoadBalance.
Номер этой версии - 11.1.0.6 :-).

C:\>LoadBalance.exe help=y
 



LoadBalance: Release 11.1.0.6 - Production on 11.10.2008 11:15:36
 
Utility for check of Oracle RAC load balancing mode
Copyright (c) 2004,2008, Igor Melnikov. All rights reserved.
 
Format: LoadBalance.exe parameter1=value1 [parameterN=valueN]
 
Example: LoadBalance.exe userid=system/manager@rac count=20
LoadBalance.exe userid=system/manager@rac1 count=20
 
Keyword Description (Default)
--------------------------------------------------
COUNT Session count
HELP print this message: Y/N (N)
TIMEOUT Timeout between connections, in sec. (0)
ORACLEHOME Using "OracleHome" for connection
LOGFILE Save output to this
PARFILE Parameter filename
THREADS Parallel degree (for sessions storm) (1)
USERID Connection string
 Вот перечень новых возможностей:
  • появилась возможность задавать многопоточный (multithread) режим открытия сессий, - это позволяет производить "шторм" сессий на листенер и, соответственно, проверять его устойчивость к повышенным нагрузкам;
  • теперь параметры можно задавать через конфигурационный файл, а не только через командную строку;
  • опционально можно сохранять вывод утилиты в текстовый лог-файл;
  • утилита сейчас умеет работать через OCI 11g (в том числе и через Instant Client 11g);

Пока утилита рабоает только на 32-х разрядных ОС MS Windows. В принципе ее можно использовать и для тестирования Single-Node или одноузлового кластера (когда доступен только один узел).

И, в заключение, небольшой RoadMap:
  • Y2008Q4 - версия 11.1.0.7
    • вывод полной диагностики подключений (среднее время открытия сессии на каждом узле, политика балансировки сервиса, основные и резервные узлы сервиса и т.д.);
    • опциональная возможность закрытия сессии сразу после открытия соединения;
    • возможность задания в качестве количества сессий бесконечного числа - для проверки максимального числа соединений, которое выдерживает СУБД;

  • Y2009Q1 - версия 11.2.0.1
    • возможность задания нагрузки после открытия соединения в виде sql-скрипта;
    • возможность опционально указать start и stop sql-скрипты, которые запускаются, соответственно, перед началом и после теста;
    • вывод сообщений от нагрузочных sql-скриптов (вызовы dbms_output) в выходной поток утилиты LoadBalance;

  • Y2009Q2 - версия 11.2.0.2
    • поддержка балансировки через пул соединений (т.н. runtime-балансировка);
    • указание параметров пула соединений для runtime-балансировки;
    • опциональная возможность вывода FAN-сообщений от Load Balancing Advisor в случае runtime-балансировки.



Читать дальше...

RAC DD4D LAB Edition

На следующей неделе стартует первый семинар RAC DD4D LAB Edition. Из названия, надеюсь понятно, что это уже известный Вам RAC DD4D, но с лабораторными работами. Продолжительность курса 3 дня. Лабораторные работы проводятся на настоящем "железе", каждому слушателю выделяется отдельный 2-х узловой кластер и раздел на дисковом массиве NetApp. В лабораторных работах используется тот же образ, что и на семинаре.

На сколько я знаю, это первый в России практический семинар по 11g RAC ! Oracle University еще не успел обновить свой курс.


Существуют 2 особеннности этого события, которые я хотел бы отметить:

1. Ни на одном известном мне курсе по RAC Вам не предоставляется возможности забрать кластер с собой. Здесь Вы можете это сделать
2. Ведут семинар сразу два OCM Мастера Евгений Горбоконенко & Андрей Криушин (RDTEX).


Семинар проводится в рамках Партнерской Академии, а значит курс платный и проводится для партнеров.

Настоящее железо, курс читают два Oracle Master'a, Вы еще не бросились в партнерский отдел Oracle, чтобы попасть на этот курс ? :)

Подсказка: Бросаться надо к ногам Ольги Бородиной (olga.borodina@oracle.com), тел. +7 495 641 14 00


Читать дальше...

Moscow | Oracle Develop | The Premier Developer Event

И не говорите, что не видели вот этого анонса:
Moscow | Oracle Develop | The Premier Developer Event


Читать дальше...

Oracle RAC under Oracle VM

Я уже писал ранее, что 10.2.0.4 с некоторыми ограничениями сертифицирован под Oracle VM. А вот и свежая статья как именно стоит его устанавливать. Тут же Вам наверняка будет интересно, как Использовать Clusterware для защиты Oracle VM Manager.

И поскольку Oracle VM - это бесплатный продукт, мы совершенно не получаем денег за его рекламу :). Просто этот вариант сертифицирован, а значит идеально подходит для разработки и тестирования. С другой стороны, Oracle VM ставится на "голое железо", что может быть не очень удобно для первого ознакомления. Именно поэтому, Игорь Мельников (igor.melnikov) всегда поддерживает параллельно и образы наших машин для VMware.

Семинар по Oracle VM пока отложен - нужно время, чтобы переварить полученные новости.

Update 08.10.2008
Поправлена ссылка на статью. Извините за очепятки.


Читать дальше...

OracleVM 2.1.2 released

На днях вышла новая версия Oracle VM - 2.1.2

В номере версии изменилась лишь третья цифра, но перечень новых возможностей довольно значителен:

  • Secure Live Migration Насколько я понял речь идет о runtime-миграции с одной хост-машины OVM на другую и при этом трафик шифруется;

  • Guest VM HA - автоматический рестарт виртуальных машин в случае падения ВМ или отказа сервера для HA-кластеров OVM;

  • Увеличено число типов поддерживаемых сетевых интерфейсов, также теперь возможно указывать приоритет виртуального диска ВМ в очереди обращений к физическому диску хост-машины OVM, а также можно указывать приоритет и параметы входящего и исходящего трафика ВМ;

  • VMWare V2V - в OVM добавлена утилита конвертации образов виртуальных машин VMWare в формат Oracle VM, раньше для этого приходилось вручную выполнять несколько шагов;

  • P2V - при загрузке с CD-диска OVM появилась возможность автоматически создать образ виртуальной машины соответствующий физическому серверу (т.е. скопировать реальный сервер в виртуальную машину);

  • Появилась официальная сертификация RAC для Oracle VM, и Oracle VM добавлен в матрицу сертификации;


Напоминаю, что Oracle VM, является бесплатным продуктом, и новую версию вы можете сказать по адресу: http://edelivery.oracle.com/oraclevm
Вы можете свободно использовать OVM, дистрибутив не требует никаких лицезионных ключей, не включает никаких ограничений (по числу CPU, по функциональности и т.д.). В случае необходимости Вы платите только за поддержку.


Читать дальше...

RACChecker

Тема разработки и адаптации приложений под RAC очень обширна и многогранна и затрагивает практически все аспекты создания прикладного ПО для СУБД Oracle Database.
Но, тем не менее, для того чтобы гарантировать что ваше приложение корректно будет работать в RAC, необходимо убедиться, что оно не использует технологии и механизмы которые в RAC в не работают.
Вот перечень этих технологий:

  • каналы (пакет DBMS_PIPE) - не синхронизируются между узлами кластера;

  • глобальные контексты приложений - также не синхронизируются между узлами кластера;

  • сигналы (пакет DBMS_ALERT) - сигналы тоже не синхронизируются между узлами кластера;

  • задания управляемые через пакет DBMS_JOB - крайне не рекомендуется использовать в RAC, поскольку задания этого пакета не поддерживают сервисы, и привязка заданий может быть задана только жестко к узлам, при привязке задания к узлу оно не переживает failover текущего экземпляра, при отсутствии привязки задание может выживать после падения узла (начиная с 10.2.0.3) но запускается при этом на произвольном узле.


    Методы борьбы с вышеперечисленными технологиями мы подробно рассматриваем на нашем семинаре RAC Deep Dive for Developers

    Довольно часто приложение имеет большие объемы PL/SQL-кода (сотни тысяч и даже миллионы строк кода), и вспомнить о том, в каком месте используется тот же DBMS_PIPE крайне сложно: код давно отлажен и работает, а его автор уже давно не работает в компании.
    Для того, что облегчить анализ серверной части кода (хранимых процедур PL/SQL) я разработал утилиту RACChecker. Эта утилита поможет быстро ответить на вопрос: готово ли, в минимальной степени, ваше приложение при переходе в RAC.
    RACChecker анализирует ваш исходный код и находит объекты и строки кода, где вы используете технологии, которые в RAC не работают.

C:\RAC\Utils\RACChecker>RACChecker.exe help=y

RAC Checker for ISV: Release 0.0.1 - Development on 14.09.2008 23:29:23

Utility for check correctly PL/SQL for Oracle RAC

Copyright (c) 2008, Igor Melnikov. All rights reserved.


You can control how RACChecker runs by entering the RACChecker command followed
by various arguments. To specify parameters, you use keywords:

Format: RACChecker parameter=value TYPE=value

Example: RACChecker USERID=scott/tiger@orcl TYPE=PIPE
RACChecker USERID=demo/demo@demo TYPE=ALL

Keyword Description (Default)
--------------------------------------------------
SCHEMAS schemas in which check ALL-for all schemas (ALL)
HELP print this message: Y/N (N)
TYPE object type: PIPE,ALERT,CONTEXT,JOB,ALL (ALL)
REPORT_FILE file name for output report
SEQUENCES Show all user sequences (Y)
USERID Oracle connection string


Я думаю, из списка параметров очевидно их назначение.
Следует обратить внимание лишь на следующие моменты:

  • пользователь в строке подключения (параметр USERID) должен иметь права на чтение словаря (dictionary);

  • утилита опционально может находить некэшируемые последовательности (с ними тоже возможны проблемы в RAC);

  • пока не поддерживается анализ зашифрованного кода (с помощью утилиты wrap), т.е. код должен быть скомпилирован в открытом виде;

  • для своей работы утилита требует установленной среды выполнения .NET Framework 3.5, а также ODP.NET Provider 11.1.0.6.21 - рекомендуется установить версию поставляемую с Instant Client - она небольшая по размеру.


Конечно никакого волшебства в работе этой утилиты нет: она всего лишь анализирует соответствующие представления словаря.
Уже есть история успеха (Success Story :-) ):
с помощью этой утилиты мне за пару минут удалось быстро проанализировать 750 тыс. строк кода в приложении нашего партнера-разработчика и определить модули и строки которые вызовут проблемы в RAC.

Надеюсь с помощью RACChecker вы быстро определите проблемные места при переходе в RAC!

Ссылка для скачивания: RACChecker.

P.S. Приветствуются рекомендации и замечания по функционалу ...


Читать дальше...

Your.Open.World - 3

Главная новость - это HP Oracle Database Machine, комплексное решение, включающее hardware & software, для построения хранилищ данных. HP обеспечивает поставку & hardware support, Oracle отвечает за продажу решения.

Собственно решение состоит из двух частей:

1) Grid из 8 Intel серверов, 64 Core, Oracle Interprise Linux

2) HP Exadata Storage Server + Oracle Exadata Storage Software, 14 серверов, до 168 Tb данных.

Просмотреть полную спецификацию. Если я правильно понял, пока решение поддерживает только Linux Grid Cluster (RAC).

Объяснение, зачем все это нужно, на примитивном уровне звучит так: объем данных растет гораздо быстрее чем, пропускная способность. Дисковый массив передает огромный массив данных, который затем обрабатывает сервер БД. Узкое место - здесь передача даных от массива на сервер.

Теперь вашему дисковому массиву не нужно передавать на сервер БД все блоки данных, а только результат. Дисковый массив стал "разумным", благодаря специальному ПО, для того, чтобы понимать, что нужно на самом деле серверу БД.

Как это работает на самом деле ? Что за software поставили на дисковый массив ? Я не знаю. Из вышеприведенных ссылок следует, что в состав exadata storage software входит ASM. Поскольку ASM инстанс всегда нес в себе полный набор кода базы данных, ничего не мешало, скажем, научить этот экземпляр разбираться с sql запросами. Последнее утверждение - моя личная догадка.

Вдумайтесь, это уже факт, Oracle начинает продавать hardware ! Мне кажется это революционный шаг. Очень рекомендую посмотреть презентацию Larry Ellison.

PS На фотографии, Database Mashine, крупным планом. Интересно, что Google нашел первую ссылку, посвещенную событию уже через 11 минут после завершения конференции.



Читать дальше...

Your.Open.World - 2

На Open World начинаются анонсы новых продуктов/версий/возможностей.

Charles Phillips представил Oracle Beehive, рассказал про патч 11.1.0.7 для Linux 32/64, новый интерфейс metalink.

Bob Thome, наш директор по разработке RAC рассказал про свое видение Grid 2.0, добавив, что RAC 10.2.0.4 теперь сертифицирован под Oracle VM. Возможно на metalink эта информация дойдет позже, но это уже факт. Подробности я доложу на своем семинаре по Oracle VM 16 октября (здесь будет ссылка на регистрацию). Ребята из HQ поделились со мной презентацией, причем доделали ее прямо на моих глазах. Так что, пожалуйста приходите на семинар, будет интересно.

Не пугайтесь, улышав слова Oracle Cloud Computing : это возможность хостить БД на платформе Amazon Elastic Compute Cloud. Насколько я понял там своя виртуальная платформа, поэтому и свои правила лицензирования. Опять таки, насколько я понял, виртуальная машина должна быть загружена на площадку Amazon, Вы имеете доступ к ней через internet.

Основную новость мы все ожидаем услышать на презентации нашего CEO, Larry Ellison 24 числа. Все пока держится в очень строгом секрете.


Читать дальше...

Your.Open.World.

Сегодня первый полный день конференции OpenWorld. San Francisco полностью захвачен Oracle'истами. Везде в центре города люди с беджейками конференции. Основной удар в первый же день принял на себя Tom Kyte, прочитавший аж два доклада, практически подряд. Оба, конечно, вызвали интерес большого кол-ва слушателей. Материалы он обещал разместить на своем блоге.











На фотографии - Tom Kyte, в новом в обществе Сергея Данилова и меня, Дмитрия Волкова. Tom услышав, что мы из России, сразу же пошутил "Как же знаю эту страну. У Вас богатый язык.. Вы еще сделали перевод моей книги. Когда мне ее показали, я удивился, что она такая большая. Но мне сказали что это только первый том". Не буду скрывать, что воспользовался растерянностью Tom'а и пожал ему руку. Чем очень горжусь.

Конечно же мы обсуждали новый семинар Database Options Details и предложили выделить Tom'у любое удобное ему время для выступления. Он обещал подумать :)

PS На заднем фоне Bryn Llewellyn, наш PL/SQL product manager со своей презентацией про правила разработки на pl/sql.


Читать дальше...

Материалы семинара DATABASE OPTIONS DETAILS

Семинар был проведен в 18 сентября в отеле "Катерина".

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

Однако прошу Вас внимательно прочитать этот абзац, перед тем как скачать семинар. Пожалуйста, скачайте семинар только, если Вы не рассчитываете на него попасть в ближайшие пол-года. Слайды не дают полного представления о том, что происходит в зале. Одним из самых интересных моментов являются вопросы слушателей, которые, конечно, остаются вне рамок собранного архива. Если Вы планируете зарегистрироваться на "версию 2" семинара (или уже зарегистрировались на 1 версию), убедительно просим Вас не скачивать материалы. Вы не сможете получить от него удовольствие. "Версия 2" состоится предположительно 20 ноября. Вне всякого сомнения мы учтем в ней полученный опыт и серьезно ее улучшим.

Сами материалы вы можете скачать по этой ccылке
. Материалы семинара версии 1 больше недоступны. Регистрируйтесь на версию 2. Следите за новостями в этом блоге

PS
Действительно, нам не удалось выдержать обещанное расписание - семинар затянулся. В первую очередь потому, что мы старались ответить на все вопросы из зала. Угадать заранее сколько будет вопросов - очень сложно. С другой стороны - если Вам интересна тема, я бы лично слушал и до 9 часов и даже дольше. Возможность уйти в перерыве у Вас всегда сохраняется.


Читать дальше...

Семинар DATABASE OPTIONS DETAILS

Те, кто из Вас регистрировались на семинар DATABASE OPTIONS DETAILS должны были получить от нас письмо. Если в письме в subject стоит Good News, приходите, мы Вас ждем. Если BAD News - мы Вас также ждем, но позже, 20 ноября, на второй версии семинара.

Из-за большого кол-ва заявок нам пришлось выбрать алгоритм, по которому мы отсеивали участников. В частности, мы приняли решение пускать не более 2-х человек из компании. Конечно, принимая в расчет, что компании бывают очень разных размеров, это не слишком справедливо. Но, зато, внутри компании, Вы сами можете выбрать 2-х самых достойных представителей - т.е. мы не будет проверять, что из компании пришли именно те, кому мы разослали Good News письма. Досточно принести нам подтверждение, присланное вашему коллеге, который не смог, или не захотел прийти. Но помните, что 2 человека от компании - это 2 человка от компании :)

В программе произошли небольшие изменения - мы добавили Выступление Евгения Горбоконенко (RDTEX) - "Использование опций для миграции в среду RAC".

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

PS.
Большая просьба указывать при регистрации свой рабочий email, а не личный почтовый ящик на mail.ru, yandex, или gmail. Пожалуйста укажите также свой телефон, мобильный или рабочий, чтобы мы смогли с Вами связаться. Пока это просьба, но в будущем, я надеюсь, мы будем учитывать корректность заполнения при определении кандидатур на семинары.


Читать дальше...

RAC PL/SQL API

Часто у PL/SQL-разработчиков возникают вопросы при программировании в среде RAC. Ниже я попытаюсь на них ответить.

1) Как программно определить: выполняется ли мой PL/SQL-код в RAC-database или в Single Node ?

Ответ: для этого в пакете DBMS_UTILITY есть логическая функция IS_CLUSTER_DATABASE; она возвращает значение ИСТИНА, если выполнение происходит в БД запущенной в кластере.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options

SQL> begin
2 if dbms_utility.is_cluster_database then
3 dbms_output.put_line('I am in cluster');
4 end if;
5 end;
6 /
I am in cluster
2) Как программно определить узел, на котором в данный момент времени выполняется мой PL/SQL-код?
Ответ: Для этого можно применить функцию CURRENT_INSTANCE из того же пакета DBMS_UTILITY. Эта функция просто возвращает номер экземпляра БД, на котором работает ваша сессия.
SQL> exec dbms_output.put_line(dbms_utility.current_instance);
1
Есть второй способ: прочитать значение переменной INSTANCE из стандартного контекста сессии USERENV.
Ну а как прочитать это значение, вы прекрасно знаете - с помощью вызова SYS_CONTEXT('USERENV','INSTANCE')

3) Как программно определить список "живых" узлов кластера ?
Ответ: Для этого в замечательном пакете DBMS_UTILITY есть процедура ACTIVE_INSTANCES, которая через out-переменные возвращает список активных в данный момент узлов кластера.

SQL> begin
2 v_xTable dbms_utility.instance_table;
3 v_xCount pls_integer;
4 begin
5 dbms_utility.active_instances(v_xTable,
6 v_xCount);
7
8 for v_xIndex in 1..v_xCount
9 loop
10 dbms_output.put_line(v_xTable(v_xIndex).inst_number ||
11 ' => ' ||
12 v_xTable(v_xIndex).inst_name);
13 end loop;
14 end;
15 /
1 => rac1.us.oracle.com:racdb1
2 => rac2.us.oracle.com:racdb2
Обратите внимание, что в список попадут только "живые" узлы. Второй момент: имя узла возвращается в таком виде: полное имя хоста c именем экземпляра через символ двоеточия.

3) Если я включу в свои хранимые PL/SQL-процедуры RAC-specific код, то мне нужно каждый раз переключаться между двумя ветками кода через IF-оператор и вызовы IS_CLUSTER_DATABASE. Это замедлит быстродейстивие и приведет к раздуванию кода ! Если же я сделаю два варианта хранимой процедуры: один - для Single Node, второй - для RAC, то это означает что мне одновременно придется поддерживать две версии моего кода.
Есть какое-нибудь решение этой проблемы ?

Ответ: Решение есть, и очень элегантное. Для этого используется условная компиляция.
Сначала вы создаете символ условной компиляции в виде логической константы спецификации пакета:

create or replace package RAC_SERVICE is
Is_RAC_Database constant boolean := true;
end;


Затем через условную компиляцию вы оформляете куски кода специфичные для RAC:

create or replace procedure create_my_pipe
x number;
begin
$if RAC_SERVICE.Is_RAC_Database $then
x := rac_pipe.create_pipe('MY_PIPE');
$else
x:= dbms_pipe.create_pipe('MY_PIPE');
$end
end;

Преимущества:

  • не нужно сопровождать две версии исходного кода и устраняются проблемы связанные с этим;
  • переключение кода в Single Node производится простой заменой константы Is_RAC_Database в пакете RAC_SERVICE, с последующей его перекомпиляцией; "реинкарнацию" остального кода в Single Node - режим автоматически будет произведена самой СУБД;
  • в выполняемый код PVM (PL/SQL Virtual Machine) будут скомпилированы только те исходные тексты, которые специфичены для текущего режима работы (Single Instance или RAC).


Читать дальше...

Service support in Datapump 11g

При работе в RAC много вопросов вызывает Datapump.
Вот только некоторые из них:
- на каком узле кластера будет формироваться dmp-файл ?
- на каком или на каких узлах кластера будут выполняться задания (job-ы) Datapump ?
- не нарушит ли работа Datapump распределение нагрузки спланированное с помощью сервисов ?

Наконец-то многие вопросы в 11g сняты:
Datapump в Oracle Database 11g поддерживает сервисы!

То есть теперь, при выполнении экспорта/импорта, вы можете привязать процессы Datapump к определенному сервису.
С помощью сервиса вы можете, например, жестко привязать процессы экспорта/импорта к определенному узлу, или же ограничить объем необходимых ресурсов с помощью Resource Consumer Group.

Единственная тонкость: данная возможность доступна только через Datapump API (т.е. через пакет DBMS_DATAPUMP). В утилитах expdp/impdp нет возможности указать имя сервиса. :-)

Для привязки к сервису, в процедуре DBMS_DATAPUMP.START_JOB, добавился новый параметр: service_name. Вот небольшой пример выполнения экспорта через API (т.е. прямо из приложения), при этом экспорт выполняется в рамках сервиса:


declare
v_xHandle number;
v_cDmpFileName constant varchar2(64) := 'apexdemo.dmp';
v_cLogFileName constant varchar2(64) := 'apexdemo.log';
v_cDirectory constant varchar2(64) := 'DATA_PUMP_DIR';
begin
v_xHandle := dbms_datapump.open(operation => 'EXPORT',
job_mode => 'SCHEMA',
job_name => 'APEXDEMO_EXPORT',
version => 'COMPATIBLE');

dbms_datapump.metadata_filter(handle => v_xHandle,
name => 'SCHEMA_EXPR',
value => 'IN (''APEXDEMO'')');

dbms_datapump.add_file(handle => v_xHandle,
filename => v_cLogFileName,
directory => v_cDirectory,
filetype => 3);

dbms_datapump.add_file(handle => v_xHandle,
filename => v_cDmpFileName,
directory => v_cDirectory,
filetype => 1);

dbms_datapump.start_job(Handle => v_xHandle,
service_name => 'DP_SERVICE');
dbms_datapump.detach(v_xHandle);
end;


Читать дальше...

Clusterware Cloning

О том, что поставить кластер не очень просто я уже писал ранее. А вот что делать, если нужно их поставить скажем десяток-другой ?

- Можно ставить их все через Universal Installer, не забывая затем накатывать все полагающие патчи (10.2.0.4, CPU)
- Можно записать responce file. Будет чуть проще чем предыдущий вариант, но патчи все равно накатывать вручную придется.
- Можно использовать Provisioning Pack из состава Oracle Enterprise Manager. Если Вы его купили.
- Можно использовать clone.pl. Об этом способе и пойдет дальше речь.

Итак, нам необходимо

1. Установить Clusterware и накатить все патчи.
2. Остановить его
crsctl stop crs
3. Почистить от мусора
[root@node1 crs]# rm –rf ./log/ <= is name of cluster
[root@node1 crs]# find . -name '*.ouibak' -exec rm {} \;
[root@node1 crs]# find . -name '*.ouibak.1' -exec rm {} \;
[root@node1 crs]# rm –rf ./cdata/*
[root@node1 crs]# rm –rf root.sh*
[root@node1 crs]# cd cfgtoollogs
[root@node1 cfgtoollogs]# find . -type f -exec rm -f {} \;

4. Свернуть (tar+gzip) и развернуть на узлах нового кластера. Версия и патчи OS конечно же должны совпадать с оригинальным кластером. Также должны быть заведен пользователь oracle и все необходимые группы.

5. Запустить clone.pl У clone.pl всего 11 параметров - 3 переменные окружения и 8 параметров которые передаются инсталлеру.


ORACLE_BASE=/opt/oracle
E01=ORA_CRS_HOME=/opt/oracle/product/10gR2/crs
E02=ORACLE_HOME=${ORA_CRS_HOME}
E03=ORACLE_HOME_NAME=OraCrs10g
#C00="-O'-debug'"
C01="-O's_clustername=crscluster'"
C02="-O'INVENTORY_LOCATION=/opt/oracle/oraInventory'"
C03="-O'sl_tableList=\"{node1:node1int:node1vip:N:Y,node2:node2int:node2vip:N:Y}\"'"
C04="-O'ret_PrivIntrList=\"{eth0:144.25.212.0:1,eth1:10.10.10.0:2}\"'"
if [ ${VOTEMIRROR} -eq 0 ]; then
C05="-O'n_storageTypeVDSK=2'"
C06="-O's_votingdisklocation=/dev/sdc1'"
else
C05="-O'n_storageTypeVDSK=1'"
C06="-O's_votingdisklocation=/dev/sdc1' -O's_OcrVdskMirror1RetVal=/dev/sdd1'
-O's_VdskMirror2RetVal=/dev/sde1'"
fi
if [ ${OCRMIRROR} -eq 0 ]; then
C07="-O'n_storageTypeOCR=2'"
C08="-O's_ocrpartitionlocation=/dev/sdc2'"
else
C07="-O'n_storageTypeOCR=1'"
C08="-O's_ocrpartitionlocation=/dev/sdc2' -O's_ocrMirrorLocation=/dev/sdd2'"
fi
perl $ORA_CRS_HOME/clone/bin/clone.pl $E01 $E02 $E03 $C01 $C02 $C03 $C04 $C05 $C06 $C07 $C08


6. Дальше нам нужно на всех узлах запустить /opt/oracle/oraInventory/orainstRoot.sh

7. Дальше $ORA_CRS_HOME/root.sh

8. $ORA_CRS_HOME/cfgtoollogs/configToolAllCommands


И все было бы волшебно, но описанный в документации метод вызова clone.pl для платформы Windows не вполне правильный. Читайте Note:444617.1


И я кажется забыл про базу данных ? Действительно, было бы неплохо ее переименовать - см Note:464922.1. И не забудьте внести изменения в listener.ora.

Я также уверен что database control не переживет таких изменений. Вам придется пересоздать репозиторий. Хотя конечно, управлять несколькими кластерами следует через Database Grid Control.

Spatial Thanks to Philip Newlan, Oracle Corp, RAC PACK team.


Читать дальше...

Внутренняя статистика

Несколько занимательных цифр:

51% всех загрузок Oracle Database с otn.oracle.com приходится на платформу Windows
Для Windows кол-во загрузок 11g стало превышать кол-во загрузок 10g.
Для Linux кол-во загрузок 11g & 10g примерно равны.

Oracle SQL Developer скачивает каждый второй, из тех, кто скачивает Database.

Среди стран, заметно участвующих в загрузке продуктов США, Индия и Китай. Англия, Германия и Бразилия догоняют. Нас не видно. Стыдно должно быть, товарищи. Идите и скачайте что-нибудь немедленно ! :)

Абсолютное лидерство по кол-ву SR занимет 10g. 9i заметно сдал позиции. 11g вышел на некоторый, уже заметный уровень. Тенденция однако.



PS
Абсолютных цифр я, конечно же, приводить не буду :)


Читать дальше...

Oracle | Linux | Virtualization

Понравилась подборка ссылок:

Oracle Linux Home Page: http://oracle.com/linux
Linux Technology Center: http://www.oracle.com/technology/tech/linux/
Unbreakable Linux Network: https://linux.oracle.com
Unbreakable Linux Network: An Overview: http://www.oracle.com/technologies/linux/uln-whitepaper.pdf
Oracle VM Home Page: http://oracle.com/virtualization
Virtualization Technology Center: http://www.oracle.com/technology/tech/virtualization/
Oracle VM Wiki: http://wiki.oracle.com/page/Oracle+VM?t=anon
Oracle VM templates http://www.oracle.com/technology/products/vm/templates.html


Читать дальше...

10.2.0.4 for Windows

Возможно вы заметили, что в июле обновился патч 10.2.0.4 for Windows. Беспокоится не надо, объяснение в Note 726418.1. Старый патч перетирал sqlnet.ora, теперь это исправили. Кажется это все изменения.


Читать дальше...

Мне удалось вернуться из небольшого отпуска. На этот раз в Киргизии. Было достаточно приколько после +30 в Бишкеке попасть под снег на высоте порядка 3000 метров. Я весь обхохотался прям в своем спальнике весом 1.2 кг рассчитаном на плюсовую температуру :)))

В Киргизии в горной части много иностранцев. Удалось поболтать с французами. На французском между прочем. Итальянская пара с гордостью показала мне что они уже проехали 8,500 км на своем landrover'е и им еще предстоит возвращаться домой. Дедуля голландец на велосипеде посетовал, что почему-то в горах нет магазинов и мы подарили ему лепешку хлеба, после того как закончили хохотать - до близжайшего магазина было 200 км....

Все фотографии с отпуска

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

За отпуск я получил много писем - на все отвечу в течении этой недели. Не волнуйтесь.

Как Вы наверно заметили, во время моего отпуска продолжилась публикация в блоге благодаря Игорю Мельникову. Надеюсь, что благодаря совместной деятельности этот блог станет еще интересенее....


Читать дальше...

Oracle Embedded Installation

Судя по тому, что материалы семинара "Upgrade to 10g" пользуются большой популярностью, я предлагаю продолжить идею публикации информации в таком формате.


На этот раз, вашему вниманию представлен мой практический семинар "Встраивание Oracle Database в собственное приложение".
В ходе семинара рассматриваются вопросы полноценного развертывания ПО и БД Oracle внутри инсталлятора стороннего приложения, включая:


  • установка бинарных файлов ПО Oracle Database в silent-режиме;
  • установка бинарных файлов ПО Oracle Database PatchSet в silent-режиме;
  • установка бинарных файлов Oracle Database CPU [Critical Patch Update];
  • автоматическое разворачивание БД из эталонного клона с помощью silent-режима DBCA [Database Configuration Assistant];
  • контроль за процессами установки вышеперечисленных компонентов с помощью файлов мониторинга и журналов установки.
Таким образом, установка и конфигурирование ПО Oracle полностью может быть автоматизирована в инсталляторе вашего приложения !


Немногие кстати знают, что у корпорации Oracle есть специальный вид лицензирования для компаний-разработчиков: ESL - Embedded Software Licence - лицензия на встроенное ПО. По лицензии ESL, ПО Oracle продается с огромной скидкой ! По данному виду лицензирования ПО Oracle встроено в приложение и должно быть полностью невидимо для пользователя.

Собственно о том, как этого добиться рассказывает этот семинар . :-)

Как обычно, архив включает: презентации, методички к лабораторным работам и все исходные тексты используемых в лабораторных работах скриптов.


Читать дальше...