Oracle Database In-Memory. Part 4.

Решил написать о некоторых занятных  публикациях, которые появились в последнее время в области In-Memory. По большей части они касаются лицензирования.

Kevin Closson нашел занятный баг, при котором, если вы обновили свою СУБД до версии 12.1.0.2 и просто выдали команду на создание таблицы

create table <>  inmemory

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

Почему я ожидал бы ошибку? По умолчанию, параметр INMEMORY_SIZE равен 0 - поэтому, разумно было бы ожидать ошибку, ведь мы не выделили место (память)  под таблицу. Но вот, что путает, так то  что существует отдельный параметр INMEMORY_QUERY, по умолчанию TRUE. Так вот похоже, что если INMEMORY_QUERY=TRUE Oracle начинает считать, что опция использовалась несмотря на значение параметра  INMEMORY_SIZE. Кстати, если, вы запустите (просто запустите!)  СУБД c  INMEMORY_SIZE >0 - вы также начали использовать опцию In-Memory. Итого, совет, если вы не готовы закупаться лицензиями - установите параметр INMEMORY_QUERY = FALSE.

Oracle даже написал разгромную статью, что Kevin не прав -), что не помешало завести bug  -)

James Morle написал архитектурного рода пост, где в том числе, делается вывод, что помимо платы собственно за In-Memory, все ошибки проектирования вашего приложения, вместо того, чтобы оставаться в области ввода-вывода, перейдут на память, а следовательно, вам придется закупить больше CPU. Сами процессоры (x86) относительно дешевы, но вот процессорные лицензии Oracle на них - не очень. Покупая новые процессоры, вы не только заплатите за новые лицензии но и скорее, всего уйдете за возможности 2 сокетного бокса, а с ростом числа сокетов, вы попадете в ловушку с  NUMA архитектурой - доступ к памяти, расположенной на других сокетах дороже доступа к памяти локального сокета.

Интересно, что похожа идея 2-х  сокетных боксов соединенных между собой Infiniband, начинает  побеждать - IBM, который не особенно поддерживал (ok, своеобразно поддерживал)  Infiniband на Power и AIX, решил добавить поддержку Infiniband в свое cloud решение SoftLayer.  Идея небольших коробочек, из 2 или 4-х сокетов соединенных Infiniband начинает завоевывать умы людей. Что интересно, это в точности модель hi-end серверов Power 770/7780/795 -))  с тем отличием, что у hi-enf  общая память организуется на аппаратном уровне, в то время как  у отдельных коробочек на уровне программного обеспечения (Oracle RAC).  Ужасная latency (по сравнению с аппаратным решением), необходимость адаптировать приложение - ничего не останавливает людей - все хотят россыпь маленьких серверов. Это прекрасно - учите RAC и всегда будете получать хорошую зарплату -)


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

Intel Designs Custom Chip for Oracle Exadata

На днях наткнулся на фантастическое сообщение от Intel: "This customized version of the Intel Xeon processor E7 v2, developed in collaboration with Oracle, helps maximize the power of the Exadata Database Machine X4-8 .." 

Как не сложно заметить тут две новости: вышла Exadata X4-8 и, как может показаться на первый взгляд, какой то специально модернизированный chip Intel для нее! Фантастика, надо разобраться! 


Нет лучше источника информации,  чем официальный пресс релиз Oracle откуда мы узнаем:


'

For the database compute nodes, Exadata Database Machine X4-8 uses the Intel® Xeon® E7-8895 v2, an optimized 15-core microprocessor that elastically scales frequency and number of active cores to help deliver peak workload performance.
'


Динамически меняет число активных ядер! Может можно теперь платить меньше, если используешь меньше ядер?  Одно просмотр спецификации процессора E7-8895 на сайте Intel показывает только так называемые C-State - когда ядру нечего делать, процессор может его потихоньку переводить в спящее состояние, чтобы экономить электроэнергию. Таким образом, число ядер остается постоянным в системе. К сожалению, никак сэкономить эта технология не поможет. 






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



Прекрасные технологии Intel, полезные и приятные на ощупь. Intel сокращает отставание от IBM Power, значительно обгоняя в маркетинге. Как вы видите, ничего специального для Exadata в этом чипе нет, но для обеих компаний это прекрасный информационный повод еще раз напомнить о стратегическом сотрудничестве.   


