Обычное представление - это объект, представляющий собой виртуальную таблицу, которая физически не существует. Оно создается с помощью запроса соединяющего одну или несколько таблиц.
Представление не существует физически как обычная таблица. Фактически представление создает виртуальную таблицу или подтаблицу только с теми строками и/или столбцами, которые нужно показать пользователю.
Всякий раз, когда нужен доступ к представлению, Oracle должен выполнить запрос,по которому определено представление, и вернуть результат. Этот процесс наполнения представления называется разрешением представления (view resolution) и он повторяется при каждом обращении пользователя к представлению.
Синтаксис создания
Представление не существует физически как обычная таблица. Фактически представление создает виртуальную таблицу или подтаблицу только с теми строками и/или столбцами, которые нужно показать пользователю.
Всякий раз, когда нужен доступ к представлению, Oracle должен выполнить запрос,по которому определено представление, и вернуть результат. Этот процесс наполнения представления называется разрешением представления (view resolution) и он повторяется при каждом обращении пользователя к представлению.
Синтаксис создания
CREATE OR REPLACE VIEW view_name AS#представление
SELECT columns
FROM tables
[WHERE conditions];
👍1
Материализованные представления
Материализованное представление - это специализированные представления, в отличие от обычных представлений, хранит в себе данные. Они занимают место и требуют хранения подобно обычным таблицам. Материализованные представления можно даже секционировать и при необходимости создавать на них индексы. За кадром, создается физическая таблиц с таким же названием как мат представление.
Чаще всего, материализованные представления разделяют на два типа:
1. Обновляемые по commit’у (on commit)
2. Обновляемые вручную (on demand) - по умолчанию.
Синтаксис создания по ссылке.
Для обновления вручную (on demand) используется процедура:
#представления
Материализованное представление - это специализированные представления, в отличие от обычных представлений, хранит в себе данные. Они занимают место и требуют хранения подобно обычным таблицам. Материализованные представления можно даже секционировать и при необходимости создавать на них индексы. За кадром, создается физическая таблиц с таким же названием как мат представление.
Чаще всего, материализованные представления разделяют на два типа:
1. Обновляемые по commit’у (on commit)
2. Обновляемые вручную (on demand) - по умолчанию.
Синтаксис создания по ссылке.
Для обновления вручную (on demand) используется процедура:
dbms_mview.refresh(‘название м.п.’);
Есть еще механизм журнальных групп изменений. Об этом в другой раз.#представления
Журнальные группы изменений (log group)
При обновлении, материализованное представление полностью очищается и заполняется заново. Если в заполнении участвует удаленная таблица или запрос тяжелый, то потребуется достаточно большое время. Как с этим бороться? Нельзя ли применять инкремент изменений, а не обновлять все?
Да можно! Для этого сделали Log-группы (материализованные журналы изменений), в которые накапливается инкремент изменений. Соответственно, при обновлении мат представления изменения берутся из журнала изменений. За счет чего происходит, быстрое обновление данных.
Материализованное представление должно быть с опцией: REFRESH FAST
Синтаксис:
При обновлении, материализованное представление полностью очищается и заполняется заново. Если в заполнении участвует удаленная таблица или запрос тяжелый, то потребуется достаточно большое время. Как с этим бороться? Нельзя ли применять инкремент изменений, а не обновлять все?
Да можно! Для этого сделали Log-группы (материализованные журналы изменений), в которые накапливается инкремент изменений. Соответственно, при обновлении мат представления изменения берутся из журнала изменений. За счет чего происходит, быстрое обновление данных.
Материализованное представление должно быть с опцией: REFRESH FAST
Синтаксис:
CREATE MATERIALIZED VIEW LOG ON таблица#представления
TABLESPACE имя_табл_пространства
WITH PRIMARY KEY
INCLUDING NEW VALUES;
Системные представления/системные словари
Системные представления/системные словари - информация практически обо всех объектах в базе данных, о свойствах, о том как себя “чувствует” база данных, информация о сессиях и др.
Они создаются только системой, заполняются только системой. Максимум на них можно выдать грант на select.
1) user_xxx - информация про объекты схемы текущего пользователя. Доступны всем.
2) all_xxx - информация про объекты схемы текущего пользователя + объекты других схем, на которые есть права у текущего пользователя. Добавляется имя схемы. Доступны всем.
3) dba_xxx - информация вообще обо всем. Доступны только пользователям с ролью DBA, либо тем кому специально выдали права.
Не всегда представления с префиксом dba есть с префиксами user и all.
#представления
Системные представления/системные словари - информация практически обо всех объектах в базе данных, о свойствах, о том как себя “чувствует” база данных, информация о сессиях и др.
Они создаются только системой, заполняются только системой. Максимум на них можно выдать грант на select.
1) user_xxx - информация про объекты схемы текущего пользователя. Доступны всем.
2) all_xxx - информация про объекты схемы текущего пользователя + объекты других схем, на которые есть права у текущего пользователя. Добавляется имя схемы. Доступны всем.
3) dba_xxx - информация вообще обо всем. Доступны только пользователям с ролью DBA, либо тем кому специально выдали права.
Не всегда представления с префиксом dba есть с префиксами user и all.
#представления
Условная компиляция
УК - это механизм позволяющий компилировать код/часть PL/SQL-кода в зависимости от заданных условий (флагов компиляции, переменных пакетов).
Иными словами, задав какое-то условие (флаг) вы можете отсекать часть кода в скомпилированной программе.
Довольно распространено в языке С, да и в других языках.
В PL/SQL так же есть возможность задавать то, какой код попадет в скомпилированный объект.
Используются специальный директивы $IF $THEN $ELSE $ERROR для задания ветвлений и обрамления кода. Список директив и возможности расширяются в новых версиях СУБД.
В следующем посте рассмотрим где применять условную компиляцию.
Я уже подготовил видео, за которое вы проголосовали по условной компиляции. Можете подписаться на мой youtube-канал, чтобы получить уведомление о его выходе или дождаться поста в телеграм-канале.
#компиляция
УК - это механизм позволяющий компилировать код/часть PL/SQL-кода в зависимости от заданных условий (флагов компиляции, переменных пакетов).
Иными словами, задав какое-то условие (флаг) вы можете отсекать часть кода в скомпилированной программе.
Довольно распространено в языке С, да и в других языках.
В PL/SQL так же есть возможность задавать то, какой код попадет в скомпилированный объект.
Используются специальный директивы $IF $THEN $ELSE $ERROR для задания ветвлений и обрамления кода. Список директив и возможности расширяются в новых версиях СУБД.
В следующем посте рассмотрим где применять условную компиляцию.
Я уже подготовил видео, за которое вы проголосовали по условной компиляции. Можете подписаться на мой youtube-канал, чтобы получить уведомление о его выходе или дождаться поста в телеграм-канале.
#компиляция
Использование условной компиляции
1) В зависимости от версии Оракла использовать тот или иной функционал.
К примеру, в поздних версия СУБД появляются некоторые возможности, но ПО поставляется на разные версии. Чтобы ничего не сломать, можно использовать УК.
2) Исключение некоторого кода из prod-версии.
Например, на дев-версии вы включаете вывод информации в буфер, некие ассерты, отладочный код и т.д. Для прод-среды этот код вреден.
3) Конфигурация PL/SQL-приложения в зависимости от каких-то условий.
Вы поставляете ваше ПО в N организаций. Дистрибутив и патчи одинаковые. Но одна из организаций не оплатил некоторую опцию. Воспользовавшись УК, можно реализовать логику вкл\выкл функционала.
4) Включение/выключение функционала в зависимости от ОС, аппаратных платформ и т.д.
Этот прием в основном используется самим создателями встроенных системных PL/SQL-модулей.
Напишите в комментариях, если вы знаете другие варианты использования 💬
#компиляция
1) В зависимости от версии Оракла использовать тот или иной функционал.
К примеру, в поздних версия СУБД появляются некоторые возможности, но ПО поставляется на разные версии. Чтобы ничего не сломать, можно использовать УК.
2) Исключение некоторого кода из prod-версии.
Например, на дев-версии вы включаете вывод информации в буфер, некие ассерты, отладочный код и т.д. Для прод-среды этот код вреден.
3) Конфигурация PL/SQL-приложения в зависимости от каких-то условий.
Вы поставляете ваше ПО в N организаций. Дистрибутив и патчи одинаковые. Но одна из организаций не оплатил некоторую опцию. Воспользовавшись УК, можно реализовать логику вкл\выкл функционала.
4) Включение/выключение функционала в зависимости от ОС, аппаратных платформ и т.д.
Этот прием в основном используется самим создателями встроенных системных PL/SQL-модулей.
Напишите в комментариях, если вы знаете другие варианты использования 💬
#компиляция
Условная компиляция [видео]
Всем привет!
Второе видео из тех, за которые вы проголосовали 📊
В этом видео, я расскажу, что такое условная компиляция PL/SQL-кода, зачем она нужна, приведу примеры. Решил сделать его максимально сжатым и информативным.
Уже после монтажа, понял, что все равно видюха получилась почти на 7 минут 🤷🏻♂️
Хотелось бы, делать видосы не более 5 минут. Буду исправляться 👨🏻💻
В планах, сформировать курс уровня Advanced по PL/SQL, в котором будут эти и другие фишки СУБД.
В процессе написания курс для новичков по PL/SQL.
Приятного просмотра!
🎥 Смотреть видео - 7 мин
#видео #компиляция
Всем привет!
Второе видео из тех, за которые вы проголосовали 📊
В этом видео, я расскажу, что такое условная компиляция PL/SQL-кода, зачем она нужна, приведу примеры. Решил сделать его максимально сжатым и информативным.
Уже после монтажа, понял, что все равно видюха получилась почти на 7 минут 🤷🏻♂️
Хотелось бы, делать видосы не более 5 минут. Буду исправляться 👨🏻💻
В планах, сформировать курс уровня Advanced по PL/SQL, в котором будут эти и другие фишки СУБД.
В процессе написания курс для новичков по PL/SQL.
Приятного просмотра!
🎥 Смотреть видео - 7 мин
#видео #компиляция
YouTube
Oracle условная компиляция PL/SQL (Conditional Compilation) за 7 минут
В этом видео, я расскажу, что такое условная компиляция PL/SQL-кода, зачем она нужна, приведу примеры. Решил сделать его максимально сжатым и информативным.
Репозиторий к уроку: https://github.com/kivilev/oracle_dbd/tree/master/cond_compilation
Документация…
Репозиторий к уроку: https://github.com/kivilev/oracle_dbd/tree/master/cond_compilation
Документация…
Условная компиляция в запросах
You asked…
Привет, Том!
Я пытаюсь использовать условную компиляцию в запросе для курсора в процедуре.
При компиляции не получаю ошибок. Я получаю две колонки в курсоре, но ожидаю три, т.к. передаю входной параметр, который должен выбирать какой курсор отдавать. И должно быть три колонки. Пожалуйста, подскажи, что я не так делаю.
...and we said
Подсказка в названии. Вы используете условную компиляцию. И уже на этапе компиляции отсекается код, который не соответствует условию. Если вы хотите изменить поведение скомпилированного кода, вам необходимо изменить условия и заново его скомпилировать. С учетом этого, в run-time изменить поведение процедуры не получится.
Если вы все таки хотите добиться получения разных курсоров, то вам необходимо использовать динамический SQL в процедуре.
Подробности в статье Тома.
#asktom #компиляция
You asked…
Привет, Том!
Я пытаюсь использовать условную компиляцию в запросе для курсора в процедуре.
При компиляции не получаю ошибок. Я получаю две колонки в курсоре, но ожидаю три, т.к. передаю входной параметр, который должен выбирать какой курсор отдавать. И должно быть три колонки. Пожалуйста, подскажи, что я не так делаю.
...and we said
Подсказка в названии. Вы используете условную компиляцию. И уже на этапе компиляции отсекается код, который не соответствует условию. Если вы хотите изменить поведение скомпилированного кода, вам необходимо изменить условия и заново его скомпилировать. С учетом этого, в run-time изменить поведение процедуры не получится.
Если вы все таки хотите добиться получения разных курсоров, то вам необходимо использовать динамический SQL в процедуре.
Подробности в статье Тома.
#asktom #компиляция
Все же, зачем нужна условная компиляция?
На днях прилетает вопрос от подписчика:
“Рассуждал с коллегой, чем условная компиляция отличается от заключения кода в простые if-else? Защиты тут нет, source в итоге можно смотреть, да и скорее всего сами пакеты. Просто что в памяти получается этого кода не будет, не захламлять лишней логикой?”
Я понял, что видимо, не совсем донес суть, не смотря на посты и видео-урок.
Суть в том, чтобы на этапе компиляции исключать фрагменты кода.
Рассмотрим простейший примера, показанные на рисунке. Процедура Proc1 отсутствует. flag = false.
1) Обычное условие - будет ошибка, т.к. компилятор доберется при компиляции до строки с Proc1, увидет, что её нет, и откажется компилировать код.
2) Условная компиляция - ошибки не будет, т.к. в код для компиляции вызов этой функции просто не попадет.
Мы исключаем/добавляем код перед самой компиляцией, проверку зависимостей и т.д. Это, пожалуй, самое главное отличие.
Всем хороших выходных! 👯♀️
#компиляция
На днях прилетает вопрос от подписчика:
“Рассуждал с коллегой, чем условная компиляция отличается от заключения кода в простые if-else? Защиты тут нет, source в итоге можно смотреть, да и скорее всего сами пакеты. Просто что в памяти получается этого кода не будет, не захламлять лишней логикой?”
Я понял, что видимо, не совсем донес суть, не смотря на посты и видео-урок.
Суть в том, чтобы на этапе компиляции исключать фрагменты кода.
Рассмотрим простейший примера, показанные на рисунке. Процедура Proc1 отсутствует. flag = false.
1) Обычное условие - будет ошибка, т.к. компилятор доберется при компиляции до строки с Proc1, увидет, что её нет, и откажется компилировать код.
2) Условная компиляция - ошибки не будет, т.к. в код для компиляции вызов этой функции просто не попадет.
Мы исключаем/добавляем код перед самой компиляцией, проверку зависимостей и т.д. Это, пожалуй, самое главное отличие.
Всем хороших выходных! 👯♀️
#компиляция
Всем привет!
Это будет заключительный пост в этом году. Впереди предновогодняя суета и времени, для написания постов, не будет.
2020-й был непростой год, который поменял привычный уклад наших жизней. Не буду оценивать его, вы и без меня все прекрасно знаете.
Подведу итоги с точки зрения канала. Он был создан 27-го февраля. Изначально, я думал о нем как источнике информации для своих студентов. Но вскоре понял, что темы могут быть полезны для более широкого круга специалистов.
В целом, цифра ~1200 подписчиков говорит мне, о том, что я был прав.
Конечно, формат коротких постов, а их ~200, не может охватить все темы и все тонкости, связанные с ними. Некоторые темы я освещаю на своем youtube-канале. Вышло уже 15 видео. Тем не менее, этого все равно недостаточно.
Поэтому я формирую курс по основам PL/SQL, который будет полезен новичкам. Также в планах курсы по другим направлениям: тестирование, оптимизация, PL/SQL Advanced-уровня. Надеюсь, в следующем году, у меня хватит сил и времени реализовать эти планы.
Спасибо за ваши сообщения со словами благодарности и поддержки. Для меня это очень важно 🔥
От себя хочу пожелать в новом году, осуществить задуманное, развиваться в профессиональном плане, делать, пусть маленькие, но шаги к осуществлению желаемого. Пусть следующий год будь проще. Спасибо, что остаетесь на канале 🤝
С наступающим новым годом! 🎄
Это будет заключительный пост в этом году. Впереди предновогодняя суета и времени, для написания постов, не будет.
2020-й был непростой год, который поменял привычный уклад наших жизней. Не буду оценивать его, вы и без меня все прекрасно знаете.
Подведу итоги с точки зрения канала. Он был создан 27-го февраля. Изначально, я думал о нем как источнике информации для своих студентов. Но вскоре понял, что темы могут быть полезны для более широкого круга специалистов.
В целом, цифра ~1200 подписчиков говорит мне, о том, что я был прав.
Конечно, формат коротких постов, а их ~200, не может охватить все темы и все тонкости, связанные с ними. Некоторые темы я освещаю на своем youtube-канале. Вышло уже 15 видео. Тем не менее, этого все равно недостаточно.
Поэтому я формирую курс по основам PL/SQL, который будет полезен новичкам. Также в планах курсы по другим направлениям: тестирование, оптимизация, PL/SQL Advanced-уровня. Надеюсь, в следующем году, у меня хватит сил и времени реализовать эти планы.
Спасибо за ваши сообщения со словами благодарности и поддержки. Для меня это очень важно 🔥
От себя хочу пожелать в новом году, осуществить задуманное, развиваться в профессиональном плане, делать, пусть маленькие, но шаги к осуществлению желаемого. Пусть следующий год будь проще. Спасибо, что остаетесь на канале 🤝
С наступающим новым годом! 🎄
Друзья, всем привет!
Это первый пост в этом году. Хочу немного рассказать о себе.
Может быть, кому-то будет интересно, что за чувак ведет канал 😄
Зовут меня Кивилёв Денис. Родом я из Новосибирска, окончил местный технический университет (НГТУ). Работал в разных компаниях - гос, коммерческие. Была коммерческая разработка и внутренняя продуктовая. Разные масштабы, разные классы систем. Начинал с версии 9i в 2005м. Много воды утекло...
По ходу трудовой деятельности сертифицировался на:
* Oracle PL/SQL Developer Certified Associate
* Oracle Database SQL Certified Expert
* Oracle Advanced PL/SQL Developer Certified Professional
* Oracle Certified Associate Java SE 8 Programmer
Не то чтобы без них нельзя жить или иметь хорошую работу. Для меня это было подведением промежуточных итогов. Кстати, говорят, западные компании очень любят такие вещи 😉
На текущий момент стараюсь развиваться в направление Java/Kotlin. Спасибо моей компании, которая дает это делать 👍
Планов много по каналам и по обучающим курсам. Некоторые я уже озвучивал. Поживем увидем, что смогу осилить.
Я всегда открыт для обратной связи. Спасибо за ваши отзывы и предложения. Довольно часто они мотивирует продолжать.
Я знаю ребят настоящих Оракловых фанатиков 🤖 Я не такой, имеются кое-какие белые пятна. Тем более, что Oracle настолько огромная область, что невозможно знать всё. Помните про принцип Парето - 80/20? Как раз этот случай.
Тем более, кроме работы есть еще много других интересных вещей. И нужно находить баланс.
По мере возможности и сил обещаю делиться знаниями и опытом.
Спасибо, что остаетесь на канале. Впереди много нового и интересного о разработке в СУБД Oracle!
P.S. На всякий случай, кинул ссылку на резюме. Если кому-то хочется погрузиться в детали моей трудовой биографии 👇
Это первый пост в этом году. Хочу немного рассказать о себе.
Может быть, кому-то будет интересно, что за чувак ведет канал 😄
Зовут меня Кивилёв Денис. Родом я из Новосибирска, окончил местный технический университет (НГТУ). Работал в разных компаниях - гос, коммерческие. Была коммерческая разработка и внутренняя продуктовая. Разные масштабы, разные классы систем. Начинал с версии 9i в 2005м. Много воды утекло...
По ходу трудовой деятельности сертифицировался на:
* Oracle PL/SQL Developer Certified Associate
* Oracle Database SQL Certified Expert
* Oracle Advanced PL/SQL Developer Certified Professional
* Oracle Certified Associate Java SE 8 Programmer
Не то чтобы без них нельзя жить или иметь хорошую работу. Для меня это было подведением промежуточных итогов. Кстати, говорят, западные компании очень любят такие вещи 😉
На текущий момент стараюсь развиваться в направление Java/Kotlin. Спасибо моей компании, которая дает это делать 👍
Планов много по каналам и по обучающим курсам. Некоторые я уже озвучивал. Поживем увидем, что смогу осилить.
Я всегда открыт для обратной связи. Спасибо за ваши отзывы и предложения. Довольно часто они мотивирует продолжать.
Я знаю ребят настоящих Оракловых фанатиков 🤖 Я не такой, имеются кое-какие белые пятна. Тем более, что Oracle настолько огромная область, что невозможно знать всё. Помните про принцип Парето - 80/20? Как раз этот случай.
Тем более, кроме работы есть еще много других интересных вещей. И нужно находить баланс.
По мере возможности и сил обещаю делиться знаниями и опытом.
Спасибо, что остаетесь на канале. Впереди много нового и интересного о разработке в СУБД Oracle!
P.S. На всякий случай, кинул ссылку на резюме. Если кому-то хочется погрузиться в детали моей трудовой биографии 👇
Друзья, привет!
Сегодня пост обратной связи 🤜🏻🤛🏻
Примерно раз в месяц, мне пишут различные HR-специалисты с просьбой разместить в канале вакансию, связанную с разработкой в СУБД Oracle.
Об условиях и качестве вакансии, известности конторы и т.п. говорить сложно, каждый сам решает, интересно это ему или нет.
Мне хочется спросить ваше мнение, стоит ли публиковать такие вакансии в канале? будет ли вам это интересно?
Сегодня пост обратной связи 🤜🏻🤛🏻
Примерно раз в месяц, мне пишут различные HR-специалисты с просьбой разместить в канале вакансию, связанную с разработкой в СУБД Oracle.
Об условиях и качестве вакансии, известности конторы и т.п. говорить сложно, каждый сам решает, интересно это ему или нет.
Мне хочется спросить ваше мнение, стоит ли публиковать такие вакансии в канале? будет ли вам это интересно?
Секционирование/партиционирование таблиц. Введение
Всем привет!
Третье видео, за которое вы проголосовали 👍
Это вводный урок по секционированию таблиц. В нем я расскажу, что это такое, зачем оно нужно, какие виды бывают, разберу некоторые виды на примерах.
Тема достаточно большая, чтобы объять её в одном маленьком видосе.
Кстати, многие привыкли к термину “партиционирование”, однако, официальный русский перевод - “секционирование”. Ваше право, какой термин использовать. Я лично привык к “партиционированию” 😌
На праздниках обзавелся новым микрофоном, изменил оформление видосов.
Далеко до идеала, но потихоньку двигаюсь в этом направлении ⬆️
Приятного просмотра!
🎥 Смотреть видео - 11 мин
#видео #секционирование
Всем привет!
Третье видео, за которое вы проголосовали 👍
Это вводный урок по секционированию таблиц. В нем я расскажу, что это такое, зачем оно нужно, какие виды бывают, разберу некоторые виды на примерах.
Тема достаточно большая, чтобы объять её в одном маленьком видосе.
Кстати, многие привыкли к термину “партиционирование”, однако, официальный русский перевод - “секционирование”. Ваше право, какой термин использовать. Я лично привык к “партиционированию” 😌
На праздниках обзавелся новым микрофоном, изменил оформление видосов.
Далеко до идеала, но потихоньку двигаюсь в этом направлении ⬆️
Приятного просмотра!
🎥 Смотреть видео - 11 мин
#видео #секционирование
YouTube
Oracle секционирование (партиционирование) таблиц
В этом видео поговорим о партиционировании таблиц в Oracle:
- что такое партиционирование таблиц или секционирование таблиц
- зачем они нужны
- какие виды партиционирования бывают
- приведу реальные примеры создания секционированных таблиц
Репозиторий к…
- что такое партиционирование таблиц или секционирование таблиц
- зачем они нужны
- какие виды партиционирования бывают
- приведу реальные примеры создания секционированных таблиц
Репозиторий к…
Про рекламу на канале
Друзья, всем привет!
Опять немного не про Оракл.
Этот канал, я веду один, продвигаю его по мере сил и возможностей.
Однако, для меня это не бесплатно 😏
В свою очередь, чтоб хоть как-то компенсировать затраты, я буду иногда размещать рекламу. Её будет мало.
Прошу отнестись с пониманием, прежде всего, это нужно для развития канала ↗️
Не донаты же собирать 😉
Например, сегодня будет пост. Купите ли вы по нему что-то или нет, это сугубо ваше дело, я ничего не прошу. Оплата идет за публикацию в канале.
Друзья, всем привет!
Опять немного не про Оракл.
Этот канал, я веду один, продвигаю его по мере сил и возможностей.
Однако, для меня это не бесплатно 😏
В свою очередь, чтоб хоть как-то компенсировать затраты, я буду иногда размещать рекламу. Её будет мало.
Прошу отнестись с пониманием, прежде всего, это нужно для развития канала ↗️
Не донаты же собирать 😉
Например, сегодня будет пост. Купите ли вы по нему что-то или нет, это сугубо ваше дело, я ничего не прошу. Оплата идет за публикацию в канале.
Интенсив по Docker для разработчиков без «капитанской теории». Отправляемся 25 февраля.
На 2 дня оставим за бортом всё то, о чём и так все знают и погрузимся в глубины крутейшей практики. Вы запустите сайт в контейнере, соберёте несколько контейнеров в рабочую систему, запустите готовый pipeline в Gitlab, рассмотрите подводные камни использования stateful и Docker и научитесь обходить ограничения DockerHub. Помимо этого расскажем об особенностях использования контейнеров с ruby, php, python, go, java, c#, c++ и работе Docker в облаках.
Интересно? А ведь это ещё не всё! Почитать всю программу (там много вкусного) и посмотреть реальные примеры практических заданий можно на сайте.
Йо-хо-хо, морские волки! На абордаж!
На 2 дня оставим за бортом всё то, о чём и так все знают и погрузимся в глубины крутейшей практики. Вы запустите сайт в контейнере, соберёте несколько контейнеров в рабочую систему, запустите готовый pipeline в Gitlab, рассмотрите подводные камни использования stateful и Docker и научитесь обходить ограничения DockerHub. Помимо этого расскажем об особенностях использования контейнеров с ruby, php, python, go, java, c#, c++ и работе Docker в облаках.
Интересно? А ведь это ещё не всё! Почитать всю программу (там много вкусного) и посмотреть реальные примеры практических заданий можно на сайте.
Йо-хо-хо, морские волки! На абордаж!
Пакет dbms_application_info
В Oracle существует очень много встроенных пакетов с различным функционалом. Хочу рассказать вам, о довольно, полезном пакете dbms_application_info.
С помощью него можно установить/получить свойства сессии:
- название приложения, модуля, текущего действия.
- отражение прогресса длительных операций (уже делаю видео).
На скриншоте примеры сессий, для которых я установил эти значения.
Установка значений дает некоторые плюсы:
1. Вы всегда безошибочно найдете в списке сессий ваши приложения/модули и будете иметь представление, что они делают в данный момент.
2. В трейс-файлы будут попадать эти установленные значения, что также удобно.
3. ДБА смогут безошибочно находить владельца определенной сессии.
4. Сразу, облегчается диагностика проблем.
В следующих постах остановлюсь подробней как использовать.
#пакеты #dbms_application_info
В Oracle существует очень много встроенных пакетов с различным функционалом. Хочу рассказать вам, о довольно, полезном пакете dbms_application_info.
С помощью него можно установить/получить свойства сессии:
- название приложения, модуля, текущего действия.
- отражение прогресса длительных операций (уже делаю видео).
На скриншоте примеры сессий, для которых я установил эти значения.
Установка значений дает некоторые плюсы:
1. Вы всегда безошибочно найдете в списке сессий ваши приложения/модули и будете иметь представление, что они делают в данный момент.
2. В трейс-файлы будут попадать эти установленные значения, что также удобно.
3. ДБА смогут безошибочно находить владельца определенной сессии.
4. Сразу, облегчается диагностика проблем.
В следующих постах остановлюсь подробней как использовать.
#пакеты #dbms_application_info
Использование dbms_application_info
Рассмотрим приложение относящееся к некой платежной системе.
1. Приложение называется - wallet-app.
2. Модуль, в котором была создана сессия, относится к проведению платежей - payment-processing.
3. Конкретное выполняющееся действие “приватный платеж p2p” - processing private payment.
Как установить эти значения?
Название приложения:
Название модуля и действия:
Где посмотреть выставленные значения ?
В системном представлении:
Рассмотрим приложение относящееся к некой платежной системе.
1. Приложение называется - wallet-app.
2. Модуль, в котором была создана сессия, относится к проведению платежей - payment-processing.
3. Конкретное выполняющееся действие “приватный платеж p2p” - processing private payment.
Как установить эти значения?
Название приложения:
beginМожно задать сразу после создания сессии.
dbms_application_info.set_client_info('wallet-app');
end;
Название модуля и действия:
beginВызываем с разными значениями походу выполнения.
dbms_application_info.set_module('payment-processing', 'processing private payment');
end;
Где посмотреть выставленные значения ?
В системном представлении:
select t.client_info, t.module, t.action, t.*или непосредственно в сессии:
from v$session t;
dbms_application_info.read_module#пакеты #dbms_application_info
dbms_application_info.read_client_info
Прогресс для длительных операций
Знакома ли вам такая ситуация? Запускается какой-то тяжелый процесс (джоб, скрипт) и вы понятия не имеете на каком этапе находится выполнение, сколько осталось до конца, сколько прошло? А очень хотелось бы 🔮
Это как скачивание файла. В браузере можно посмотреть прогресс.
Так бы взять и перенести это в Oracle 🧙🏻♀️
Однако, в Oracle уже есть встроенный механизм, которые это делает для тяжелых SQL-запросов.
Мы его можем переиспользовать под свои нужны - для отображения прогресса выполнения в PL/SQL-программах.
Используется для этого наш старый знакомый пакет dbms_application_info и процедура - set_session_longops.
Первый вызов инициализирует условный “прогресс бар”, последующие вызовы его инкрементируют.
Сам “прогресс бар” доступен в системном представлении - v$session_longops.
В четверг будет видео на эту тему со всеми подробностями и примерами. Не пропустите 🎥
#пакеты #dbms_application_info
Знакома ли вам такая ситуация? Запускается какой-то тяжелый процесс (джоб, скрипт) и вы понятия не имеете на каком этапе находится выполнение, сколько осталось до конца, сколько прошло? А очень хотелось бы 🔮
Это как скачивание файла. В браузере можно посмотреть прогресс.
Так бы взять и перенести это в Oracle 🧙🏻♀️
Однако, в Oracle уже есть встроенный механизм, которые это делает для тяжелых SQL-запросов.
Мы его можем переиспользовать под свои нужны - для отображения прогресса выполнения в PL/SQL-программах.
Используется для этого наш старый знакомый пакет dbms_application_info и процедура - set_session_longops.
Первый вызов инициализирует условный “прогресс бар”, последующие вызовы его инкрементируют.
Сам “прогресс бар” доступен в системном представлении - v$session_longops.
В четверг будет видео на эту тему со всеми подробностями и примерами. Не пропустите 🎥
#пакеты #dbms_application_info
Друзья, всем привет!
Запилил видос про отображение прогресса для длительных операций в PL/SQL.
Немного теории, примеры, настройка IDE для отображения.
Приятного просмотра!
🎥 Смотреть видео - 5 мин
#видео #пакеты #dbms_application_info
Запилил видос про отображение прогресса для длительных операций в PL/SQL.
Немного теории, примеры, настройка IDE для отображения.
Приятного просмотра!
🎥 Смотреть видео - 5 мин
#видео #пакеты #dbms_application_info
YouTube
Отображение прогресса выполнения в PL/SQL-программах
Отображение прогресса выполнения в PL/SQL-программах, скриптах.
Для тяжелых процессов это очень полезно, понимать сколько уже выполнено сколько осталось, на каком этапе находится программа.
Также этот подход может пригодится при выполнении скриптов.
Для…
Для тяжелых процессов это очень полезно, понимать сколько уже выполнено сколько осталось, на каком этапе находится программа.
Также этот подход может пригодится при выполнении скриптов.
Для…