Pull to refresh
20
Karma
0
Rating
Кирилл @kish4ever

Человек и программист

Логирование событий в Oracle PL/SQL

Используем plog для не очень важных/нагруженых мест и где не так сильно много логов надо писать.
Потому что логи в таблицу — это фу.

Логирование событий в Oracle PL/SQL

Скажу по секрету что гитора взламывается на раз два(потому что анвраппер). И при этом можно активировать типа платные вип-фичи для понтового просмотрщика репозитория. Но только тсс))) И там еще и свои болячки тоже есть у него принципиальные, по которому оно для прода не готово вообще. Побаловаться в тестовых средах еще может быть...

О провиженинге тестовых баз

Я думаю допустимо считать, что до того как клон сделан и проведено обезличивание, никто к нему доступа не имеет(кроме скриптов, которые делают все работу).

О провиженинге тестовых баз

Разделение контуров безусловно нужно. А то будет как у Сбера
После создания клона из образа продуктовой бд тестовая бд подвергается обезличиванию/спойлингу всех client sensitive данных и уже после этого отдается разработчикам.

Эволюция моих SQL запросов

кавычки в оракл в именах объектов не нужны и даже вредны имхо.
не нужно создавать таблицы/столбцы в lowercase — потом замаяться можно это все прописывать в SQL-запросах
+ не весь софт с ними потом сможет работать

Эволюция моих SQL запросов

Угу. Очень плохой. Использование функции в предикате, если по такому выражению нет FBI-индекса, приведет к full table scan. И если нужно выбрать только документы со сторнированием, то перебирать тогда вообще все записи нет никакой пользы акромя вреда:
select * from document where xxstorno(id) = 'Y'

Cli-IDE для Oracle СУБД. Ну. Почти IDE

Там при работе с sqlcl сбоит именно сам «протокол» vorax, потому что он написан с расчетом на то что бакендом будет процесс sqlplus. Проблема в обмене именно в том, что он местами подставляет символ решетки в начало команды. Оказывается sqlplus их(решетки) игнорирует подчистую и выполняет команды как если бы их не было. А вот sqlcl честно говорит что не знает такую команду.

10 приёмов работы с Oracle

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

Да и не родился еще программист, который бы не считал свой код самым-самым. А когда говорят, что код попахивает и коричневого цвета, они обычно обижаются.

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

А Хабр, он уже давно превратился из образовательного ресурса в площадку для кармадрочеров, которые просто хотят набрать кассы потешить свое ЧСВ.

10 приёмов работы с Oracle

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

10 приёмов работы с Oracle

Ну то что вы делаете там эксельки — это совсем не значит что это хорошо.
Может вы и pdf тоже им делаете?

10 приёмов работы с Oracle

На plsql конечно. А движка нет — это просто селекты с like из dba_source :D

10 приёмов работы с Oracle

Достаточно спорная статья во многих аспектах.

«Если программист забыл залить в гит» — а не надо забывать, да и на проде программисты не должны иметь доступ к компиляции объектов вообще. Вносить изменения нужно через строго налаженый процесс ci/cd. Коммит в гит, прогон тестов, дальше если все ок деплой.

PL/SQL достаточно убогий и примитивный, поэтому на нем можно почувствовать только боль и унижение, а не «каждый байт». А писать какую-то сложную хранимую логику на нем хотя и можно, но лучше не нужно. За 10 лет работы мы с ним наелись всякого.

View с параметрами через pipelined functions — да такого изврата даже наши горе программисты в конторе не изобретают. Вероятно автор не сталкивался с понятием pushed predicate при запросе к вью. То что тут показано может быть заменено без табличной функции совсем обычной view. Табличные функции медленные, прожорливые до памяти, и могут порождать ошибки типа ORA-600.

Пример «как с помощью запроса быстро нарисовать такую картинку в формате SVG» — просто ужасен. Километровая портянка абсолютно нечитаемой мешанины юнионов и литералов щедро приправленая рекурсией и select from dual. Отличный пример как можно забивать гвозди микроскопом. Зачем превращать СУБД в контент-сервер с генерацией картинок(то что svg по сути текст большой разницы не играет)?

Также Вы изобрели колесо свое распараллеливание на коленке, браво. Попробуйте посмотреть на встроенный Dbms_parallell_execute.

Я уже молчу про «нормализацию» текста регулярками с помощью рекурсивного запроса, лол.

Поиск по продуктовым базам по коду через дблинки…
— Дорогой где ты был?
— Стрелял по лягушкам в Германии лазером из космоса со спутника!
— Странно, но травой не пахнет
— Дура, я под ЛСД


Поиск по каталогу dba_source может быть заменен просто на поиск по репозиторию(внимательно смотрим первый пункт про git и хранение исходников в нем). Если хочется делать быстрый поиск по сорцам — льем репозиторий в какой-нибудь Elasticsearch и вот вам и поиск всего чего только хотите в вашем коде.

На вашем месте я бы озаглавил статью: 10 приемов как не нужно работать в Оракл.

Практическая стеганография. Скрытие информации в изображениях PNG

Но rarjpeg уже был изобретен раньше. А еще тут проскакивала недавно статья про gif+javascript в 1 флаконе.

100500 способов кэширования в Oracle Database

Ну ничего нового тут нет написано, чего бы я не знал.
Если вариантов значений у столбцов(которые передаются в функцию) таблицы много, то «кеш» будет только на каждый уникальный набор входных аргументов.
И причем тоже не всегда это будет работать(там даже написано об этом — есть лимит применения «кеша» по числу строк в датасете)

100500 способов кэширования в Oracle Database

И что бы это вам дало?
Функция вызывается с передачей в нее значений из столбцов таблицы — соответственно вызов функции на каждую выбираемую строку пойдет(как и написано в абзаце). Отсюда мораль: дети, не используйте функции ни в where clause, ни в селект списке, это может быть больно.

А автору — респект и уважуха за такой отличный и подробный разбор подводных камней.

Сказ о том, как сделать машину времени для базы данных и случайно написать эксплойт

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

Сказ о том, как сделать машину времени для базы данных и случайно написать эксплойт

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

Сказ о том, как сделать машину времени для базы данных и случайно написать эксплойт

Пфф, как не красиво. Зачем делать для прода кастомную функцию, которая заменяет собой системные функции (и при этом на проде время не нужно менять)?
Если переписывать вообще все что есть на тестовой среде под такие требования — код будет от прода отличаться. К тому же никто не сможет запретить написать код без использования кастом функции для времени. Спасибо, но нет.

Сказ о том, как сделать машину времени для базы данных и случайно написать эксплойт

И тут тоже спасибо за подсказку. Этого никто в нашей команде не находил во время отбора гипотез. Но оно будет работать только если экземпляры базы данных разные и запущены как разные контейнеры, а для cdb/pdb опять бы пришлось все равно делать что-то свое.

Information

Rating
4,720-th
Location
Пермь, Пермский край, Россия
Date of birth
Registered
Activity