Что такое файл трассировки и как его создать

Обновлено: 21.11.2024

Если эта функция включена, трассировка во время выполнения записывает информацию о трассировке кортежа в консоль StreamBase Server или в файл трассировки, по одному файлу на каждый контейнер. Если какой-либо компонент или модуль в вашем приложении использует возможности параллелизма, то для каждого отдельного параллельного региона создается отдельный файл трассировки. (Дополнительные сведения о параллелизме см. в разделе Порядок выполнения и параллелизм.)

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

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

Трассировка не выполняется, если вы не настроили для нее StreamBase Server и не включили трассировку. Чтобы настроить трассировку, установите для системного свойства streambase.codegen.trace-tuples или переменной среды STREAMBASE_CODEGEN_TRACE_TUPLES значение true. После настройки трассировка включается по умолчанию при запуске приложения, если только вы не отключите ее во время выполнения с помощью sbadminmodifyContainer containerName trace false . В этом случае снова включите трассировку с помощью команды sbadminmodifyContainer containerName trace true .

Файлы трассировки имеют расширение .sbtrace или .sbtrace.gz для сжатых файлов. Файлы трассировки хранятся в кодировке UTF-8, которая сохраняет любые символы Юникода в полях кортежа в файле трассировки.

Средство отслеживания также создает второй файл с расширением .sbtrace.meta . Этот файл в формате XML содержит эквивалент вывода sbc описать. Этот файл автоматически используется проекцией Trace Browser при чтении и отображении файлов .sbtrace.

Трассировка или удаление из очереди

Трассировка во время выполнения похожа на использование sbc dequeue для удаления из очереди кортежей из любого потока вашего приложения, включая промежуточные потоки, если оно включено, но не то же самое (см. Удаление промежуточных потоков из очереди). В следующей таблице показаны различия между трассировкой во время выполнения и удалением из очереди.

Функция Стандартное удаление из очереди Трассировка во время выполнения
Просмотреть вывод кортежа из . Все явные потоки по умолчанию и все промежуточные потоки, если они включены. Все операторы и потоки (необязательно ограниченные выбором регулярного выражения).
Временная метка отображается для каждого кортежа Нет Да< /td>
Сохранить вывод в файл или консоль Необходимо перенаправить вывод консоли или использовать выходной адаптер. Указать с помощью параметра времени выполнения.
Начинается с сервера StreamBase Нет. Требуется время, чтобы запустить сервер, а затем запустить клиент, исключающий очередь. Первые несколько кортежей могут быть пропущены. Да. Захватываются даже первые несколько кортежей.
Можно видеть вывод кортежа в StreamBase Studio Да. Да. Файлы трассировки можно открывать, выполнять поиск и пошаговый просмотр в проекции Studio SB Trace Debugger.

Настройка трассировки во время выполнения

Чтобы использовать функцию трассировки во время выполнения, вы должны настроить StreamBase Server для ответа на команды трассировки. Используйте любой из следующих методов:

Установите для переменной среды STREAMBASE_CODEGEN_TRACE_TUPLES значение true.

Установите для системного свойства Java streambase.codegen.trace-tuples значение true . Используйте директивы или в файле конфигурации сервера (описано в XML-справочнике по файлу конфигурации сервера StreamBase). Например:

Настройка трассировки во время выполнения

Настройте трассировку во время выполнения одним из трех способов:

Используйте команду sbadmin addContainer во время выполнения с параметрами --trace*.

Используйте команду sbadminmodifyContainer во время выполнения с подкомандами trace true и trace false и параметрами --trace*.

Все три метода имеют одни и те же три параметра, как описано в следующей таблице:

Укажите шаблон регулярного выражения в формате java.util.regex.Pattern . Шаблон ограничивает трассировку операторами и потоками, имя которых соответствует указанному шаблону .

Если не указано, трассировка активна для всех операторов и потоков в приложении.

По умолчанию вывод трассировки записывается в консоль StreamBase Server. Чтобы перенаправить вывод трассировки в файл, укажите traceFileBase с аргументом basename.

