RAC для разработчиков, 14-15 февраля 2008 года

Хочу дать обновленную информацию о нашем семинаре "RAC для разработчиков" который будет проходить 14-15 февраля 2008 года в Москве. Я уже писал о нем. Теперь Вы должны были получить приглашение по email на данный семинар. Если Вы его не получили, это не страшно, можете его прочитать сейчас. Если Вы уже получили приглашение, то чуть позже Вам придет и ссылка на регистрацию. Если приглашения нет, обращайте пожалуйста к Сергею Данилову (sergey.danilov), не забудьте представить свою компанию :)


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



"- Христианская религия основана не неверном толковании: ...При переводе с иврита на греческий, слово, которое значит молодая женщина перевели как девственница. Ошибиться было легко - там отличается только одна буква. Из этой ошибки выросло пророчество...Внимание людей привлекло слово девственница. Не каждый день девственница беременеет и рожает детей. Но дайте этому пророчеству настояться...
- И что ты уже хочешь этим сказать ?
- Я таки хочу сказать, что если что-то и написано, это не значит что это так на самом деле и есть. Люди верят. Это их надежда, и какая разница правда это или вымысел."
Фильм "Snatch", в переводе Гоблина.


С выходом 9i и Real Application Cluster в 2001 году появился маркетинговый лозунг, повторенный неоднократно и на самом высоком уровне:


"With competitors IBM and Microsoft ..a main distinction of Oracle's grid technology is its ability to run applications more efficiently..and you don't have to change a single line of code within the applications"


В технических статьях в районе 2004 года появляются фразы:

Oracle RAC requires no changes to existing database applications...Oracle RAC also requires no changes to existing database schemas. Data does not have to be partitioned or distributed across nodes in a RAC database..


И окончательно, начинают говорить с разных трибун только:

"you don't have to change a single line of code"


Из документации по 9i R2 "Real Application Clusters Deployment and Performance Guide" пропадают разделы про необходимость партиционирования. Очевидно, для того чтобы не вводить в заблуждение людей - ведь обещали, что не надо ничего менять.

Как мы видим, в этом случае внимание людей привлекла часть "change а single line of code", и все забыли контекст, в котором это было сказано первый раз.

Однако, мне очень нравиться вот эта фраза:

" There is a difference between an application working without changes in a cluster and actually scaling without changes !
"

И действительно, из собственного опыта видно, что можно перенести приложение в кластер, ничего не поменяв в приложении и оно заработает. И это правда. И это здорово ! Реальное огромное достижение !

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

Так вот, если Вы хотите узнать как сделать так, чтобы Ваше приложение в кластере было масштабируемым, умело использовать возможности кластера, когда и как нужно партиционировать схему приходите на наш семинар !

PS

Для тех кто все таки не понял, зачем нужно что-то знать про кластер, небольшой анонс:

- я постараюсь показать вам ситуацию, когда план запроса меняется в приложении которое работает в кластере (при всех прочих равных параметрах с single instance, включая статистику, параметры экземпляра и прочее прочее) .


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

oprocd mystic

Согласно документации на 10gR2, oprocd - A UNIX-based process monitor for a cluster. Note that this process will only appear on platforms that do not use vendor clusterware with Oracle Clusterware.

Process Monitor Daemon (OPROCD)—This process is locked in memory to monitor the cluster and provide I/O fencing. OPROCD performs its check, stops running, and if the wake up is beyond the expected time, then OPROCD resets the processor and reboots the node.


Так вот он есть только в 11g на Linux. В 10g он упоминается только в init скриптах. Кто нибудь знает почему это так случилось ?


Linux rac1.ru.oracle.com 2.6.18-8.el5PAE
Oracle Release 11.1.0.6.0
file $ORACLE_HOME/bin/oracle ELF 32-bit


ls -l /u01/app/oracle/product/11.1.0/crs_1/bin/oprocd
-rwxr-x--x 1 oracle oinstall 87641 Jul 27 03:06 /u01/app/oracle/product/11.1.0/crs_1/bin/oprocd



Linux rac1.ru.oracle.com 2.6.18-53.el5
Oracle Release 10.2.0.3
file $ORACLE_HOME/bin/oracle - ELF 64-bit


нет файла oprocd !


Linux rac1.us.oracle.com 2.6.9-55.0.0.0.2
Oracle Release 10.2.0.3.0
$file /u01/app/oracle/product/10.2.0/db_1/bin/oracle ELF 32-bit LSB executable