Intel также анонсировал что '  Intel has cooked up a hybrid chip that bolts a Field-Programmable Gate Array onto its high-end Xeon E5 server chip'. Технология FPGA уже есть в Power 8, и ее теоретически можно было бы использовать для обработки данных на низком уровне, как это делает Netezza. Но IBM, по крайней мере пока, этого не сделал. Вот если Oracle применит эту технологию в Exadata cells это будет бомба. Но мое предсказание - это не случиться еще по крайне мере несколько лет. 


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

Oracle In-Memory is here!

С сегодняшнего дня Oracle 12.1.0.2 доступен для скачивания, а значит мы все имеем возможность прикоснуться к официальной документации и посмотреть, что из

наших пожеланий реализовано и насколько я угадал, как это будет работать.

Если вам интересна именно In-Memory еще раз рекоменду вам blog Maria Colgan.

Поскольку 12.1.0.2 это полноценный pathset, кроме ожидаемой In-Memory он содержит  несколько интересных вещей, таких как Automatic Big Table Caching, Full Database Caching, Zone Maps. Прочитать о них можно в  New Features.

Update 1.

Одно можно сказать точно на данный момент: стоимость In-Memory равна $23K USD на Процессор, или, вместе с опцией RAC это дает удвоение стоимости лицензии Enterprise Edition.





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

How to find a good job. Part 1.

Я решил начать серию постов о поиске работы. Материалов об этом вагон, но не все советы применимы именно к IT. Я постараюсь писать о специфике, связанной именно с Oracle.

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

Итак, у вас есть резюме, вы даже его где то разместили, и вам позвонили и пригласили на встречу. Вы по новому для вас адресу, нервничаете, что можете опоздать, и пытаетесь судорожно вспомнить команды rman. Наконец, с 10 минутным опоздаем вы прорываетесь через охрану, вас сажают в кабинет, вы видите свою резюме с обаятельной дамы, сидящей напротив вас, думаете "ну она то уж точно меня не завалит вопросами про rman" как неожиданно она вас спрашивает - "расскажите о себе".


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

IBM + Apple

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




Официальный press release: "..IBM will also sell iPhones and iPads..". Представляете себе запрос заказчика: "2 Power 795 и 4 IPad пожалуйста".  И комментарии  бухгалтерии 'в этом заказе вычеркнем 1 IPad для уменьшения цены'. 


Тут парень прочитал и прокомментировал press release. Смешно получилось. 


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

Oracle Big Data SQL

Наконец-то все поняли, что нет никакого смысла в 10 десятке разных языков, один другого смешнее, pig, fig, hruk, impala-la-la, и что можно обойтись просто SQL.

Сегодня большой день - Oracle объявил о Big Data SQL. Вы сможете увидеть свои Big Data данные как (внешние) таблицы в Oracle. Просто напишите select - и загрузите данные из Twitter. Кто-то должен был сказать Twitter, чтобы они это сделали, но сделал это Oracle. Спасибо. Уф. Теперь на вопрос - знаю ли я что такое Big Data я буду с чистой совестью отвечать что уже 20 лет как -)



Судя по Data Sheet, можно предположить, что Oracle доработал обертку над Hive.  Сделал так, чтобы Hive металанные доехали до СУБД и там выглядели как таблицы. Красиво. Картинка справа нарисована Product Manager и похоже ему есть куда развивать свое умение рисовать -)



По дороге, опять таки, прикрутили Storage Indexes, как пишут,  прямо на стороне Hadoop.

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

Посмотреть анонс. (не технический, как что работает из анонса непонятно)

Цитата: "Oracle Big Data SQL will be generally available in 3Q 2014"

Update 1. Хорошая картинка, из нее чуть больше понятно, что будет происходить. И этот блог пост также хорош.




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

ASH - it is a time to rethink what is inside

Пост обновлен  18.07.2014

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

Убедительно прошу вас просмотреть одну из лучших презентаций на тему ASH, сделанную в этом году на RMOUG. (на секундочку, это rocky montains oracle users group, и вообще то материалы доступны только участникам. Но поскольку именно эта презентация сделана сотрудниками Oracle, ее выложили. Кстати, если посмотреть на сайт rmoug сразу понятно как должна выглядеть Users Group).

В презентации много интересного, но самое вкусное начинается после слайда "The ASH Fix-up Mechanism". Там рассказывается, как посчитать правильно latency. Большинство людей предполагало, что это avg (time_waited) where time_waited > 0 и можно найти даже книги по Oracle performance с такой формулой.


Все очень просто - запускаем SwingBench, где soe tablespace находится на отдельном устройстве и попробуем определить latency для db file sequential read.

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

