statspack discrepancy

Получив очередной statspack я с удивлением обнаружил следующее сообщение:

Note: There is a 50% discrepancy between the OS Stat total CPU time and
      the total CPU time estimated by Statspack
          OS Stat CPU time: 1209725(s) (BUSY_TIME + IDLE_TIME)
        Statspack CPU time: 2419488(s) (Elapsed time * num CPUs in end snap)

Jonathan Lewis (я безусловно рекомендую прочитать все его статьи про statspack) приводит замечательный пример, когда такое возможно:  например  CPU  intensive процедура не завершилась ко времени снимка statspack.   В этом случае время OS time >  чем Statspack CPU time, потому что время считается только для завершившихся запросов.  Однако в моем случае все наоборот:  OS time <  Statspack time !  Надо отметить, что   =  2419488 / 1209725 =  2.000031412097791. Хорошая такая точность, до 4 знака после запятой.

Как репортит statspack, мы имеем дело с  Oracle 10.2.0.4.0,   Num CPUs:   96

Однако nmon - наше все (если у нас AIX). И он нам сообщает что на нашей машине Power 595 у нас всего 48 активных процессоров и SMT выключено (я так думаю, в противном  случае  вкладка CPU_ALL содержала бы примечание про SMT, а его нет в этом случае).  Я предполагаю, что  Oracle в данном случае ошибочно считает, что SMT всегда включено.   



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

COOPERTITION

В 2006 году меня попросили сделать презентацию в офисе IBM на открытии совместного мероприятия IBM-Oracle и я начал презентацию вот с этого слайда. Это одно слово (COOPERation и одноврменно compeTITION) как нельзя точно передает отношения между двумя компаниями. С одной стороны конкуренция, с другой кооперация. На момент проведения презентации конкретно в России было 424 совместных заказчика IBM-Oracle, которые использовали СУБД Oraсle на технике IBM. Эти крупнейшие заказчики представлены во всех секторах от Public Sector до Commercial.

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

Несмотря на то, что при покупке Sun элемент compeTITION усилился, у компаний есть совместный центр тестирования в Montpellier, France (фотографии копирайт Дмитрия Волкова), где работают несколько десятков человек над тестированием и обкаткой совместных решений Oracle-IBM и которые буквально получают зарплату из рук обоих компаний одновременно. Заказчики могут приехать в центр, протестировать софт, выпить чашечку кофе и полюбоваться Лазурным Берегом. Мой отъезд в Oracle UK был освещен достаточно ярко на этом блоге, а отъезд Дмитрия остался как-то в тени. Так вот, Дмитрий работает в одной из групп IBM, которые занимаются совместными решениями "техника IBM под СУБД Oracle". До Montpellier Дмитрий не доехал -- он базируется в московском офисе IBM.

Поэтому в этом блоге (похоже, что теперь уникальном блоге Oracle/IBM) Вы видите весьма интересные метаморфозы (по биологии проходил давно еще :^) . Большая просьба не искать в этом блоге какой-либо политики -- ее тут нету. Любой заинтересованный человек может оставить комментарий. Я конечно иногда обожаю оставлять всякие гадостные комментарии (чтобы никого сильно не метаморфозило), но это я так, любя :^)

Как Вы уже наверное читали ниже в постах "читая TPC-C" и "core factor", помогая Заказчикам осознавать value железа IBM POWER Дмитрий на самом деле автоматически помогает Oracle продвигать Oracle Database (да еще с каким коэффициентом core factor!), поэтому я лично вижу совместную выгоду для обоих компаний :^)

P.S. Если кто-то не понимает происходящего на блоге, то всегда можно задать вопрос.


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

про золушку-2

Вы про золушку помните ?  И были это еще не ее беды.. По первой же попавшейся ссылке мы читаем из чего состоит database cell:
   * X4275 Server
   * 2 Quad-Core Intel® Xeon® E5540 Processors
   * 24GB RAM
   * Dual-port 4X QDR (40Gb/s) InfiniBand card

Перечитываем еще раз и убеждаемся что карта Infiniband ..одна, только двухпортовая. Повторю - это обычная PCI -E карточка, стоимостью $2,295. Что удивительно, так то,  что ничего не мешает нам поставить их две, это поддерживается. Инженеры Sun обо всем подумали проектируя X4275. Теперь внимание вопрос - что произойдет если у системы за $300K за железо  +  $360K за специальное ПО сгорит 1 карточка за $2K?  Да в общем ничего, вы же помните что данные задублированы причем обязательно на других  cell. Потеря 1/3 производительности ? Потеря данных, если за до замены карточки  сгорит диск ? Весьма сложная ребалансировка когда карточку заменят ? Who care about... Как же это могло произойти, почему всего одна?   Я честно говоря не понимаю (есть  версия - просто закончились свободные порты).  Но знаю точно, что это совершенно бессмысленная и беспощадная экономия $2K. Кстати купить за свои деньги и доставить - нельзя -). Остается только молиться.  Enjoy !


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

Апрель

Прошло время, есть изменения по этому тексту:

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

  • 20,  (а не 18 как я писал раньше) будет проводиться RuOUG. Бесплатно при условии членства в RuOUG. Если вы забыли зарегистироваться, наверно еще можно написать на welcome@ruoug.org чтобы спросить что Вам делать. Программа семинара.
  • c 18 по 20 апреля В мае  в партнерской академии Oracle будет проводиться очень интересный семинар под пока кодовым названием 'RAC is Simple'.  За 3 дня вас научат как поставить и протестировать RAC 11gR2 на платформе Linux, как перенести приложение, как мигрировать с single instance. Вам предложат более 10 лабораторных работ на виртуальных машинах.   Это платный семинар, стоимость около $60 в день. Все детали лучше выяснять у партнерской академии.
  • 29 апреля состоится очередной технологический клуб Power, в этот раз посвященный работе Oracle на платформе Power. Программа. Ссылка на регистрацию.


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

service as is

Отмазка: предлагаемый сервис ограничен по времени, не предполагает выполнения каких-либо работ в ограниченный срок и представляется AS IS безо всяких  всяких гарантий. 


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

911

Если при установке AIX ввести в качестве опции установки 911 (а не то что перечислено на экране), то волшебным образом установка перейдет в режим отладки и вы сможете увидеть детальный лог. Мне просто нравится, когда инженеры продолжают вставлять чит-коды даже в казалось бы   очень серьезные программы  -))


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

core factor


После прочтения core factors table каждому разумному человеку становиться понятно, что Oracle стоит покупать только на SPARC T3 процессор из-за коэффициента 0.25. И все крики что не не все процессоры одинаково полезны сталкиваются с "а докажите !". Доказать, это кстати интересное упражнение -).

Начну издалека: во первых, лично я ненавижу разговоры о БД на серии T из-за того что они ...были сделаны для Web серверов, и только потом появилась (я уверен что в маркетинге) идея запихивать их под БД тоже. Собственный тест на еще на T1 показал мне что так оно и есть. По моему убеждению Intel Xeon порвет T2/T3 под нагрузкой БД. 4 сокета максимум в T3 тоже не добавляют оптимизма. Борорься с Intel на 4-х сокетах сейчас очень не просто даже настоящим RISC. Что не вовсе не умоляет иженерных достоинств T3, в том числе весьма достойной виртуализации. Во-вторых, мне кажется странным, что Oracle решил вот так просто отдавать что-то дешевле. Не верю, что за счет весьма стабильного бизнеса СУБД решили поднимать производство T3. Я хочу показать, что причина тут в другом.
Все, пора показать данные:



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

