oracle история sql запросов

Старая история SQL в Oracle SQL Developer

в SQL Developer я нашел некоторые команды SQL предыдущего месяца, но не смог найти это, поскольку он показывает только записи последних 4-5 дней.

есть ли способ найти старые команды SQL, которые не отображаются на вкладке Истории SQL.

5 ответов

как Oracle документировала, есть папка истории SQL, и она больше (имеет больше SQL-запросов, которые возвращаются около года), чем панель инструментов истории SQL (несколько месяцев).

вот содержимое моей панели инструментов истории SQL:

oracle история sql запросов. Смотреть фото oracle история sql запросов. Смотреть картинку oracle история sql запросов. Картинка про oracle история sql запросов. Фото oracle история sql запросов

Что касается папки истории SQL, примечания к выпуску цитируют это место в Windows 7:

пока эта папка содержит историю SQL, а также содержит: пользовательские отчеты и пользовательские файлы фрагментов (например, см. 3.1 примечания к выпуску SQL Developer) Вот моя папка истории SQL:

oracle история sql запросов. Смотреть фото oracle история sql запросов. Смотреть картинку oracle история sql запросов. Картинка про oracle история sql запросов. Фото oracle история sql запросов

Я не вижу никакой документации для регулировки размера либо.

внутри этого перейдите в меню:

измените его на то, что вы хотите. (В 4.0.1.14, Макс был 999999999.)

надеюсь, что это помогает.

С наилучшими пожеланиями.

вы можете попробовать

просмотр > история SQL

например, посмотрите эту картину: oracle история sql запросов. Смотреть фото oracle история sql запросов. Смотреть картинку oracle история sql запросов. Картинка про oracle история sql запросов. Фото oracle история sql запросов

Ну, я думаю, есть еще вариант такой:

в SQL Developer> меню Вид: View menu» src=»https://askdev.ru/images/content/25807835/455ef82761b529cb1944b9301be91f4e.png»>

затем перейдите к опции file: oracle история sql запросов. Смотреть фото oracle история sql запросов. Смотреть картинку oracle история sql запросов. Картинка про oracle история sql запросов. Фото oracle история sql запросов

и у вас есть вкладка » последние файлы: oracle история sql запросов. Смотреть фото oracle история sql запросов. Смотреть картинку oracle история sql запросов. Картинка про oracle история sql запросов. Фото oracle история sql запросов

Источник

July 24, 2013

How to find SQL,SQL_ID history on Oracle

Session related Queries

Last/Latest Running SQL
————————
set pages 50000 lines 32767
col «Last SQL» for 100
SELECT t.inst_id,s.username, s.sid, s.serial#,t.sql_id,t.sql_text «Last SQL»
FROM gv$session s, gv$sqlarea t
WHERE s.sql_address =t.address AND
s.sql_hash_value =t.hash_value
/

Current Running SQLs
———————
set pages 50000 lines 32767
col HOST_NAME for a20
col EVENT for a40
col MACHINE for a30
col SQL_TEXT for a50
col USERNAME for a15

select sid,serial#,a.sql_id,a.SQL_TEXT,S.USERNAME,i.host_name,machine,S.event,S.seconds_in_wait sec_wait,
to_char(logon_time,’DD-MON-RR HH24:MI’) login
from gv$session S,gV$SQLAREA A,gv$instance i
where S.username is not null
— and S.status=’ACTIVE’
AND S.sql_address=A.address
and s.inst_id=a.inst_id and i.inst_id = a.inst_id
and sql_text not like ‘select S.USERNAME,S.seconds_in_wait%’
/

Current Running SQLs
———————
set pages 50000 lines 32767
col program format a20
col sql_text format a50

select b.sid,b.status,b.last_call_et,b.program,c.sql_id,c.sql_text
from v$session b,v$sqlarea c
where b.sql_id=c.sql_id
/

Last/Latest Running SQL
————————
set pages 50000 lines 32767
select inst_id,sample_time,session_id,session_serial#,sql_id from gv$active_session_history
where sql_id is not null
order by 1 desc
/