Для каждого модуля создается один файл трассировки, включая один файл трассировки для каждой параллельной области в модуле. Укажите строку, которая будет использоваться в качестве базового имени для файлов трассировки. Имена файлов трассировки создаются как basename+containername.sbtrace .Для модулей, работающих с включенным параллельным выполнением, путь к модулю становится частью имени файла трассировки: basename+containername.modulepath.sbtrace .

Трассировка также создает второй файл с расширением .sbtrace.meta . Этот файл в формате XML содержит эквивалент вывода sbc описать. Этот файл автоматически используется проекцией Trace Debugger при чтении и отображении файлов .sbtrace.

Для элемента файла развертывания укажите "=true" или "=false" (по умолчанию). Для параметра sbadmin используйте параметр без аргументов, чтобы установить истинное состояние.

Если задано значение true, трассировка перезаписывает все файлы трассировки при запуске StreamBase Server. Если задано значение false (по умолчанию), новая информация трассировки будет добавляться к существующим файлам трассировки для каждого отслеживаемого контейнера.

Для элемента файла развертывания укажите "=true" или "=false" (по умолчанию). Для параметра sbadmin используйте параметр без аргументов, чтобы установить истинное состояние.

Установите значение true, чтобы указать, что сгенерированный файл трассировки должен быть сжат с помощью gzip. Если true , расширение файла трассировки становится .sbtrace.gz . Сжатые файлы трассировки доступны для чтения с помощью отладчика трассировки Studio.

При использовании элемента файла развертывания или sbadmin addContainer , если выполняются условия установки, трассировка включается по умолчанию при запуске приложения. Вы можете отключить трассировку во время выполнения с помощью sbadminmodifyContainer containerName trace false . В этом случае повторно включите трассировку с помощью команды sbadminmodifyContainer containerName trace true . Как только вы отключите или прекратите трассировку, все файлы трассировки будут закрыты.

Примеры трассировки командной строки

Следующая последовательность команд изменяет контейнер по умолчанию для включения трассировки, запускает симуляцию фида, а затем отключает трассировку. Информация трассировки записывается в файл трассировки в текущем каталоге с именем tr_default.sbtrace.gz и в файл метаданных с именем tr_default.sbtrace-meta. Файл трассировки содержит трассировочную информацию обо всех операторах и потоках со строкой Bids в их именах.

В одном из окон терминала введите:

В другом окне терминала введите:

Пример трассировки Windows

Ниже показана та же последовательность команд для Windows с использованием командной строки StreamBase:

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

Пример файла развертывания

Используйте элемент файла развертывания, как в этом примере:

При этом создается файл трассировки с именем trace_default.sbtrace.gz , который перезаписывается каждый раз при перезапуске сервера и содержит информацию трассировки обо всех операторах и потоках со строкой Bids в их именах.

Формат файлов трассировки

Файлы трассировки состоят из одной строки заголовка (для наглядности ниже показаны две строки), а также по одной строке трассировки на каждый кортеж, полученный в каждом указанном операторе и потоке. В следующем примере показано начало файла трассировки для примера Best Bids and Asks, поставляемого с StreamBase, работающего в контейнере по умолчанию с именем default :

Строки трассировки состоят как минимум из четырех полей, описанных в следующей таблице:

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

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

Предлагаемое решение, которое я опубликую здесь, заключается в том, что пользователь EM12c сможет создавать файлы трассировки, но администратор базы данных будет управлять файлами уровня ОС (доставка файла пользователю после создания файла трассировки будет использовать определенного пользователя для входа в базу данных из Cloud Control и не будет иметь целевого доступа, предоставленного ранее.

Создание пользователя базы данных для отслеживания

Подключитесь к PDB и создайте пользователя, которого вы будете использовать для отслеживания...

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

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

Предоставьте новому пользователю следующие привилегии в «Привилегии целевого типа»:

Мониторинг Enterprise Manager Мониторинг производительности Enterprise Manager
Добавить любую цель Добавить любую цель в Enterprise Manager
Просмотр любой цели Возможность просмотра всех управляемых целей в Enterprise Manager

Да, у вас есть право переключиться с «Просмотреть любую цель» на список указанных целей. Я просто решил выучить шаги здесь, так что делайте то, что соответствует вашей модели ИТ-безопасности.

Добавьте новую роль, которую вы создали для отслеживающего пользователя, а затем завершите создание мастера для нового пользователя в Cloud Control.

Создание файла трассировки

После того как пользователь войдет в систему (и обновит свой пароль… :)), он сможет войти в цель и просмотреть данные о производительности. В нашем примере мы будем использовать следующий сценарий базы данных, где разработчик или пользователь службы поддержки приложения обеспокоен «Другим» в Top Activity. Им был предоставлен общий обзор событий ожидания Top Activity, и они знают, что зеленый цвет (ЦП) ожидается, темно-синий (IO) часто встречается, а красный цвет (приложение или параллелизм) коричневый (конфигурация или сеть) ) оранжевый, (зафиксировать) и розовый, (другой) следует более внимательно отслеживать.