STU.Part 3

На мероприятии мне удалось побывать на ..лекциях по тому как работает Unix. Мне они очень понравились, хотя и не все оказалось понятно. Читал их волшебный дядька, который сделал из скучной в общем то темы целый концерт и вызвал желание разобраться/вспомнить некоторые вещи. Например он сказал что в качестве первого шага для того чтобы понять что происходит, он запускает vmstat. Тут одна проблема, вывод vmstat очень сложно понимать, он требует реальных знаний данной ОС. В качестве примера приведу колонку %wait for IO. В Linux сейчас эта колонка называется wa.Читаем man и видим:
"wa: Time spent waiting for IO. Prior to Linux 2.5.41, included in idle"
Так вот дядька и сказал, что не нулевой Wait for IO не говорит о проблемах с I/O, а также нулевой I/O не гарантирует, что их нет. Что за колонка такая по которой ничего сказать нельзя -) ? Для начала, что нам хотел сказать man: на самом деле процессор не тратит реального времени на ожидания ввода-вывода, и если ему есть что делать то он занимается реальной работой, отвлекаясь по прерываниям чтобы посмотреть не пришли ли ему данные с устройства. Поясню еще - если процесс блокируется в ожидании ввода-вывода, то дальше идти он не может. Но возможно в системе есть и другие процессы которым нужно процессорное время. Поэтому, если у нас загруженная система, то Wait for IO может быть близким к 0, независимо от от объема ввода-вывода. С другой стороны, если системе делать нечего, то время которое процессор провел в ожидании реального ввода-вывода будет зафиксировано не в idle а в wa.
Даже это (как мне кажется разумное) объяснение не отвечает на вопрос - куда смотреть то чтобы понять есть проблемы с вводом - выводом или нет ? Похоже что для начала нужно смотреть в колонку b - blocked for IO (это я так думаю), а вот что думает man Linux:
"b: The number of processes in uninterruptible sleep."
а документация AIX: "This includes threads that are waiting on filesystem I/O or threads that have been suspended due to memory load control." Что же смотреть в колонке b ? если там постоянно больше процессов чем у вас устройств ввода-вывода (дисков или путей) - это знак. Скорее всего, да - все такие проблемы найдутся.
По моим воспоминаниям, на Solaris был магический барьер - если wait for IO больше 40%, то ищи проблем с вводом выводом, если меньше - то скорее их не найдешь. Число магическое, объяснить я его никак не могу. Конечно же окончательный диагноз дает iostat с service time (<10 ms отлично, больше 100ms все уже умерли) и средней длиной очереди на устройство.

Ну и напоследок, когда я подешел к дядьке и спросил в чем по его мнению разница между swapping и paging, он стал кричать на меня что такого слова swapping нет вообще -) Наверно поэтому она не встречается в описании команды vmstat на AIX, а на Linux (и Solaris) есть цельные колонки -)). На дальше всех пошли пижоны из Apple и я не нашел vmstat на Mac, а vm_stat вообще не содержит колонок, а которых я писал -))


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

STU.Part 2


Оперативной памяти почти всегда не хватает если у Вас есть база данных.  Поэтому инженеры начали борьбу за то чтобы ее стало больше -)

На сегодня существует два подхода:

Если у Вас Solaris или Linux (кто бы сомневался в таком ограничении) то вы можете использовать Smart Flash Cache – если очень коротко, то это кэш второго уровня (L2) для Buffer Cache.   Чтобы влючить эту возможность вам понадобится установить параметры db_flash_cache_file (указать устройство) и db_flash_cache_size (указать размер).  Конечно устройство должно быть быстрее наших дисков и поэтому предполагается использовать solid state storage devices.  Подождите, даже SSD  нам придется поставить не один, потому что один диск  скорее всего  не вытянет нужную нам производительность !
Дальше читая документацию мы находим фразу  “can improve response time for read intensive OLTP application”. Мне кажется что это ключевой момент, потому что если приложение write intensive то этот механизм может сделать даже хуже.

Все равно, отличная инженерная идея !  L2 кэш давно  используется при разработке процессоров и пора уже было давно сделать что-нибудь подобное.  К сожалению, даже после прочтения этого поста я не понял как это работает
 - каков алгоритм вытеснения из памяти во  FC
-  скорее всего процесс если ему нужны данные и они во FC считывает их и они попадают обратно во buffer cache. Но так ли это ?


Теперь перечитайте этот пост сначала – все это волшебство только для Solaris и Linux.
Инженеры IBM нанесли ответный удар – технология называется Active Memory Expansion. Они предложили .. сжимать страницы основной памяти, но не все конечно, а какую-то их часть (дальше я предполагаю что и не все типы страниц памяти сжимаются). Для приложения эта технология абсолютна прозрачна и приложения просто видят больше памяти, чем физически есть на машине.







После запуска специальной команды awepat вы сможете увидеть (если у Вас AIX 6 или 7 и машина класса 750 или выше)

True Memory                    : 1.00 GB
SMT Threads                    : 4
Active Memory Expansion        : Enabled
Target Expanded Memory Size    : 1.50 GB
Target Memory Expansion factor : 1.60


Что в моей системе (LPAR) только 1 Gb физической памяти, которая превратилась в 1.5 Gb видимой приложению. Постойте, но чтобы сжимать память нам нужна процессорная мощность?  Да, конечно и поэтому в следующем разделе awepat вы видите

Expansion    Modeled True      Modeled              CPU Usage
Factor       Memory Size       Memory Gain          Estimate
---------    -------------     ------------------   -----------
     1.00          1.50 GB         0.00 KB [  0%]   0.00 [  0%]
     1.20          1.25 GB       256.00 MB [ 20%]   0.00 [  0%]
     1.60          1.00 GB       512.00 MB [ 50%]   0.18 [ 18%] << CURRENT CONFIG



что доп 512 Mb памяти нам будут стоить  18% от одного  ядра. Нагрузка эта распределяется между всеми ядрами LPAR. Посмотреть % реальной занятости ядер обслуживанием этого механизма  можно с помощью lparstat -c.  Сколько же нам попросить доп памяти по отношению к основной чтобы не убить процессоры ?   По оценкам инженеров пока рекомендуется использовать Expansion factor в районе 1.2 – 1.5.

Два дополнительных замечания:
- все таки это новая возможность и пока рекомендуется ее использовать для test & dev.
- попробовать эту возможность можно совершенно бесплатно и легально в течении 60 дней, ничего покупать не нужно -). А вот дальше придется доплатить, но конечно меньше чем за реальную память.
Как вы видите, теперь ответить на вопрос а сколько у меня памяти отведено  под Oracle весьма непросто. Скажу больше, что на AIX с учетом Active Memory Expantion & Active Memory Sharing вывод команды vmstat может довести до истерики -))) Но об этом на семинаре 29 апреля -)






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

STU.Part 1