нет файла oprocd !


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

Clusterware, Linux 5 and raw devices

Хочу вернуться к теме конфигурирования в Oracle EL 5 и RHEL 5 raw устройств.
Конечно, в первую очередь рекомендуется размещать на raw ocr и voting файлы. Для файлов БД у нас есть asmlib.

Почему raw - потому, что обращение к этим файлам не идет через filesystem cache, что надежнее и быстрее (для этого типа файлов).

Есть правда другой вариант - можно открывать файлы с флагом O_DIRECT - что, кажется также позволяет избежать доступа через filesystem cache.

Мне не удалось понять, зачем в 5 версии Linux Red Hat убрал поддержку raw. Но это и не важно. Важно что судя по многочисленным источникам в интернете в clusterware 10gR2 существует баг (см. также Note:401132.1), из-за которого файлы на блочных устройствах не открываются с флагом O_DIRECT.

Предлагаемый workaround такой:

Как пользователь root на всех узлах
mkdir /dev/raw

Для VOTING файла (/dev/sdd1)

добавьте строчки в файл (создайте файл) /etc/udev/rules.d/61-local-raw.rules
ACTION=="add", KERNEL=="sdd1", RUN+="/bin/raw /dev/raw/raw1 %N"
KERNEL=="raw1", OWNER=”oracle”, GROUP="oinstall", MODE="660"


Для OCR файла (/dev/sde1)

добавьте строчки в файл /etc/udev/rules.d/61-local-raw.rules
ACTION=="add", KERNEL=="sde1", RUN+="/bin/raw /dev/raw/raw2 %N" KERNEL=="raw2", GROUP="oinstall", MODE="640"


Конечно, хотелось бы проверить информацию о вышеупомянутом баге. Но я не нашел простого способа :( Решил посмотреть как отрываются raw устройства:

uname -a
Linux rac1.ru.oracle.com 2.6.18-53.el5 #1 SMP


lsof /dev/raw/raw2

COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
evmd.bin 3737 oracle 5r CHR 162,2 7078 /dev/raw/raw2
evmd.bin 3737 oracle 7r CHR 162,2 7078 /dev/raw/raw2
crsd.bin 3875 root 6r CHR 162,2 7078 /dev/raw/raw2
crsd.bin 3875 root 10r CHR 162,2 7078 /dev/raw/raw2
crsd.bin 3875 root 12u CHR 162,2 7078 /dev/raw/raw2
oclsomon. 4112 oracle 4r CHR 162,2 7078 /dev/raw/raw2
ocssd.bin 4229 oracle 4r CHR 162,2 7078 /dev/raw/raw2

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

Интересную информацию поставляет /proc//fd/ но флагов нет и там.

И вот тут надо либо использовать strace, либо аналог команды Solaris pfiles. С помощью strace можно что-то понять только если процесс открывает и закрывает файл. А если он держит его открытым - то фиг. С помощью

strace -e trace=open,read,write -p

ничего выяснить мне не удалось. pfiles под Linux нет. Оказалось правда, что Eugene Teo написал утилиту pfiles, но на systemtap. Но справиться с ее установкой мне , увы не удалось.




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

Oracle Upgrade companion

Metalink Note:466181.1 ведет на прекрасную страничку посвещенную миграции с 9i на 10gR2.
Огромное кол-во информации, которую надо собирать по документации собрано вместе, в удобном интерфейсе.
Мгновенно, можно например получить информацию, что при сборе статистике теперь для method_opt вместо FOR ALL COLUMNS SIZE 1 в 9i теперь FOR ALL COLUMNS SIZE AUTO.

Есть даже пошаговое описание процесса миграции !

Наставиваю, чтобы Вы просмотрели эту информацию если Вы мигрируете на 10gR2.
Экономия времени для Вас будет огромная.


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

Itanium Servers With Montecito Processors

Спустя год (если я не ошибаюсь) после выпуска процессоров Montecito публика обнаружила старую историю - Oracle Universal Installer падает. То же самое было когда вышел Pentium 4 - слишком старая идет java с OUI.

Формальный ответ что делать Note:400227.1
Как догадаться что у Вас Montecito: Note:401332.1

Но я бы сначала попробовал бы просто:

- install SUN SDK1.4.2_11 JVM (or higher ex: 1.5.x)
- now invoke the OUI using following command
./runInstaller -–jreLoc /jre


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

Семинар Oracle RAC для разработчиков

14-15 февраля уже 2008 года в Москве будет проводится двухдневный семинар для крупных заказчиков (Large Customers) и системных интеграторов (SI). Семинар будет интересен администраторам, разработчикам, системным архитекторам. Будут (я надеюсь) приглашенные RAC гуру. Мы постараемся сделать как можно больше демонстраций.

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

Если Вы хотите участвовать, но ваша компания не проходит по категории (ISV, SI) можно попробовать обратится к Сергею Данилову (sergey.danilov)

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

Update1: Сергей попросил уточнить, что это мероприятия для крупных заказчиков и системных интеграторов. Для ISV будет отдельное мероприятие, чуть позже.

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


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

ISV migration center

В Москве прошло офицальное открытие ISV migration center. Это значит, что ISV партнеры получили возможность протестировать свои приложения на настоящем железе: 5 узловой RAC кластер + 5 узловой IAS кластер. Операционную систему (Linux, Windows) Вы сможете выбрать сами.

Семинары в ISV MC будет читать Игорь Мельников (igor.melnikov).

You are welcome !

Чтобы получить возможность тестирования Вы (если Вы ISV партнер конечно) должны обращаться в Московское представительство Oracle к Константину Новикову и Дмитрию Никитову.


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

Export is desupported in 11g

Оригинальнальная утилиты exp не будет поддерживаться в 11g. Официальная информация в Note:345187.1
Также из документации по 11g : "Original export is desupported for general use as of Oracle Database 11g".


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

Политика лицензирования SE

Оказалось, что политика лицензирования семейства (Standard Edition , SE*) не очень простая.

В частности, продолжают задавать вопросы, а можно ли использовать SE, если в сервер можно поставить 8 сокетов,
но поставлено то сейчас всего 4 ?

Ответ: нет, нельзя. В Software Investment Guide явно упоминается термин maximum capacity of.
Мне кажется, что лучше запомнить эту логику можно, если процесс лицензирования представить себе как двухступенчатый.

1. Убеждаемся, что на данный сервер мы может поставить SE, т.е. число сокетов <= 4 и если можно, то
2. Оплачиваем только установленные процессоры в выше приведенном примере, необходимо оплатить 4 сокета для Enterprise Edition. Если у Вас сервер с 4 сокетами, а установлено всего 2, то необходимо оплатить 2 сокета или (о ужас !) купить минимум 5 пользовательских лицензий. То же самое верно и для RAC для SE - кол-во сокетов в кластере не должно превышать 4, и минимум (ужас, ужас) - все те же минимум 5 пользователей, на весь
кластер. И конечно же не мечтайте разбить Ваш большой SUN на домены и наставить в них SE - это явно запрещено в SIG. Возможно путаница идет из-за того, что публичный прайс-лист перестал содержать дополнительные сноски, теперь необходимо читать SIG, что конечно не все делают.

А если внимательно прочитать SIG, то Вы еще обнаружите, что для RAC на SE Вы обязаны использовать ASM и только Oracle Clusterware (вендорское кластерное ПО не поддерживается)

PS.
Может быть Вам будет интересен и Oracle VM Support Price List ?




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

Oracle RAC 10gR2 for IBM AIX

Теперь в Москве, в IBM Innovation Center'е есть стенд с 10gRAC on IBM AIX 5L.
4 ноды (являющиеся партициями p570), по 2 CPU, по 8 Gb памяти, дискового пространства очень много :)

Если необходимо, этот стенд можно превратить в 11gRAC.

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


Установка 10gR2 на IBM AIX показалось мне достаточно сложной. Серьезное время занимает подготовка, а точнее выбор метода установки:

- over HCMP
- over GPFS
- use only ASM

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

В результате я выбрал самый простой (и надежный путь) - Clusterware размещается на hdisk'ах, данные на ASM (и GPFS по желанию).

В установке мне очень помогли два документа:

- COOKBOOK-V2.0-10gRACR2-ASM-AIX5L-SAN_Storage.pdf
- COOKBOOK-V2.0-10gRACR2-GPFS-AIX5L-SAN_Storage.pdf

Оба содержат слова Quick Installation Guide и по 240 страниц текста :) Написаны сотрудниками Oracle IBM Joint Solution Center в Монпелье. Крайне рекомендую к прочтению при подготовке.

Но следовать им слепо также нельзя - каждый шаг я проверял по:

Oracle® Database
Oracle Clusterware and Oracle Real Application Clusters
Installation Guide
10g Release 2 (10.2) for AIX
B14201-04

В результате, обнаружил пока непонятную для меня вещь:

Если удалить PVID с диска (как настаивают вышеприведенные COOKBOOK), Clusterware не хочет работать с таким диском. Т.е. не проходит root.sh который должен разместить OCR диск. Чтение truss погрузило в мысли о бренности существования, но ничего не дало.

После чтения документации было выполнено

chdev -l hdisk… -a pv=yes


и сlusterware установилось. А вот для ASM дисков PVID не нужны, их действительно рекомендуется снести, тем более что ASM их потом переписывает сама.

К сожалению ни runInstaller, ни cluvfy не проверяют окружение так подробно, как бы хотелось. Так они не смогли проверить версии XlC пакетов

xlC.aix50.rte 7.0.0.4 <---- Ensure versions are not lower
xlC.rte 7.0.0.1 <--- Ensure versions are not lower


что привело к результате к

0509-136 Symbol _Getnumpunct__FPCc (number 105) is not exported from
dependent module /usr/lib/libC.a[ansi_64.o].

Конечно после установки более новой версии все закончилось благополучно.

Моя версия руководства по установке будет чуть позже, но она конечно не такая серьезная как вышеприведенные cookbook.


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

FCF versus TAF

В данной заметке речь идет про Fast Connection Fail-over (FCF) и Transparent Application Failover (TAF), а конкретно чем различаются эти два механизма и какой предпочесть, если есть такая возможность.

Ниже авторский перевод из замечательной книги Oracle Database Programming using Java and Web Services. Курсив мой.

Application-Level Connection Retries. FCF предоставляет приложению возможность решения о повторе попытки соединения в случае сбоя (т.е. можно, получив сообщение, решить, стоит ли выполнять автоматическое переподключение или нет. Например если нельзя восстановить контекст сессии, то стоит сразу выдать ошибку). TAF выполняет переподключение автоматически на уровне OCI/NET без контроля со стороны приложения.

Integration with Connection Cache
. FCF интегрирован с Implicit Connection Cache. Разорванные соединения автоматически инвалидируются (и таким образом не используются, а создаются новые соединения). TAF работает на уровне отдельных соединений и не уведомляет cache о произошедшем сбое.

Event Based. FCF работает поверх ONS, таким образом произошедшие в кластере события быстрее получают как активные, так и неактивные сессии. С другой стороны, TAF базируется на сетевых вызовах (таки образом неактивные соединения не получают сообщения об ошибке пока не сделают вызов). TAF не интегрирован с JDBC connection cache и не обеспечивает балансировку нагрузки во время выполнения.

Load Balancing. FCF и балансировка нагрузки времени выполнения поддерживают событие UP для сервиса, распределяя нагрузку на вновь введеные узлы для и обеспечивая балансировку нагрузки во время выполнения.

Transaction management. FCF автоматически откатывает необходимые транзакции. TAF же требует от приложения явной операции rollback.


Настройка. Для корректной работы TAF следует произвести специфические настройки в ОС, настроить TCP timeout (см. например здесь). FCF одинаково работает в любой среде.



Важно знать, что не следует одновременно конфигурировать оба механизма

"
Note: Do not configure Transparent Application Failover (TAF) with
Fast Connection Failover for JDBC thick clients as TAF processing will
interfere with FAN ONS processing
"

Для дальнейшего чтения всем рекомендую metalink Note:334471.1
и естественно пост автора рекомендуемой книжки.


И только для "настоящих пацанов" рекомендую раздел HA event notification из OCI Programming Advanced Topics, которая рассказыват, как в OCI, работая через TAF получить таки доступ к событиям кластера с помощью подписки на Advanced Queue в отдельном соединении


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

Опрос - Используете ли Вы виртуализацию ?

Хочу Выразить свою признательность всем проголосовавшим.
Из-за небольшого кол-ва голосовавших стоит наверно оченивать результаты не как "используется ли виртуализация или нет ?" а как "если используется то какая"
С большим отрывом победила Vmware - что вполне справедливо. на мой взгляд.

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


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