>iostat -xkd 1 | awk '{ if ($1 != "" &&  $1!="Device:" && $1!="Linux") print strftime("%d/%m/%y %H:%M:%S",systime()),$1,$11 | "tee  iostat.dat" ;}'
и после окончания нагрузки 
>grep sde iostat.dat  | awk '{sum+=$4} END { print "Average = ",sum/NR}'


Результат - 2.6 ms

Теперь AWR - 2 ms. хо-хо - база данных считает, что она читала быстрее чем отдавал диск. Есть несколько объяснений, почему может быть такое, но в целом данные сходятся.






 Тестируем магическую формулу из презентации


Точнее, чем AWR - что не удивительно, поскольку в ASH просто больше данных.

Ну и наконец, посмотрим что нам дает нерекомендованный способ:

Update 1. Это конечно же 5.4 ms. - у меня плохо с операциями деления.


Фантастические данные, но к сожалению не имеющие отношения к реальности.

Мне сложно прямо сходу назвать причину, но если рассмотреть сырые данные, то можно увидеть, что только 1 из многих записей имеет реальное значение порядка 1.6 ms.






В комментариях Игорь обратил внимание что максимум -  1.6 sec, минимум 4.6 ms. Понятно, что одна операция ввода-вывода не может длиться 1 sec - у меня локальные ssd диски. С другой стороны, если это было чтение индекса, операций было много, время которое было затрачено, проставлено только в последней - тогда вроде бы все встает на свои места. Число операций, которые в сумме дали нам 1.6 остается нам неизвестным, посколько были очень короткие, и sample на них просто не попали.



Согласно описанию, по крайне мере как я его понимаю, поскольку все чтения диска длятся очевидно меньше 1 s, time_waited отражает просто момент времени на который пришелся sample. Фактически, мы получим все возможные распределения от 0 до 2.6 ms (которое,  по видимому, отражает реальность).


Вот еще картинка из dba_hist_event_histogram. Oracle считает что да, были события по 2 ms.

Пусть очень мало, но все таки было. Хотя мне кажется, что это что то с аккуратностью сбора  статистики.












PS
Я  разговаривал с одним DBA, который занимается исключительно performance tuning в своей  компании. Так вот, вся команда PT не имеет доступа к production systems. Они могут только запрашивать данные, на основании которых давать свое заключение. Честно говоря, первый раз о таком услышал, что внутри компании такие ограничения. Но вот эта группа не очень чувствует чем им может помочь ASH - они больше ориентируются на AWR, что явно не лучший способ в наше время!


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

Using Tableau for Oracle Performance analysis. Part 1.

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

Популярное сейчас решение - попросить AWR и ставить диагноз по нему. Тут есть несколько проблем.
  1. AWR содержит тексты SQL запросов - был случай,  когда мне сказали что это секретная информация
  2. AWR собирается с какой то частой, по умолчанию 1 раз в час, и чаще всего, вместе с проблемным участком попадает и нормальный. Данные получаются размытыми.
  3. Можно сделать  снимок (snapshot)  до начала проблемы и после, и сделать отчет между двумя этими снимками - но, встречаются случаи, когда это не очевидное действие для администраторов. 
  4. Данные в AWR представлены в виде среднего по больнице. 40% база данных тратила на ввод-вывод, можно по Top SQL догадаться кто виноват (найти sql) но восстановить общую картинку, как чувствует себя тот или иной бизнес модуль, даже если код хорошо инструментирован, весьма сложно. 
  5. Приходится писать много текста, который мало кто любит читать - все любят картинки. 
Не менее популярно (по крайне мере, было) написание своих скриптов для сбора нужной вам информации. Это отдельная песня - элементарно не разрешают, на основании того, что эти ваши скрипты погубят систему. 

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


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

RuOUG


Я, как и все зарегистрированные участки RuOUG, получил письмо от администрации о том, что не все ладно в датском королевстве, и цитата, 'деятельность стала пробуксовывать'

Я хочу напомнить, что RuOUG  был создан Андреем Криушиным и Евгением Горбоконенко в 2009 году ( и я прошу вас перечитать исторический пост Сергея Данилова на эту тему).

Деятельность различных user groups в первую очередь выгодна самой компании Oracle - ведь энтузиасты, собираясь и обсуждая, развивают технологии, причем совершенно бесплатно!

Мне кажется совершенно естественным, что в тяжелое время компания должна помочь и поддержать RuOUG. Возможно что-то делается уже, я не знаю, но пока я вижу, что комания продолжает тратить деньги на мероприятия в стиле <Что-то там>  Пиво" - спору нет, мероприятия наверное интересные. Наверное,  но с последнего даже презентаций нет в открытом доступе.

Update 1. Прислали ссылку на последнее мероприятие Oracle DB Community Day. Предыдущее было ровно год назад. 

Второе, собраться один раз в ресторане компанией людей которые смогли прийти в этот день совсем не то, что поддерживать регулярные события на протяжении года. Если найдутся деньги на оба формата - супер, больше форматов больших и разных.  Нужно помещение. Нужно скромно,  но покормить. Почему бы не заплатить, тем кто выступает? Это для начала, когда паровоз разгонится можно будет брать деньги за билеты -)

В общем я надеюсь, что Oracle поможет. Что скажете? У вас есть еще мысли?

Update 2. Посмотрите видео, 30 сек. Точки зрения бывают разные, чтобы понять картинку нужно суметь выслушать все.  Пока коллеги из Oracle никак не прокомментировали. Это нормально. Попробую задать вопрос по другому: почему бы эти замечательные мероприятия (и Пивы и DB Community Day) не проводить в рамках Users Group? Ведь для этого она и существует  - для объединения людей в community. Это сильно помогло бы, на моей взгляд. Что скажете?




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

Oracle Database In-Memory. Part 3

Потихоньку начинаются публикации людей которые успели попробовать (очевидно в b-версии) In-Memory. Во первых блог Maria Colgan (мне кажется она product manager по этому направлению, но она супер технический product manager).


'If a query is looking up a small number of records (rows), and an index on the WHERE clause column exists, the Optimizer will select an index access path (via the buffer cache), as this execution plan will be both more efficient (lowest cost) and more scalable in a multi-user environment.'

Маленький звоночек, more scalable in multiuser enviroment  - это интересно. Очевидно, если сотни   пользователей OLTP меняют данные, очень тяжело успеть в real time менять их в In-Memory виде.

'..By placing that Materialized View in-memory.. '

Ох, это здорово, те все таки In-Memory будет работать с Mat View как я надеялся здесь.

Другой блог, насколько я понял одного из администраторов Turkcell, который взял Swingbench и посмотрел как будет работать  нагрузка Warehouse. Гениальная идея кстати.

Длинный пост достаточно у него. Попробую повторить его выводы, напутав и переврав.

1. Hash Join + Index Fast Full Scan не удалось победить, время выполнения традиционного запроса и In-Memory одинаково.

2. Как только подключается фильтрование данных, In_Memory выигрывает за счет bloom фильтров, в 5-7 раз легко.

Тестирование проводилось в режиме single user.

Update 1. Прекрасная презентация Игоря Мельникова про In-Memory - там же есть тесты. Вывод, что In_Memory особенно хороша когда есть фильтрация данных подтверждается. 


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

ASH Analitics

В 12с  Enterprise Manager Database Console переименовали  в Enterprise Manager Database Express 12c, но вот что здорово, то что ASH Analitics можно воспользоваться из EM Express и никакого Сloud Сontrol не надо!

ASH Analtics анонсировали еще в 2011 году - вот оригинальная презентация.

Для начала найдем по какому порту слушает EM Express:


[oracle@oradb12c admin]$ lsnrctl status | grep HTTP

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=oradb12c)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/admin/DB12c/xdb_wallet))(Presentation=HTTP)(Session=RAW))

Дальше попадаем в интерфейс (указываем логин пароль пользователя БД,  я указал sys)




Волшебство начинается после выбора Performance-> Performance Hub






Вот как это выглядит:


Классическая картинка - прямо как была на презентации Oracle 2011 года.


Что же со всем этим счастьем можно делать? Предположим, что меня волнует загрузка CPU, для этого я указал фильтр Wait Event: CPU + Wait for CPU и тут же получил набор SQL_ID, да еще и с временами когда они запускались.

























Дальше я выбрал sql_id (левый нижный угол экрана) и получил его текст, статистику, имя пользователя (SOE) и Plan Hash Value.






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

Не отходя от кассы, можно тут же запустить задание на оптимизация SQL.

Мне очень понравилось:  все очень красиво и понятно. Какой sql_id  когда ожидал какого события ожидания, кто и когда запускал этот sql. В реальном режиме времени. Ничего ставить или знать для этого не нужно. Простота и гениальность.

У меня есть подозрение что в Cloud Control интерфейс чуть отличается, но я пока не имел возможности сравнить оба.


Некоторые примеры как использовать ASH Analitics  можно также найти здесь:
http://dbakevlar.com/2014/04/ash-analytics-tracking-down-an-issue-part-i/


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