Пока Игорь Мельников собирал по деревням Шотландии DataPump файлы, мне повезло попасть на Oracle Open World IBM System Technical University.  Первым делом я поинтересовался где у них тут наш Рачок. К удивлению не только не набили морду, но и ...показали как узел RAC переезжает с сервера c Power 6 процессорами на сервер c Power 7 без остановки. Называется эта технология Partition Live Mobility (PLM). Все что пришлось подготовить на новой машине с Power 7 процессорами - это сконфигурить пути, чтобы переехавший узел смог увидеть voting диски и собственно базу.  Из видео (хотя видно плохо) видно что транзации на всем кластере замерли буквально на секунду и продолжили раньше. Никакие механизмы FAN или TAF тут не работали -  PLM background скопировал память, затем остановил Partition на одном сервере и тут же поднял на другом. TCP/IP соединения не разрывались. Остановка на секунду была очевидно из-за cluster freeze - в момент переезда кластер подумал уж не отвалились ли нода, но потом удачно вернул ее обратно. Конечно эта демонстрация была не вполне честной, по честному было необходимо остановить узел, но ковбойский метод сработал.



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

Datapump in RAC

При импорте или экспорте данных в среде RAC возникает проблема расположения файлов дампов. Они должны быть "видны" всем узлам кластера. Есть конечно возможность положить dmp-файлы на локальный диск одного узла, и далее установить некластерный режим работы Datapump: параметр CLUSTER=N утилит expdp и impdp, либо через параметр SERVICE_NAME=<имя сервиса>.
Где "имя сервиса" - сервис жестко "привязанный" только к одной ноде.

Но если файлы дампов для импорта занимают около 1Тб (уже сжаты с помощью Advanced Compression), и на локальных дисках мало свободного пространства?
Да и объем данных большой, и хотелось бы для импорта использовать все узлы кластера.
В случае Exadata Database Machine именно так и происходит ...

Но у нас есть возможность хранить dmp-файлы DataPump прямо на ASM !
Осталось только перед импортом скопировать dmp-файлы в отдельный каталог на дисковой группе ASM.

Сказано - сделано.
1. Создаем шаблон на ASM для хранения dmp-файлов (отключаем зеркалирование - для экономии места и располагаем файлы на внутренних дорожках диска):

ALTER DISKGROUP FRA ADD TEMPLATE my_dpdump_template ATTRIBUTES (UNPROTECTED COLD FINE); 

2. Создаем каталог на ASM для хранения dmp-файлов:
ALTER DISKGROUP FRA ADD DIRECTORY '+FRA/orcl/dpdump';

3. Создаем каталог (объект directory) в БД:
 CREATE OR REPLACE DIRECTORY MY_DUMP_DIR as '+FRA(my_dpdump_template)/orcl/dpdump';
обратите внимание, что для файлов каталога используется созданный на 1-ом шаге шаблон.

4. Теперь можно скопировать в этот каталог файл с помощью утилиты asmcmd (/u01/dump - это промежуточный каталог на локальном диске узла):
ASMCMD> cd +FRA/orcl/dpdump
ASMCMD> cp /u01/dump/appfull01.dmp ./
copying /u01/dump/appfull01.dmp -> +FRA/orcl/dpdump/appfull01.dmp
ASMCMD> ls -l
Type Redund Striped Time Sys Name
N appfull01.dmp => +FRA/ASM/DUMPSET/appfull01.dmp.260.747620627

как видите реально в каталоге dpdump присутствует ссылка на файл +FRA/ASM/DUMPSET.
Все правильно, но почему в каталоге ASM, а не orcl ?
Утилита asmcmd работает от имени экземпляра ASM и не знает к какому экземпляру относится ваш файл !
И так просто переложить его в правильное место (+FRA/orcl/dumpset) не получится ...

Выход простой: для копирования dmp-файлов нужно использовать пакет dbms_file_transfer:
create or replace directory MY_SRC_DIR  as '/u01/dump';
begin
dbms_file_transfer.copy_file(source_directory_object => 'MY_SRC_DIR',
source_file_name => 'appfull01.dmp',
destination_directory_object => 'MY_DUMP_DIR',
destination_file_name => 'appfull01.dmp');
end;
/

Теперь все нормально:

ASMCMD> cd +FRA/orcl/dpdump
ASMCMD> ls -l
Type Redund Striped Time Sys Name
N appfull01.dmp => +FRA/ORCL/DUMPSET/COPY_FILE_0_0.260.747621645
ASMCMD>

Обратите внимание что системное имя файла на ASM теперь имеет другой "говорящий" вид.

Дальше осталось автоматизировать этот процесс для всех файлов dumpset-а, то есть написать скрипт для правильного копирования всех файлов дампа...

На фотографии запечатлен процесс импорта данных на Exadata X2-8 в центре тестирования в г.Линлитгоу, Шотландия (Linlithgow, Scotland), зеленые лампочки ячеек хранения очень красиво переливаются. :-)

После завершения импорта и построения индексов - БД заняла на дисках ~10Тб, и началось тестирование. Но это уже другая история ...


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

Oracle Database 11g R2 XE Beta

Oracle Database 11g R2 (11.2.0.2) Express Edition Beta уже доступен для скачивания!

Документация доступна по этой ссылке.

Oracle Database 11g XE доступен только для двух платформ: Linux x64 и Windows x86.
Все ограничения остались прежними кроме одного: размер БД может занимать 11Gb, а не 4Gb как в предыдущем релизе.


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

Все на System z !




Wow ! 11gR2 выпустили на System Z !  Поскольку по времени это совпало с объявлением про Intanium то очевидно рекомендация Oracle для владельцев Intanium - это System z, не так ли   ?

Update 1. Mama mia ! "each Oracle ACE will receive a half-rack Exadata and Exalogic package for their labs" !


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

без комментариев

Источник: http://www.linkedin.com/company/oracle/statistics

"Similar companies are based on the same industry and similar size"




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

Itanium - FYI

Вчера Oracle решил остановить разработку следующих версий под Itanium. Наиболее взвешенное объяснение я нашел здесь - если коротко, то Microsoft и Red Hat прекратили поддержку Itanium еще раньше. Но HP тоже прав - так бросать заказчиков не следовало (см комментарий Романа).

Пока можете скачать себе в коллекцию последние версии базы под эту платформу -(
Update 1: Не знаю кому и верить: "We remain firmly committed to delivering a competitive, multi-generational roadmap for HP-UX and other operating system customers that run the Itanium architecture.", Paul Otellini, president and CEO of Intel Corporation.
Update 2: ААА, Ларри просто обиделся на вот это -)
Update 3: Парни держат слово, в MOS 742060.1 обещали выпустить версию для Itanium 15 марта 2011 года. Как в известном анекдоте "не получилось"...
“HP gets hit. Oracle’s database is a major workload on HP’s Itanium servers, with possibly up to 50% of HP’s flagship Superdome servers running Oracle. A public statement from Oracle that they will no longer develop their database software will be a major drag on sales for anyone considering a new Oracle project on HP-UX and will make customers and prospects nervous about other key ISV packages as well.”
“HP believes in fair and honest competition. Competition is good for customers, innovation and the marketplace. We are shocked that Oracle would put enterprises and governments at risk while costing them hundreds of millions of dollars in lost productivity in a shameless gambit to limit fair competition.”


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

про золушку

Предположим у нас есть 3 дисковые стойки по 12 дисков. Стойки "тупые", а потому мы ставим  ASM и создаем группу с Normal Redundancy. Думаю, пока возражений нет ? Затем у нас ..неожиданно выключается диск. Это полная ерунда, поскольку у нас ASM и данные обязательно зазеркалированы..ну, так  скажем на каких-то еще дисках. Внимание опрос - какова вероятность потери данных при выходе из строя следующего диска ?


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