SQLs Running from longtime
—————————
alter session set nls_date_format = ‘dd/mm/yyyy hh24:mi’;
set pages 50000 lines 32767
col target format a25
col opname format a40
select sid
,opname
,target
,round(sofar/totalwork*100,2) as percent_done
,start_time
,last_update_time
,time_remaining
from
v$session_longops
/

Active Sessions running for more than 1 hour
———————————————
set pages 50000 lines 32767
col USERNAME for a10
col MACHINE for a15
col PROGRAM for a40

SELECT USERNAME,machine,inst_id,sid,serial#,PROGRAM,
to_char(logon_time,’dd-mm-yy hh:mi:ss AM’)»Logon Time»,
ROUND((SYSDATE-LOGON_TIME)*(24*60),1) as MINUTES_LOGGED_ON,
ROUND(LAST_CALL_ET/60,1) as Minutes_FOR_CURRENT_SQL
From gv$session
WHERE STATUS=’ACTIVE’
AND USERNAME IS NOT NULL and ROUND((SYSDATE-LOGON_TIME)*(24*60),1) > 60
ORDER BY MINUTES_LOGGED_ON DESC;

Session details associated with SID and Event waiting for
———————————————————
set pages 50000 lines 32767
col EVENT for a40

select a.sid, a.serial#, a.status, a.program, b.event,to_char(a.logon_time, ‘dd-mon-yy hh24:mi’) LOGON_TIME,to_char(Sysdate, ‘dd-mon-yy-hh24:mi’) CURRENT_TIME, (a.last_call_et/3600) «Hrs connected» from v$session a,v$session_wait b where a.sid in(&SIDs) and a.sid=b.sid order by 8;

Checking for Active Transactions SID
————————————
select username,t.used_ublk,t.used_urec from v$transaction t,v$session s where t.addr=s.taddr;

Session details from Session longops
————————————-
select inst_id,SID,SERIAL#,OPNAME,SOFAR,TOTALWORK,START_TIME,LAST_UPDATE_TIME, username from gv$session_longops;

To list count of connections from other machines
————————————————
select count(1),machine from gv$session where inst_id=’&inst_id’ group by machine;

To get total count of sessions and processes
———————————————
select count(*) from v$session;

select count(*) from v$process;

select (select count(*) from v$session) sessions, (select count(*) from v$process) processes from dual;

To find sqltext thru sqladdress
——————————-
select sql_address from v$session where sid=1999;

select sql_text from v$sqltext where ADDRESS=’C00000027FF00AF0′ order by PIECE;

To find sqltext for different sql hashvalue
——————————————-
select hash_value,sql_text from v$sql where hash_value in (1937378691,1564286875,
248741712,2235840973,2787402785)

To list inactive Sessions respective username
———————————————
SELECT username,count(*) num_inv_sess
FROM v$session
where last_call_et > 3600
and username is not null
AND STATUS=’INACTIVE’
group by username
order by num_inv_sess DESC;

SELECT count(*) FROM v$session where last_call_et > 43200 and username is not null AND
STATUS=’INACTIVE’;
SELECT count(*) FROM v$session where last_call_et > 3600 and username is not null AND
STATUS=’INACTIVE’;

To find session id with set of SPIDs
————————————
select sid from v$session, v$process where addr=paddr and spid in (‘11555′,’26265′,’11533’);

Источник

Oracle история sql запросов

� ������� ��� ����� ���������� ������� ��� ������
Would you like an HTML report, or a plain text report?
Enter ‘html’ for an HTML report, or ‘text’ for plain text Defaults to ‘html’
Enter value for report_type:

Instances in this Workload Repository schema srw1inst, srw2inst,

Enter value for num_days:

������ ����� ����������� ����� � ���� � ������� ���. ��������� ������ �������� ��������� ������:
oracle история sql запросов. Смотреть фото oracle история sql запросов. Смотреть картинку oracle история sql запросов. Картинка про oracle история sql запросов. Фото oracle история sql запросов

������ ���� �������� ���������� � ������� Snap shot detail
oracle история sql запросов. Смотреть фото oracle история sql запросов. Смотреть картинку oracle история sql запросов. Картинка про oracle история sql запросов. Фото oracle история sql запросов

Instance Efficiency Percentages(������������� ���������� � ���������)
oracle история sql запросов. Смотреть фото oracle история sql запросов. Смотреть картинку oracle история sql запросов. Картинка про oracle история sql запросов. Фото oracle история sql запросов

��� 5 foreground ��������� �������� ������� ������ ��� ������ ����������� ������� ������������������.
oracle история sql запросов. Смотреть фото oracle история sql запросов. Смотреть картинку oracle история sql запросов. Картинка про oracle история sql запросов. Фото oracle история sql запросов

oracle история sql запросов. Смотреть фото oracle история sql запросов. Смотреть картинку oracle история sql запросов. Картинка про oracle история sql запросов. Фото oracle история sql запросов

SQL Ordered by CUP Time.

��� �������� �� ������������� �������� ����������
oracle история sql запросов. Смотреть фото oracle история sql запросов. Смотреть картинку oracle история sql запросов. Картинка про oracle история sql запросов. Фото oracle история sql запросов

Источник

Oracle statistics. Как узнать статистику и время выполнения запроса?

Зачем вообще нужна эта статистика или любые другие показатели? В ходе разработки часто возникает вопрос, а что же быстрее работает? Эффективно ли расходуются ресурсы базы? Если написать код по другому станет ли лучше?

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

В данной статье не будет рассказано как анализировать показатели, а будет рассказано как их получить.

Описание компонентов

v$mystat

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

ПолеТипОписание
sidnumberидентификатор текущей сессии, полную информацию можно увидеть в v$session
statistic#numberидентификатор значения статистики, ссылается на преставление v$statname
valuenumberзначение статистики
con_idnumberидентификатор контейнера (для мультиарендной контейнерной базы данных CDB)

v$statname

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

v$timer

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

ПолеТипОписание
hsecsnumberколичество времени в сотых долях секунды
con_idnumberидентификатор контейнера (для мультиарендной контейнерной базы данных CDB)

dbms_utility.get_cpu_time

Функция, которая возвращает время работы процессора (CPU) в сотых долях секунды.

Права

Для выполнения представления у пользователя (в моем случае PROD) должен быть доступ на все таблицы, подключаемся к БД с помощью пользователя SYS с ролью SYSDBA и выполняем скрипты ниже:

Измерение общего и CPU времени на запрос

Результат:
oracle история sql запросов. Смотреть фото oracle история sql запросов. Смотреть картинку oracle история sql запросов. Картинка про oracle история sql запросов. Фото oracle история sql запросов

Статистика

Получение статистики по одному запросу

Создание представления для быстрого доступа к данным

Для быстрого доступа к данным, соединим все ранее представленные скрипты по выводу данных по статистки, времени ЦПУ, общему времени и «упакуем» полученный запрос в представление. Вот как это будет выглядеть:

После создания VIEW, чтобы получить информацию достаточно выполнить простой запрос:

Создание процедуры фиксации статистики

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

Запустим программу (если будут ошибки, пишите в комментариях), пока результат мы не увидим, но статистику уже запишем:

Вывод результатов

Вывод статистики скриптом

Сразу обернем такой селект в VIEW для дальнейшего использования и расширения, также для лучшей читаемости, добавим форматирование для числа, чтобы тысячные доли разделялись запятыми:

Запускаем созданный VIEW, по желанию добавляем фильтры и сортируем:

Результат:
oracle история sql запросов. Смотреть фото oracle история sql запросов. Смотреть картинку oracle история sql запросов. Картинка про oracle история sql запросов. Фото oracle история sql запросов

Вывод статистики через dbms_output

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

Запустим отчет и посмотрим что получилось:

Результат:
oracle история sql запросов. Смотреть фото oracle история sql запросов. Смотреть картинку oracle история sql запросов. Картинка про oracle история sql запросов. Фото oracle история sql запросов

