Описание услуги
Я разработчик Oracle PL/SQL, и Oracle для меня — не одна из многих СУБД, а среда, в которой я работаю каждый день. Пишу хранимые процедуры, пакеты, функции и триггеры, которые несут реальную бизнес-логику, и проектирую их так, чтобы код было легко читать, тестировать и безопасно менять спустя месяцы. Когда отчёт должен сверить миллионы строк, когда ночной пакет обязан завершиться до утреннего окна, а одна процедура стоит в центре бухгалтерского процесса, я хочу, чтобы этот код был сначала правильным, а потом быстрым — и делаю его быстрым тоже. С bind-переменными, BULK COLLECT и FORALL, курсорами, коллекциями и аналитическими функциями я работаю так же уверенно, как бэкендер со своим фреймворком, чтобы логика оставалась рядом с данными, а не тащила огромные выборки через сеть.
Большая часть моей работы — производительность. Читаю планы выполнения, вижу, где оптимизатор ошибся, и правлю это индексами, переписанными join'ами, партиционированием или хинтами, когда хинты действительно оправданы. По AWR и трейсам нахожу именно тот запрос, который реально тормозит систему, а не гадаю, и спокойно объясняю простыми словами, почему запрос был медленным и что изменилось. Помимо тюнинга, строю ETL-конвейеры и слой отчётности прямо на Oracle: загрузка и очистка исходных данных, применение бизнес-правил, стабильные таблицы и представления, которым можно доверять из BI или приложения. Мне важны транзакции, обработка ошибок и логирование, потому что задача, которая падает молча, хуже той, что падает громко.
Я не универсальный DBA по MySQL или Postgres и не мастер на все руки в бэкенде — я именно тот, к кому идут, когда проблема в Oracle и PL/SQL. Опишите схему, боль и срок — дам честную оценку и код, который вы сможете сопровождать и без меня.
— Хранимые процедуры, пакеты, функции и триггеры на Oracle PL/SQL
— Написание SQL-запросов и оптимизация (планы выполнения, индексы, партиционирование)
— Пакетная обработка: BULK COLLECT, FORALL, коллекции, ref-курсоры
— ETL-конвейеры и загрузка данных (SQL*Loader, внешние таблицы, staging)
— Запросы для отчётности, представления и материализованные представления для BI
— Рефакторинг и документирование legacy-кода на PL/SQL
Большая часть моей работы — производительность. Читаю планы выполнения, вижу, где оптимизатор ошибся, и правлю это индексами, переписанными join'ами, партиционированием или хинтами, когда хинты действительно оправданы. По AWR и трейсам нахожу именно тот запрос, который реально тормозит систему, а не гадаю, и спокойно объясняю простыми словами, почему запрос был медленным и что изменилось. Помимо тюнинга, строю ETL-конвейеры и слой отчётности прямо на Oracle: загрузка и очистка исходных данных, применение бизнес-правил, стабильные таблицы и представления, которым можно доверять из BI или приложения. Мне важны транзакции, обработка ошибок и логирование, потому что задача, которая падает молча, хуже той, что падает громко.
Я не универсальный DBA по MySQL или Postgres и не мастер на все руки в бэкенде — я именно тот, к кому идут, когда проблема в Oracle и PL/SQL. Опишите схему, боль и срок — дам честную оценку и код, который вы сможете сопровождать и без меня.
— Хранимые процедуры, пакеты, функции и триггеры на Oracle PL/SQL
— Написание SQL-запросов и оптимизация (планы выполнения, индексы, партиционирование)
— Пакетная обработка: BULK COLLECT, FORALL, коллекции, ref-курсоры
— ETL-конвейеры и загрузка данных (SQL*Loader, внешние таблицы, staging)
— Запросы для отчётности, представления и материализованные представления для BI
— Рефакторинг и документирование legacy-кода на PL/SQL