читая TPC-C


Многие спрашивают, что же за  волшебный SuperCluster. Чтобы понять о чем дальше пойдет речь вам нужно прочитать пост "изучаем aнглийский вместе с Ларри". 
Итак, новый рекорд в TPC-C с весьма впечатляющими цифрами. Одновременно нам рассказывают про новый процессор T3, который в 2 раза производительнее старого,  Infiniband, новый Solaris 11 и Flash Array. 

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

Для этого рассмотрим два теста,
 старый: 7,646,486 tpmC, 384 ядра, UltraSPARC T2 Plus 1.6GH, Flash Array, 12 узлов RAC
  новый:  30,249,688 tpmC, 1728 ядер, SPARC T3 1.65GHz, Flash Array, 27 узлов RAC


Тот же Flash Array, тот же Solaris 10 (да-да, а вовсе не Solaris 11), версия RAC изменилась с 11gR1 до 11gR2 но документированных  улучшений в производительности я не видел. Что странно, на диаграммах в обоих случаях в качестве RAC Network стоит 10GbE switch (?). Я думал, что в качестве интерконнекта использовался Infiniband ..(поправьте меня если я что-то пропустил)

По человечески вроде бы результаты понятно - 30/7 ~ 4 , т.е. мы взяли в 2 раза больше узлов (27/12)  и в два раза более мощный процессор.

Теперь о странном: Если поделить число транзакций на ядро, то окажется, что новый T3 дает нам 17,505, старый T2  дает 19,912. Что совсем выглядит пугающее, в соседней строчке в том же TPC-C  Power 7 дает 53,990 (хоть и на другом приложении, но транзакции то одни и те же ).

Не внушает оптимизма и тот факт, что из $47 млн $22 млн стоит Flash Array (суммы до скидок, просто для того для того показать соотношение).

Flash Array (или SSD диски), Infiniband, 10Gg Ethernet - все это на данный момент практически стандартные компоненты, предлагаются многими вендорами.

Я остался в полном непонимании от применимости результатов теста supercluster  в реальной жизни. Т.е. решив увеличить результат, просто увеличили объем железа, удвоив стоимость. Мне кажется что supercluster это все таки победа больше маркетинга, играющего коэффициентами в processor core table.   Что, конечно же, не умаляет заслуг инженеров, все это собравших  -)


 Пока я вижу только одну хорошую новость - большее число узлов RAC смогло дать прирост производительности, а значит RAC все таки работает -)






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

Fish and chips

Несколько мелких улучшений в работе администратора СУБД: установка клиента, GUI, настройка ssh  и т.п.  Буду благодарен если в комментариях сообщите о своих улучшениях для каждодневной работы



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

listeners in 11gR2 RAC

Посмотрев   в listener.ora в на узле 11gR2 я сильно удивился.

Теперь там дословно написано вот это:

LISTENER=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER))))            # line added by Agent
LISTENER_SCAN1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1))))                # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN1=ON                # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON              # line added by Agent

и появился файл endpoints_listener.ora

в котором написано вот это:

LISTENER_PROD01=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=prod01-vip)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.25)(PORT=1521)(IP=FIRST))))          # line added by Agent



Мне не удалось найти в документации что такое endpoints_listener, что значит  ENABLE_GLOBAL**.   Если кто-нибудь меня ткнет в документацию - будет замечательно. Понятно, что теперь пользователи подсоединяются на scan и потом уже на listener  конкретной ноды, понятно что теперь нужно ставить local_listener на LISTENER (теперь имена листенеров одинаковы на всех узлах) а remote_listener на listener-scan, т.е. мне кажется я понимаю как это работает - но я не понимаю что значат слова в конфигурационых файлах и зачем их два.

Появилось несколько новых параметров команды srvctl

prod01-> srvctl status scan
SCAN VIP scan1 is enabled
SCAN VIP scan1 is running on node prod01
prod01-> srvctl status listener
Listener LISTENER is enabled
Listener LISTENER is running on node(s): prod02,prod01
prod01-> srvctl status scan_listener
SCAN Listener LISTENER_SCAN1 is enabled
SCAN listener LISTENER_SCAN1 is running on node prod01


И наконец феерическое:


Bug 8595653
The endpoints_listener.ora file is used to get endpoints of the default listener when data files of Oracle Database 11g Release 1 or Oracle Database 10g Release 2 are created on a release 11.2 Oracle ASM disk group. However, when the listener is modified (such as changing a port number using Network Configuration Assistant), the endpoints_listener.ora file is not updated.

Что такое scan достаточно хорошо описано тут.  Но сегодня мне задали идиотский вопрос - если один из scan listener'ов упадет ведь клиенты будут попадать на него и получать tcp/ip timeout ? Оказывается нет, потому что scan живет поверх scan vip ip, его поднимут другие узлы и клиент быстро поймет что его там никто не ждет. Теперь на public interface любого узла кластера живет 3 адреса - vip, scan vip, public этого узла. Никто не отменял что в случае падения узла, на выживших появится vip с упавшего.  Объяснить почему у меня на интерфейсе 4 новых ip адреса я затруднился ограничившись техническим термином "так надо, главное ничего не менять".

Коротко - scan приляпали сверху ко всем,  что существовало в 10g/11gR1 постаравшись все сохранить. Обяъяснить зачем все это нужно стало практически нереально. Просто ничего не трогайте после установки  -)

Update 1: совсем просмотрел во что installer поставил параметры local/remote listener. Теперь их хотя бы стали ставить при установке (на самом деле деваться некуда), но вот почему не через tnsnames, опять загадка -)


SQL> show parameter local

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
local_listener                       string      (DESCRIPTION=(ADDRESS_LIST=(AD
                                                 DRESS=(PROTOCOL=TCP)(HOST=192.
                                                 168.1.31)(PORT=1521))))

SQL> show parameter remote

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
remote_dependencies_mode             string      TIMESTAMP
remote_listener                      string      rac-scan.us.oracle.com:1521


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

wget magic

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


Ниже приведена команда для загрузки дистрибутива Oracle Database:

wget --http-user=dsvolk --http-password=*** --load-cookies=cookies.txt http://download.oracle.com/otn/linux/oracle10g/10201/10201_database_linux32.zip


остается маленькая проблемка  - откуда взять cookies.txt ?

Если вы пользуетесь FireFox то для того чтобы получить файл cookies вам может пригодится вот такой plugin.


А чтобы скачать  патч мне не понадобились даже cookies (но все еще нужен  логин и пароль)

wget --http-user=dsvolk --http-password=***  --no-check-certificate --output-document=p6810189_10204_Linux-x86-64.zip "https://updates.oracle.com/Orion/Services/download/p6810189_10204_Linux-x86-64.zip?aru=10029612&patch_file=p6810189_10204_Linux-x86-64.zip"

Внимательные читатели заметят не только мой пароль на OTN, но и также что я скачивал 32-х битную версию БД с 64 битным патчем к ней -)




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

Сплайсинг в PL/SQL через синонимы - в мирных целях

В компьютерных вирусах широко применяется технология сплайсинга. Смысл которой заключается в подмене кода вызываемой функции, выполнив свои действия, вирус должен уметь выполнить оригинальный код функции.
Сплайсинг может быть использован в PL/SQL. Для этого лучше всего использовать локальные синонимы.

Внимание: автор и редакция ответственности за ваши действия НЕ несут. См. УК РФ - статья 273. Создание, использование и распространение вредоносных программ для ЭВМ. Материал предоставлен исключительно в ознакомительных целях, для защиты функционала, а также его расширения для существующих приложений.

Итак, предположим у нас есть приложение, которое не поддерживает RAC. В коде приложения формируется анонимный блок порождающий множество job-ов через пакет DBMS_JOB. Перед этим приложение формирует входные данные для заданий в виде набора заполненных таблиц. При переходе в кластер происходит страшное: задания распределяются по узлам кластера, и происходит большая конкуренция с разных узлов за одни и теже сегменты.
Средствами пакета DBMS_JOB мы не можем заставить задания выполняться на том же узле, на котором они были порождены: этот пакет не "понимает" сервисов, и вообще говоря начиная с 10g НЕ рекомендуется к использованию.

Ну хорошо: мы можем в параметре instance процедуры dbms_job.submit выставить номер текущего узла:
dbms_job.submit(instance => dbms_utility.current_instance,...  ...  ...
Но если код приложения недоступен ?
В этом случае на помощь приходит сплайсинг: мы можем создать свой пакет (например под названием dbms_job_rac) который полностью повторяет спецификацию пакета dbms_job, а тело пакета мы определим по своему - в данном случае вызывая методы из DBMS_JOB и выставляя параметр instance в номер текущего узла.
Затем остается только создать локальный синоним в схеме приложения:
create synonym dbms_job for dbms_job_rac; 

На этом все - теперь приложение не подозревая об этом, будет вызывать наш пакет!

Этот способ работает, даже если код PL/SQL приложения зашифрован или приложение проверяет его контрольную сумму - ведь PL/SQL код НЕ меняется. Перехват управления производится без модификации исходного кода!

Как-то можно противостоять этому красивому перехвату ?
Да - очень просто: указывать вызов системного пакета напрямую, а не через синоним:
SYS.dbms_job.submit( ...
Любой инструмент может быть как орудием созидания, так и орудием разрушения ... :-)


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

setup OpenFiler 2.3 as paravirtualized guest for Oracle VM 2.2

OpenFiler - бесплатный и весьма популярный продукт обеспечивающий вам доступ к вашим дискам по iSCSI, NFS, SAMBA. Я широко его использую как при построении демонстраций, так и как домашний NAS.  При попытке скачать его вы обнаружите что существует даже вариант "Xen domU Filesystem", однако радость будет не долгой - это не образ машины, а  действительно tar с файловой системой.  Есть также вариант называющийся ISO image, но поставить его в Oracle VM не получается, virt-install не находит нужных файлов.

Для того, чтобы превратить tar с файловой системой  в настоящий paravirtualized guest мне понадобились:
  • установленный Oracle VM (2.x), Linux ovm1.us.oracle.com 2.6.18-128.2.1.4.25.el5xen
  • Openfiler 2.3  tar.gz
  • Любая версия Oracle Linux (iso или DVD образ), Я использовал OEL 5 Update 3. 
  • Петр Фатьянов

Шаги который нам придется пройти

- сделать новую вирутальную машину
- распаковать в ней tar с Openfiler
- настроить grub


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

Oracle VM - install gcc

Достаточно часто при попытке использовать Oracle VM после успешной инсталляции оказывается, что необходимо скомпилировать драйвер сетевой карты или multipath драйвер. И драйвер находится на сайте производителя, вот только gcc не устанавливается по умолчанию с Oracle VM. Вот что нужно сделать чтобы исправить это недоразумение (для версии Oracle VM 2.2 ядро 2.6.18-128.2.1.4.25.el5xen):

1. Необходимо с установочного диска Oracle VM (директория Server) установить пакеты:

kernel-devel-2.6.18-128.2.1.4.25.el5.i686.rpm
kernel-ovs-devel-2.6.18-128.2.1.4.25.el5.i686.rpm

2. Далее необходимо скачать с http://public-yum.oracle.com/repo/EnterpriseLinux/EL5/3/base/i386

 compat-glibc-2.3.4-2.26.i386.rpm
 compat-glibc-headers-2.3.4-2.26.i386.rpm
 cpp-4.1.2-44.el5.i386.rpm
 gcc-4.1.2-44.el5.i386.rpm
 glibc-devel-2.5-34.i386.rpm
 glibc-headers-2.5-34.i386.rpm
 kernel-headers-2.6.18-128.el5.i386.rpm
 libgomp-4.3.2-7.el5.i386.rpm 

Обратите внимание, что в моем случае мне понадобились 32 битные версии rpm.


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

семинар RuOUG, 18 апреля

Пожалуйста обратите внимание, что на сайте RuOUG скоро появится -) объявление о следующем семинаре RuOUG, 18 апреля - RuOUG spring seminar. Одним из докладчиков с темой RAC/ASM будет Alex Gorbachev, Oracle ACE Director, Pythian Group. Что немаловажно, Alex будет рассказывать по-русски.  

Я постараюсь приготовить демонстрацию по  защите БД как от логических ошибок так и от аппаратных сбоев   с помощью Oracle Clusterware (бесплатный продукт). Пока деталей больше сообщить не могу, я работаю над демонстрацией/презентацией. 

Если вы хотите выступить свяжитесь пожалуйста со мной или Андреем Криушиным. Обратите внимание, чтобы принять участие нужно быть участником RuOUG (ссылка на регистрацию).

Update 1. Место проведения:  офисе Oracle, в Москве: Пресненская наб 10, (Краснопресненская наб 18), Москва-Сити, бизнес-центр "Башня на Набережной" , Блок С,  9 этаж. 

Update 2. Регистрация будет по email, детали я ожидаю увидеть на сайте RuOUG.


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

Изучаем английский вместе с Ларри

Меня что-то вдруг потянуло к английскому языку :^) В качестве упражнения по освоению английского рекомендую посмотреть свежее видео Ларри (от 2 декабря 2010), где он аннонсирует TPC World Record Database Performance on New SPARC Supercluster и можество всякой аппаратной всячины. Одно из существенных достоинств видео в том, что мышкой можно включить captions (субтитры) в левом верхнем углу и смотреть на полном экране. Если картинка не видна, то скорее всего у Вас не установлен Adobe Flash Player. На Mac и PC должно работать.

Мне нравится как Лари рассказывает. Он умеет говорить просто о сложном и он замечательный спикер, поэтому видео будет интересно тем, кто интересуется ведением презентаций и работой с аудиторией. Да, Стив Джобс круче. Но там уже религия.

Если Вам понравилось это упражнение, то можете также прослушать нетленную речь про Cloud Computing (см. малелький черный прямоугольник по ссылке), текст которой я написал в комментарии.

This is a Playlist Player.

P.S. Специально для Сергея Качановского (он же ranger) и др.: В этом видео нет никаких откровений про "практику продуктивных систем", про технические детали и про лечение ORA-600. Также, пост писался с постоянной мыслью о необходимости уменьшить уровень пафоса :^)

UPDATE: Технические детали опубликованы на сайте www.tpc.org


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

Happy New (Christmas, Year, Ramadan)

Респект проекту Wikipedia: "Это пятый по популярности сайт в мире. Другие четыре разработаны и содержатся при помощи многомиллиардных инвестиций, огромных штатов корпораций и неустанного маркетинга". Пожалуйста прочитайте это. Помните, что один человек все еще может победить корпорации и инвестиции. Я считаю эту победу гораздо важнее создания этих самых корпораций.

Теперь о достижениях за этот год:
  • В уходящем году нам с вами удавалось делать то, что не может делать маркетинг Oracle несмотря ни на какие вложения - интересные события. Спасибо вам, вы научили нас их делать.
  • Timur Akhmadeev (пользуясь случаем поздравляю !) получил номинацию oakie ! Один человек, без маркетинга и инвестиций....
  • И наконец этот блог ( я написал блог, потому что эту номинацию формально может получить только не сотрудник Oracle и получил номинацию формально я, но это формальность) получил номинацию Oracle ACE. Это удивительно, потому что этот блог ведется на русском языке, а номинацию присваивает Oracle HQ.
Поздравляю всех с наступающим новым годом ! В первую очередь я желаю всем администраторам, которым придется дежурить в эту новогоднюю ночь, чтобы эта смена прошла спокойно. Чтобы backup'ы закончились во время и без ошибок, чтобы место не закончилось ну и так далее. Вы знаете о чем я :))

PS
Я только что закончил почти 6-ти часовой maintenance Exadata half rack, высоконагруженную production систему. Мы перегружали cells, одну за другой, при этом БД оставалась on-line. Все что я вам говорил на презентациях, мне пришлось проделать руками. Я благодарен судьбе за этот шанс. Это был мой новогодний подарок :)


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

Домодедово - epic fail again

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




Кстати, мне понятно, почему это никому не надо, ведь оно у них и так работает, без сайта...


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

Turkcell: Миграция 250TB хранилища на Exadata

В Европе Exadata стоит в каждой подворотне. Я не мог понять почему в СНГ это редкость, пока не начал работать с английскими заказчиками -- сразу все стало ясно. В Европе умеют считать деньги -- в России не умеют не хотят :^)

Пока Москва стоит в пробках коллеги из Turkcell мигрировали на Exadata 250TB хранилище. Как Вы знаете, хранилища сотовых операторов впечатляют своими размерами, так как приходится хранить все звонки с целью анализа всевозможных тенденций. Качественное хранилище представляет большую ценность и существенное конкурентное преимущество для сотового оператора. Хранилища размером 0.5PB - 2PB не являются в этой индустрии чем-то из ряда вон выходящим. Но ханилище должно быстро работать и не быть при этом дороже самой сотовой компании :^) Так вот, наши турецкие друзья мигрировали одно из хранилищ такого класса на Exadata. На самом деле, случилось это давно, еще во времена Exadata V2, но техническая информация от администраторов появилась только в сентябре.

Я уважаю Турцию. Это технологически продвинутая страна. Ведь даже наши друзья турки понимают, что получается в 10 раз быстрее и одновременно на порядки дешевле по всем направлениям: на порядки дешевле железо, на порядки меньше места в серверной, на порядки меньше электроэнергии и охлаждения, отсутсвуют коммерческие файловые системы, volume-менеджеры и что там еще влияет на конечную стоимось владения? -- ну да -- инженеры. Storage administrator? О чем Вы? Такой профессии в Turkcell больше нету. Теперь обыкновенный DBA вполне нормально администрит эти несчастные 25 TB (это не очепятка, это просто технология HCC сжала данные в 10 раз).

МТСы, Билайны, Мегафоны! Где Вы? Уже Турция сделала это. Вдумайтесь хорошенько: Т-У-Р-Ц-И-Я.

Disclaimer

После миграции на Exadata ни один Storage инженер не пострадал. Turkcell заблаговременно отправил их на курсы MBA и теперь они трудятся на благо компании на top-менеджерских позициях :^)


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

Материалы Developer Day 18.11.2010

Материалы с семинара "Oracle Developer Day", который прошел 18.11.2010 в отеле "Катерина", можно скачать по этой ссылке (zip - 24Mb).

Отдельным постом будут ответы на вопросы, на которые мы не смогли с ходу ответить ... :-)


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

11g R2: Deferred Segment Creation

Предлагаю вашему вниманию свою небольшую презентацию посвященную новой возможности 11g R2 - отложенному созданию сегментов.
Вроде простая технология, но позволяет сделать интересные вещи ..




P.S. Контент входит в мою презентацию посвященную новым фичам 11g, которая будет читаться 18.11.2010 в "культовом" отеле Катерина (на фото).


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

Global Context work in RAC 11.2 !!!

Помимо массы архитектурных изменений, RAC в версии 11g Release 2 принес еще одну хорошую новость: теперь в RAC работают глобальные контексты (Global Application Context)
Вообще, глобальные контексты, как таковые, работали в RAC и до версии 11.2, но с одним "нехорошим" поведением: значения параметров не синхронизировались между узлами кластера. То есть: если значение параметра в контекст записала сессия на одном узле, а другая сессия пытается прочитать его на другом - значение параметра будет пустым!

Те, кто был на нашем семинаре RAC DD4D, хорошо это знают - я демонстрировал пример этой неприятной особенности контекстов в RAC.
Но теперь это в прошлом: начиная с 11.2 глобальные контексты полностью поддерживаются в RAC!

Как насчет pipe-ов в RAC?
Нет, нет: к сожалению, pipe-ы до сих пор в РАКе не работают.
- Но у нас есть обходное решение ! :-)
На семинаре оно тоже демонстрировалось.


node1-> sqlplus rscott/rtiger@orcl1

SQL*Plus: Release 11.2.0.1.0 Production on Tue Nov 16 18:23:45 2010

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


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

SQL> select dbms_utility.current_instance from dual;

CURRENT_INSTANCE
----------------
1

SQL> create context my_context using set_rac_context
accessed globally;

Context created.

SQL> create or replace procedure set_rac_context(v_pName in varchar2,
v_pValue in varchar2) is
begin
dbms_session.set_context('MY_CONTEXT',v_pName, v_pValue);
end;
/
show errors;

Procedure created.

No errors.

SQL> exec set_rac_context('Hello','World');

PL/SQL procedure successfully completed.

SQL> select sys_context('MY_CONTEXT','Hello') from dual;



SYS_CONTEXT('MY_CONTEXT','HELLO')
--------------------------------------------------------------------------------
World

SQL> conn rscott/rtiger@orcl2
Connected.
SQL> select dbms_utility.current_instance from dual;

CURRENT_INSTANCE
----------------
2

SQL> select sys_context('MY_CONTEXT','Hello') from dual;

SYS_CONTEXT('MY_CONTEXT','HELLO')
--------------------------------------------------------------------------------
World

SQL> --!!!


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

Oracle Technology Day in Samara

Презентацию с Oracle Technology Day in Samara можно скачать здесь.

P.S. Качественной фотографии Самары как-то не нашлось в нашем архиве :)


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

PL/SQL Inline Optimization in 11g

Недавно с Геннадием Сигалаевым мы обсуждали технологию inline-подстановки в хранимых PL/SQL-процедурах TimesTen. Но вообще говоря, эта технология появилась в Oracle Database 11g, и уже потом весь "движок" PL/SQL был портирован в TimesTen.

Inline-подстановка хорошо знакома программистам, которые пишут на C/C++ и Delphi.

Начиная с 11g теперь такая возможность есть и у PL/SQL-разработчиков.

Рассмотрим следующий пример кода:

create or replace procedure test

authid definer is

function getTrimLine(pLine in varchar2) return varchar2 is

begin
return '' trim(pLine) '';
end;

begin

for xIndex in 1..100

loop
dbms_output.put_line(getTrimLine(dbms_random.string('p',xIndex)));
end loop;

end;
Функция getTrimLine вызывается в теле цикла много раз, и мы несем заметные накладные расходы на вызов этой функции, передачу параметров и возврат результата. Хотелось бы сразу вставить тело функции в цикл не меняя PL/SQL-код. Для этого в 11g появилась директива PL/SQL-компилятора pragma inline.

Перед вызовом, который мы хотим заменить на тело вызываемой подпрограммы, нужно вставить эту директиву:
SQL> rem Включаем вывод предупреждений от PL/SQL-компилятора

SQL> alter session set plsql_warnings='ENABLE:ALL';

Session altered.

SQL> create or replace procedure test

authid definer is

function getTrimLine(pLine in varchar2) return varchar2 is

begin
return '' trim(pLine) '';
end;

begin

for xIndex in 1..100

loop
pragma inline(getTrimLine,YES);
dbms_output.put_line(getTrimLine(dbms_random.string('p',xIndex)));
end loop;

end;
/

show errors;

SP2-0804: Procedure created with compilation warnings

SQL> Errors for PROCEDURE TEST:

LINE/COL ERROR

-------- -----------------------------------------------------------------
4/3 PLW-06006: uncalled procedure "GETTRIMLINE" is removed.
13/5 PLW-06005: inlining of call of procedure 'GETTRIMLINE' was done
13/38 PLW-06004: inlining of call of procedure 'GETTRIMLINE' requested


SQL>
Как Вы видите, подстановка была успешно выполнена. Обратите внимание, что оптимизатор PL/SQL вообще удалил функцию getTrimLine, поскольку теперь она стала "мертвой", - то есть нигде не вызывается!

"Ну хорошо" - скажете Вы.
"Но ведь для того, чтобы этим воспользоваться, надо проанализировать весь код, и там, где это необходимо, вставить директиву pragma inline.
- Это все очень трудоемко !"

Не волнуйтесь - разработчки оптимизатора PL/SQL продумали это. :-)
В 11g появился новый уровень оптимизации PL/SQL - третий уровень, который собственно включает автоматическую inline-подстановку на фазе оптимизации кода. То есть оптимизатор сам принимает решение о необходимости подстановки того или иного вызова.
Проверим третий уровень на нашем примере (убираем из исходного кода директиву подстановки! ):
SQL> rem Включаем 3-ий уровень оптимизации PL/SQL

SQL> alter session set plsql_optimize_level=3;

Session altered.

SQL> create or replace procedure test

authid definer is

function getTrimLine(pLine in varchar2) return varchar2 is

begin
return '' trim(pLine) '';
end;

begin

for xIndex in 1..100

loop
dbms_output.put_line(getTrimLine(dbms_random.string('p',xIndex)));
end loop;

end;
/

show errors;

SP2-0804: Procedure created with compilation warnings

SQL> Errors for PROCEDURE TEST:

LINE/COL ERROR

-------- -----------------------------------------------------------------
4/3 PLW-06006: uncalled procedure "GETTRIMLINE" is removed.
12/5 PLW-06005: inlining of call of procedure 'GETTRIMLINE' was done


SQL>
Как видите оптимизатор "увидел", что вызов функции getTrimLine происходит в цикле и решил сделать ее подстановку вместо вызова.

Подстановка - очень полезная технология оптимизации ващего PL/SQL кода, для ее использования вам не надо модифицировать код приложения, а всего лишь нужно установить третий уровень оптимизации PL/SQL (plsql_optimize_level=3) и перекомпилировать свой код.


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

Life with Oracle Enterprise Linux Kernel

Как вы знаете, на последнем Oracle OpenWorld было анонсировано Unbreakable Enterprise Kernel. Сейчас это рекомендуемое ядро Linux для запуска ПО от Oracle: "The Unbreakable Enterprise Kernel is now the only Linux kernel Oracle recommends for use with Oracle software."

Ссылка на пресс релиз: Oracle Linux with Oracle's Unbreakable Enterprise Kernel

Рассмотрим процедуру установки этого ядра. Устанавливается оно только на Oracle Linux 5U5 x64 и RedHat Linux 5u5 x64.
Я использовал yum.

1) Устанавливаем операционную систему (я установил Oracle Enterprise Linux 5U5 x64), либо обновляем существующую (если у вас Enterprise Linux 5) до Update 5.

2) Настраиваем yum на публичный репозитарий Oracle: для этого нужно скопировать файл http://public-yum.oracle.com/public-yum-el5.repo в каталог /etc/yum.repos.d

3) В этом файле включаем репозитарий Oracle Linux channel: для этого в секции [ol5_u5_base] устанавливаем параметр enabled=1

4) Выполняем команду:

yum install oracle-linux

5) Перегружаемся.


Рис.1 Установка ядра Oracle Enterprise Kernel

В процессе перезагрузки я увидел магическое сообщение:
Enterprise Linux Enterprise Linux Server Release 5.5 (Carthage)
Kernel 2.6.32-100.0.19.el5 on an x86_64

Когда я тестировал установку ядра в виртуальной машине VMWare, меня приятно удивила процедура установки VMWare Tools в гостевую систему. Скрипт конфигурации VMWare Tools определил, что это это ядро ему неизвестно, и успешно скомпилировал и пересобрал их под это ядро.


Рис.2 Для сборки VMware Tools необходимы gcc, make и kernel-headers

После того как компилятор, утилита make и заголовки ядра были успешно обнаружены, я наблюдал магический процесс сборки VMWare Tools под ядро Oracle Enterprise Kernel.


Рис.3 Сборка VMWare Tools для ядра Enterprise Kernel


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

наши на oracle.com ! (продолжение)



В продолжение темы появления ребят из Yandex на oracle.com теперь можно посмотреть и другие видео.

Вымпелком

Vimpelcom Selects Oracle and Sun Products
Vimpelcom Relies on Oracle
Oracle Database: Highly Reliable, Easy to Manage

Еврохим

Eurochem Consolidates Information with Oracle
Eurochem Choses Oracle for Tailor-made Solutions
Oracle BI Turns Eurochem into a Market Leader
Oracle Reduces the Reporting Process for EuroChem
Eurochem on Benefits of Oracle-Sun Acquisition

М-Видео

M-Video Uses Oracle Siebel to Satisfy Customers
Siebel Loyalty Is Best Fit for M-Video Requirements
Oracle Siebel Loyalty Was the Perfect Choice
Siebel Loyalty Means More Frequent Purchases
Siebel Loyalty is M-Video’s Primary CRM System
Siebel Lets M-Video Builds Customer Engagement
M-Video Deploys Siebel in Alfabank Project

Итера

Itera Moves from Excel to Oracle
Itera Consolidates Financial Reporting with Oracle
Itera Creates Parallel Reporting System on Oracle
Itera Optimizes Data Management with Oracle

Интегра

Integra Relies on Oracle's Hyperion Essbase for Reliable Information
Hyperion Essbase Provides Integra with a Single Source of Truth

ВТБ24