Источник

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

Добрый день! Работая разработчиком Oracle PL/SQL, часто ли вам приходилось видеть в коде dbms_output.put_line в качестве средства debug-а? Стоит признать, что к сожалению, большинство (по моему личному мнению и опыту) разработчиков Oracle PL/SQL не уделяет должного внимания логированию как к «спасательному кругу» в случае возникновения ошибок. Более того, большая часть разработчиков не совсем понимает зачем нужно логировать информацию об ошибках и самое главное, не совсем понимают что делать и как использовать эту информацию в будущем.

Предисловие

Данным постом хотел бы начать цикл статей посвященных «Логированию ошибок» в Oracle PL/SQL. В первую очередь донести мысль до многих разработчиков, о том как можно построить функционал фиксации, хранения логов в БД. На своем опыте продемонстрировать поэтапный процесс создания полноценного логирования в БД. Рассказать как нам удалось создать логирование ошибок, разработать единую нумерацию событий для их дальнейшей идентификации, как поверх логирования «натянуть» мониторинг событий, создать функционал позволяющий увидеть все текущие ошибки в БД в виде таблиц (с указанием частоты возникновения ошибок и кол-ва и т.д.), графиков (отразить динамику роста кол-ва ошибок) и правильно распределить ресурсы для устранения тех или иных ошибок.

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

Введение

Модель логирования позволяет реализовать:

Единый подход в обработке и хранении событий

Собственную нумерацию и идентификацию событий происходящих в БД (статья)

Единый мониторинг событий (статья в разработке)

Анализ событий происходящих в БД (статья в разработке)

Описанные выше характеристики указаны в порядке нумерации и каждый следующий пункт (шаг) есть улучшение и усложнение существующей модели. Описание этой модели будет сложно выполнить в рамках одной статьи, поэтому опишем их последовательно. Начнём с первого пункта.

Единый подход в обработке и хранении событий

Основной идеей «Единого подхода в обработке и хранении событий» заключается в создании одного одновременно простого и в тоже время очень сложного правила: «Все объекты базы данных (функции, процедуры) в обязательном порядке должны завершаться блоком обработки исключений с последующим логированием события». Простота заключается в том, что легко, в команде разработчиков, на словах договориться об исполнении данного правила. Сложность же заключается в том, что данное правило должно быть установлено на ранних этапах создания вашей БД и выполняться обязательно на протяжении всего жизненного цикла. Внедрить функционал логирования в уже существующие и действующие БД очень сложно (практически не возможно).

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

Наверное сейчас кто-то из читателей может возразить: «Зачем в обязательном порядке?». А всё очень просто, если вы разработчик PL/SQL и вы не согласны с этим правилом, то вот вам пример. Посмотрите на свой текущий проект более внимательно. Скорее всего вы найдете какое-нибудь логирование событий реализованное кем-то, когда-то. Вспомните сколько раз вы обращались к этому логированию при решении багов. Именно в таких ситуациях, когда есть срочность по времени в исправлении бага, вы или ваши коллеги начинают использовать dbms_output.put_line в качестве экспресс-дебага (быстрый способ получения значений переменных используемых в коде). Согласитесь, что для исправления бага мало знать в какой процедуре, в каком запросе и на какой строке возникла ошибка, необходимо знать параметры запроса на которых возникает ошибка. И вот тут нам на помощь приходит «Логирование событий», потому что помимо места возникновения ошибки мы узнаем параметры вызова процедуры, в которой возникает ошибка и это очень упрощает исправление бага.

Первая статья посвящена базовому функционалу «Логирования событий». В простейшей реализации это одна общая таблица и пакет процедур для работы с ней. Для создания и демонстрации логирования, нам необходимо реализовать следующие объекты БД (весь список объектов с их исходными кодами представлен в Git):

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

Также, учитывайте пожалуйста, что создание партиции требует как минимум Oracle EE. Создание партиции вне указанной версии Oracle приведет к нарушению лицензионного соглашения.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *