14 лет назад, в июне 2007го, Алекс Горбачев, в то время еще CTO Pythian, основал BAAG Party — Battle Against Any Guess — инициативу против любых гаданий при решении технических проблем. Уже тогда это становилось большой проблемой: все чаще на форумах и публичных мейл-листах на вопросы о специфических проблемах, вместо запроса необходимых технических деталей, приходили ответы в духе «а попробуйте то, если не поможет — попробуйте это», «я когда-то видел похожее, мне помогло XXX», «а мне ХХХ не помогло, зато помогло YYY». Рождались различные мифы и порождали еще большее новых, оттуда и всякое «шаманство» и «танцы с бубном» (частично и «работает — не трожь»). Все это вполне объяснимо: сложность ПО и железа экспоненциально увеличивается; количество недостоверной информации а-ля «for dummies» в сети растет как снежный ком; IT отрасли нужно все больше и больше работников на «конвейеры» — «бери больше, кидай дальше». Появление #BAAG тогда было абсолютно закономерным и неотвратимым, но насколько она актуальна сейчас? Почему после ее расцвета и популярности в течение нескольких лет, она в забвении? Что и когда должно появиться ей на замену на данный период развития IT?
Oracle ACE, performance tuning and troubleshooting
SQLPlus: Reading traces and incident files
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/f67/ca3/92f/f67ca392fa86e217cdb332c9630a751b.png)
@tracefile_read_last_by_mask filemask [regexp] [ignore_regexp]
– finds last trace by filemask
and filters rows by regexp
and filters out rows by ignore_regexp
:
Oracle diagnostic events — Cheat sheet
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/dee/221/be3/dee221be3f066cbb0ed28c72a03b694c.png)
Oracle diagnostic events - это очень мощное средство, но, к сожалению, слабо документированное, поэтому я решил перечислить и свести воедино несколько неизвестных или малоизвестных способов его использования.
Единственная его документация - это очень краткая встроенная документация, доступная по команде oradebug doc
в SQL*Plus, и она отсутствует в официальной документации. Вы можете встретить только отрывки из нее в разных блогах, что не очень удобно, поэтому я скомпилировал ее полностью: http://orasql.org/files/events/
Современный синтаксис и несколько простых примеров приведены в oradebug doc event. Я их здесь приводить не буду и начну сразу с примеров.
Troubleshooting в Oracle
Этот пост навеян статьями Часть 1. Логирование событий в Oracle PL/SQL и Часть 2. Идентификация событий происходящих в Oracle PL/SQL, в первую очередь, как специалисту по performance tuning и troubleshooting, хотелось бы прокомментировать некоторые нюансы.
Oracle: Deterministic functions, result_cache and operators
После перевода статьи Oracle: разница между deterministic и result_cache от Steven Feuerstein, хотелось бы дополнить ее действительно важными деталями их устройства. У меня есть серия статей на эти темы, но тут я хотел бы просто все резюмировать и оставить самое важное.
The Power of Oracle SQL
В общем, ссылки на саму книгу.
И на обсуждение самой книги с автором.
Performance tuning and troubleshooting баз данных в наши дни
И сейчас, во времена когда активно растет количество архитекторов, тестеров и DevOps инженеров, а разработчики Java Core оптимизируют даже работу со строками, медленно, но верно наступает пора и оптимизаторов баз данных. СУБД с каждым релизом становятся настолько умнее и сложнее, что изучение как документированных, так и недокументированных нюансов и оптимизаций требует огромного количества времени. Ежемесячно выходит огромное количество статей и проводятся крупные конференции посвященные Oracle. Простите за банальную аналогию, но в этой ситуации, когда администраторы баз данных становятся подобными пилотам самолетов с бесчисленным количеством тумблеров, кнопочек, лампочек и экранов, уже неприлично нагружать их еще и тонкостями оптимизации производительности.
Некоторые советы при работе с PLSQL
В этой части обсудим:
Микрозаметка: Итераторы/Генерация диапазонов дат, чисел и тд
Хотя задача того топика очень типична и вполне спокойно решалась обычным проходом с case или if:
SELECT
sum(
CASE
when t.`start_date`<'2010-02-01' and t.end_date>'2010-01-01' then 1
else 0
end
)
AS jan,
sum(
CASE
when t.`start_date`<'2010-03-01' and t.end_date>'2010-02-01' then 1
else 0
end
)
AS feb,
...
FROM test t
Но я счел нужным написать о некоторых возможностях избежать излишнюю ручную работу. Например, если нам необходимо бы было агрегировать не за год и не за два, а, скажем, за последние 5 лет помесячно. Согласитесь, в таком случае 60 строк c if'ами было бы как минимум тяжело читать.
Секционирование. Автоматическое добавление секций
В версиях до 11g необходимо периодически вручную либо заранее добавлять секции, либо разбивать секцию по умолчанию. То есть постоянно необходимо отслеживать состояние таких таблиц. В данной статье я поделюсь своими решениями для автоматизации таких задач секционирования.
Сначала приведу пример для 11g:
- create table res (
- res_id number not null,
- res_date date,
- hotel_id number(3),
- guest_id number
- )
- partition by range (res_id)
- interval (100) store in (users)
- (
- partition p1 values less than (101)
- );
Этот скрипт создает секцию p1 для записей, значение столбца res_id которых находится в диапазоне 1-100. Когда вставляются записи со значением столбца res_id меньшим 101, они помещаются в секцию p1, а когда в новой записи значение этого столбца равно или больше 101, сервер Oracle Database 11g создает новую секцию, имя которой генерируется системой. Подробнее с этим примером и прочими новыми схемами секционирования вы можете познакомиться в переводе статьи Арупа Нанды в русском издании Oracle Magazine.
Рассмотренные ниже решения можно применить и в других СУБД, не поддерживающих автоматическое добавление секций
Все решения к задачке к Дню Программиста
![](https://habr.com/images/px.gif#%3D%22http%3A%2F%2Fimg215.imageshack.us%2Fimg215%2F2482%2Fqsmall.png%22)
Я решил объединить все отправленные решения к задаче «С Днем Программиста» в одном топике. При появлении новых решений топик будет обновляться. За понравившиеся решения предлагаю кормить плюсиками авторов, а хабрачитателей награждать инвайтами.
Код на картинке, кстати, тоже решает эту задачу :)
C Днем Программиста!
''=~( '(?{' .('`' |'%') .('[' ^'-')
.('`' |'!') .('`' |',') .'"'. '\\$'
.'==' .('[' ^'+') .('`' |'/') .('['
^'+') .'||' .(';' &'=') .(';' &'=')
.';-' .'-'. '\\$' .'=;' .('[' ^'(')
.('[' ^'.') .('`' |'"') .('!' ^'+')
.'_\\{' .'(\\$' .';=('. '\\$=|' ."\|".( '`'^'.'
).(('`')| '/').').' .'\\"'.+( '{'^'['). ('`'|'"') .('`'|'/'
).('['^'/') .('['^'/'). ('`'|',').( '`'|('%')). '\\".\\"'.( '['^('(')).
'\\"'.('['^ '#').'!!--' .'\\$=.\\"' .('{'^'['). ('`'|'/').( '`'|"\&").(
'{'^"\[").( '`'|"\"").( '`'|"\%").( '`'|"\%").( '['^(')')). '\\").\\"'.
('{'^'[').( '`'|"\/").( '`'|"\.").( '{'^"\[").( '['^"\/").( '`'|"\(").(
'`'|"\%").( '{'^"\[").( '['^"\,").( '`'|"\!").( '`'|"\,").( '`'|(',')).
'\\"\\}'.+( '['^"\+").( '['^"\)").( '`'|"\)").( '`'|"\.").( '['^('/')).
'+_,\\",'.( '{'^('[')). ('\\$;!').( '!'^"\+").( '{'^"\/").( '`'|"\!").(
'`'|"\+").( '`'|"\%").( '{'^"\[").( '`'|"\/").( '`'|"\.").( '`'|"\%").(
'{'^"\[").( '`'|"\$").( '`'|"\/").( '['^"\,").( '`'|('.')). ','.(('{')^
'[').("\["^ '+').("\`"| '!').("\["^ '(').("\["^ '(').("\{"^ '[').("\`"|
')').("\["^ '/').("\{"^ '[').("\`"| '!').("\["^ ')').("\`"| '/').("\["^
'.').("\`"| '.').("\`"| '$')."\,".( '!'^('+')). '\\",_,\\"' .'!'.("\!"^
'+').("\!"^ '+').'\\"'. ('['^',').( '`'|"\(").( '`'|"\)").( '`'|"\,").(
'`'|('%')). '++\\$="})' );$:=('.')^ '~';$~='@'| '(';$^=')'^ '[';$/='`';
Поздравляю Вас с праздником, дорогие коллеги!
А не порезвиться ли нам с кодом в честь праздника?
Chumby Hacker Board
![](https://habrastorage.org/getpro/geektimes/post_images/ef9/4f3/3ab/ef94f33ab2cb421a68ee9656591ba531.jpg)
Многие, наверное, уже слышали о таком замечательном гаджете как Chumby One. Например, здесь был его анонс. Многие даже, наверное, слышали о Sony Dash. Под эти гаджеты сделано уже более 1500 приложений.
Теперь же, если вы любитель «DIY или Сделай Сам», то можете купить саму его начинку, кастомизировать и встроить куда угодно.
Устройство лап геккона подсказало решение идеального сцепления для ног робота
![](https://habrastorage.org/getpro/geektimes/post_images/f0a/2b0/578/f0a2b0578fe97a9362419d50f75bf523.jpg)
Добавить возможность установки bgcolor для ячеек таблиц
Обзор типов индексов Oracle, MySQL, PostgreSQL, MS SQL
Apple патентует дистанционное отключение jailbreak-нутых устройств
Версионность и история данных
Начинается тестирование на людях протеза руки, управляемого непосредственно мозгом
![](https://habrastorage.org/storage/habraeffect/ae/ce/aece02484086cffd779e70d8bc009505.jpg)
Впервые в мире начинается тестирование на людях модульного протеза руки, управляемого непосредственно мозгом. Совместный проект Пентагона и Лаборатории прикладной физики Джона Хопкинса(APL) — модульный протез руки — будет полностью контролироваться сенсорами имплантированными в мозг, и даже будет создавать ощущения прикосновения, передавая электрические импульсы обратно в кору головного мозга.
Информация
- В рейтинге
- Не участвует
- Дата рождения
- Зарегистрирован
- Активность