Сейчас трассировка — это процесс уровня сеанса, который создает файл трассировки в каталоге ОС (операционной системы). Для Oracle 11g и более поздних версий этот файл создается в домашнем хранилище автоматического диагностического репозитория (ADR). Местоположение базы можно легко определить с помощью параметра DIAGNOSTICE_DEST + /rdbms/diag/ / /trace.

В приведенном выше примере с основной активностью мы видим сеансы с правой стороны и видим пару, которые вызывают беспокойство. Поскольку мы решили, что нам нужно больше проверять ожидания «Другое», мы посмотрим в столбец «Идентификатор сеанса» и дважды щелкнем идентификатор сеанса 1107.

Это приводит нас к странице сведений о сеансе 1107:

У нас есть несколько вкладок на странице сведений для проверки, но, допустим, мы хотим создать файл трассировки, чтобы лучше изучить ожидания ENQUEUE. Справа, в верхней и нижней части, вы можете увидеть кнопку «Включить трассировку SQL». Поскольку у пользователя есть права на «Изменить сеанс», он может щелкнуть эту кнопку, и он перейдет к этапам создания файла трассировки.

Это похоже на выполнение трассировки 10046. Как вы можете видеть, это очень прямолинейно и просто по сравнению с выполнением команд SQL*Plus, которые потребуют следующего для обоих параметров, установленных на «Нет»:

Чтобы создать параметр с информацией об ожидании, установленной на «Да», мы должны обновить наш запрос следующим образом:

И чтобы для обоих было установлено значение «Да», мы должны выполнить эту команду, которая имеет оба:

Вернемся к нашему варианту управления облаком (более простой вариант). Как только мы решим собрать информацию об ожидании и привязке, мы можем нажать «ОК», и впоследствии начнется трассировка.

После того, как мы закончили трассировку, мы должны не забыть отключить трассировку (по этой причине администратор базы данных установил максимальный размер файла дампа, чтобы иметь подстраховку для тех, кто забывает!)

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

Если бы вы забыли, администратор базы данных мог бы легко найти отслеживаемый сеанс в файле, и они могли бы выполнить следующую команду из командной строки, чтобы отключить его:

Получение ЧИТАЕМОГО отчета о файле трассировки

Теперь в дело вступает ваш администратор базы данных, и вам нужно подружиться с ним. Большинству администраторов баз данных будет неудобно предоставлять доступ к файлам уровня ОС, и я их не виню. Лучше всего, если вам не придется беспокоиться об этом доступе, и лучше, если они просто извлекут файлы для вас. Прежде чем они это сделают, вы хотите, чтобы они преобразовали данные трассировки в удобочитаемый отчет. Это делается через утилиту ТКПРОФ.

Файл трассировки должно быть легко найти на сервере в каталоге ADR для файлов трассировки (каталог называется «trace», да… :)), и есть два файла, которые создаются как часть вашего файла трассировки. - Файл отображения трассировки .trm, который вам не понадобится, и файл .trc, который необходим для создания отчета.

Для создания отчета администратор базы данных выполнит следующее

Они могут передать выходной файл по SCP или FTP на свою рабочую станцию, и это тот файл, который вы хотите, чтобы они отправили вам.

И вот оно: создание безопасного пользователя, который может создавать файлы трассировки, а затем создание файлов трассировки после получения доступа. Теперь вы, администраторы баз данных и разработчики, подружитесь, принесете друг другу пончики и, возможно, угостите друг друга выпивкой… 🙂

Читайте также: