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

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

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

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

5 ответов

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

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 запросов. 1P7M0. oracle история sql запросов фото. oracle история sql запросов-1P7M0. картинка oracle история sql запросов. картинка 1P7M0. в SQL Developer я нашел некоторые команды SQL предыдущего месяца, но не смог найти это, поскольку он показывает только записи последних 4-5 дней.

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

Instance Efficiency Percentages(������������� ���������� � ���������)
oracle история sql запросов. N8TJb. oracle история sql запросов фото. oracle история sql запросов-N8TJb. картинка oracle история sql запросов. картинка N8TJb. в SQL Developer я нашел некоторые команды SQL предыдущего месяца, но не смог найти это, поскольку он показывает только записи последних 4-5 дней.

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

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

SQL Ordered by CUP Time.

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

Источник

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 запросов. result time one query. oracle история sql запросов фото. oracle история sql запросов-result time one query. картинка oracle история sql запросов. картинка result time one query. в SQL Developer я нашел некоторые команды SQL предыдущего месяца, но не смог найти это, поскольку он показывает только записи последних 4-5 дней.

Статистика

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

Часть 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 не будет опубликован. Обязательные поля помечены *