VTB 24 Chooses Oracle Database -- the Market Standard
Oracle Siebel Helps VTB 24 Show Profit Despite the Financial Crisis

...и еще раз Яндекс !

Yandex Becomes an Early Adopter of Oracle Products
Oracle Meets Yandex’s Needs for Reliability and Configurability
Oracle Helps Yandex Provide Internet Services 24/7


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

Virtualization in Real Life

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

В качестве гипервизора я использую OracleVM for x86, хотя все идеи применимы к любой системе виртуализации.

Итак, вот ситуация из жизни реального заказчика из сегмента middle-бизнеса (фильм основан на реальных событиях, - любые совпадения абсолютно случайны :-) ):

- есть два приложения, которые сейчас работают каждое на своем сервере;
- первое приложение представляет собой систему учета персонала, этот софт разработан независимым поставщиком, работает под управлением Oracle Database версии 10.2 на Linux ;
- второе приложение было разработано собственными силами: использутся Oracle Database 11.2, Oracle HTTP Server 11.1 и APEX (все на платформе Windows x64), эта система автоматизирует вспомогательные бизнес-процессы в компании;
- от этих двух СУБД не требуется экстремальной производительности, и они не являются business-critical (допустимое время простоя измеряется парой часов).

Пришло время менять оборудование - серверы морально и физически устарели. Возникла идея разместить эти две СУБД на одном сервере с помощью виртуальных машин (производительности обычного 2-х сокетного сервера на последних процессорах Intel для этих задач вполне достаточно).

Только факты:
На сервере установлено 4 жестких диска:
- два SAS диска по 300 Гб (15000 об/м)
- два SATA диска по 2 Тб (7200 об/м)

Оперативная память - 16Гб.
Два сетевых интерфейса 1Гб/сек.

Каждая пара дисков была объединена в зеркало, таким образом имеется 300 Гб пространства на быстрых дисках и 2 Тб - на медленных.

Вообщем обычный и недорогой 2-х сокетный сервер начального уровня.


На первом этапе было спланирована структура виртуальных машин (каждая ВМ состоит из 4-х дисков):

Образ диска ВМ с операционной системой (файл system.img);
Образ диска ВМ с выполняемыми файлами (файл orahome.img);
Образ диска ВМ с файлами данных СУБД (размещен напрямую на физическом разделе быстрого жесткого диска);
Образ диска ВМ с файлами flash recovery area и архивными логами (размещен напрямую на физическом разделе медленного жесткого диска).

На сервер был установлен Oracle VM 2.2.1.

Быстрый жесткий диск был разбит на разделы (partitions) следующим образом:
1-ый раздел: 20Гб - для операционной системы Oracle VM (отформатирован);
2-ый раздел: 70Гб - (НЕ форматирован);
3-ый раздел: 70Гб - (НЕ форматирован);
4-ый раздел: 70Гб - (НЕ форматирован);
5-ый раздел: 70Гб - (НЕ форматирован).

Что касается медленного жесткого диска, то он был разбит вот так:
1-ый раздел: 750Гб - для хранения файлов образов ВМ (отформатирован);
2-ый раздел: 250Гб - (НЕ форматирован);
3-ый раздел: 250Гб - (НЕ форматирован);
4-ый раздел: 250Гб - (НЕ форматирован);
5-ый раздел: 250Гб - (НЕ форматирован);
6-ый раздел: 250Гб - (НЕ форматирован).


Думаю идея вам понятна: данные, к которым не требуется быстрого доступа, размещаются на дешевых и медленных SATA-дисках, данные к которым нужен быстрый доступ (файлы данных СУБД) - на дорогих и быстрых SAS-дисках. При этом, для увеличения скорости ввода-вывода в вмртуальном окружении, гостевая машина работает с данными необходимыми СУБД напрямую, - виртуальный диск напрямую размещен на физическом разделе быстрого жесткого диска).

Вот строки из конфигурационного файла гостевой машины:

disk = [
'file:' + root_dir + '/system.img,hda,w',
'file:' + root_dir + '/orahome.img,hdb,w',
'phy:/dev/sda5,hdc,w!',
'phy:/dev/sdb5,hdd,w!'
]

В свою очередь, внутри виртуальной машины, каждый диск, используемый напрямую, включен в ASM-группу. На каждой виртуальной машине создано две ASM-группы:
- ORADATA (монтирует раздел с быстрого диска);
- ORAFRA (монтирует раздел с медленного диска).

Использование ASM позволяет нам еще больше увеличить производительность ввода-вывода, поскольку устраняется уровень файловой системы.

С какой целью была сделана такая странная разбика дисков на разделы?

Если по ходу эксплуатации понадобится увеличение дискового пространства для файлов СУБД, то будет производится простое добавление свободного раздела в виртуальную машину с последующим добавленим нового виртуального диска в соотвествующую ASM-группу (oradata или orafra). Более того, если позволит мощность сервера, то можно легко запустить третью виртуальную машину дав ей свободные разделы. В результате, появляется гибкость в управлении дисками для виртуальных машин.

Рис. 1 Схема отображения физических дисков в виртуальные


После определения стратегии перехода в виртуализированное окружение, были созданы эталонные виртуальные машины. На первую установлена ОС Linux (OEL 5U5 x86) на вторую MS Windows x64. Установлено необходимое ПО Oracle. Произведен патчинг и настройка всего софта. Полученные "золотые" образы ВМ были после этого немедлено забэкапированы...
Собственно, дальше все как обычно: перенос данных СУБД с старых машин на виртуальные и переключение соответствующих приложений на два новых "сервера".

Рис. 2 Схема запуска виртуальных машин на аппаратном сервере

По признанию самих пользователей, - приложения стали работать быстрее ! :-)
Конечно в этом заслуга новых интеловских процессоров Xeon Nehalem.

Резервные копии ВМ также лежат на втором сервере (используется для тестирования и разработки), чтобы в случае сбоя основного сервера запустить виртуальные машины на резервном.

Что в итоге дала виртуализация:
- консолидация и уменьшение затрат на железо (вместо двух серверов закуплен тольно один);
- необычайная легкость создания тестового и development окружений: простым копированием образа ВМ на другой сервер мгновенно получаем готовое тестовое окружение в точности соотвествующее production-системе (копирование сырых разделов производится командой dd);
- обычные методы резервирования БД (копирование, экспорт-импорт) дополняются возможностью копированием целиком образа жесткого диска с файлами данных;
- бэкапировани ОС и бмнарных файлов теперь производится простым резервированием файлов образов system.img или oracle_home.img
- частичное бэкапирование образа при патчинге (если менялся только бинарный код, то резервировать нужно только виртуальные диски в файлах system.img и oracle_home.img, если менялись только данные - то наоборот: бэкапировать нужно только виртуальные диски с данными);
- если в будущем производительности сервера будет недостаточно для запуска 2-х виртуальных машин, то можно будет практически мгновенно "отвезти" одну гостевую систему на другой сервер;
- можно задавать приоритеты и распределение нагрузки между виртуальными машинами (если одна из них выполняет более приоритетную задачу);
- если в будущем все-таки понадобится обеспечить отказоустойчивость, можно будет ее обеспечить с помошью Live Migration;
- каждую виртуальную машину можно останавливать-запускать по отдельности (по расписанию).

После того, как я поглядел и "потрогал" все это, у меня родились какие-то новые ощущения.
А у вас ?
:-)


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