Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Поиск sequence по БД / 9 сообщений из 9, страница 1 из 1
24.11.2017, 12:02
    #39558887
Reflector
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск sequence по БД
Добрый день.
Появилась необходимость отследить последовательность, которая используется при вставке в таблицу БД, когда идет определенное действие в интерфейсе(установка флажка). Простейшая таблица с 2-мя полями, в одном из которых ID, как раз генерится.
Есть ли какой-то способ отследить sequence, которая используется при этом?
По
Код: plsql
1.
select  * from dba_sequences a where a.LAST_NUMBER=147212

не работает, скорее всего эта последовательность лежит в пакете(или я не прав). Но в данной таблице ее нет. Тоже бы хотелось узнать, из-за чего.
Пробовал искать по all_source и фильтровать по last_ddl_time, но там не увидел ничего кроме таблиц(что логично).
Заранее спасибо за инфу
...
Рейтинг: 0 / 0
24.11.2017, 12:05
    #39558891
tru55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск sequence по БД
1. последовательность не может быть в пакете
2. последовательность "дергается" либо в клиентской программе, производящей вставку, либо в триггере
3. любой SQL можно отследить, включив трассировку сессии
...
Рейтинг: 0 / 0
24.11.2017, 12:11
    #39558899
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск sequence по БД
Reflector,

Код: plsql
1.
2.
3.
4.
select * 
from v$open_cursor c 
where c.sid=:SID_нужной_сессии 
and upper(sql_text) like '%NEXTVAL%';
...
Рейтинг: 0 / 0
24.11.2017, 12:20
    #39558909
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск sequence по БД
Reflectorselect * from dba_sequences a where a.LAST_NUMBER=147212

если без трассы
select * from dba_sequences a where a.LAST_NUMBER between 147212 and 147212+CACHE_SIZE+??? еще немного

dba_sequences учитывает cache

ps
можно попробовать
... LAST_NUMBER like '147___'

.....
stax
...
Рейтинг: 0 / 0
24.11.2017, 12:24
    #39558913
цацхе 10
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск sequence по БД
Код: plsql
1.
select  * from dba_sequences a where a.LAST_NUMBER=147212

Вероятность попасть на конкретный номер зависит от атрибутов сиквенса, для некоторых значений равна нулю, а для некоторых меньше единицы. Отсортируй список и ткни пальцем в близкие значения.
...
Рейтинг: 0 / 0
24.11.2017, 12:45
    #39558936
Reflector
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск sequence по БД
Stax,
Спасибо, помогло. Просто есть последовательность, очень похожая. Но ее last_number=147321, а БД на данный момент вставляется запись id=147217.
Правильно ли я понимаю, что есть определенный "запас" для интерфейса? И будет ли правильным, если я, имитируя этот запрос буду вставлять запись
Код: plsql
1.
select sequence.nextval from dual


?
Ведь он вставит значение не из кэша, верно?
...
Рейтинг: 0 / 0
24.11.2017, 12:48
    #39558939
Reflector
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск sequence по БД
цацхе 10,
Спасибо большое за помощь, видел такую последовательность, но решил, что это не моя:)
...
Рейтинг: 0 / 0
24.11.2017, 13:26
    #39558982
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск sequence по БД
ReflectorВедь он вставит значение не из кэша, верно?
мож неправильно понимаю вопрос

если есть cache, то именно из кеша

тоесть
если cache 100 то токо "раз" sequence.nextval совпадет с LAST_NUMBER

ps
я (почти) всегда использовал cache

.....
stax
...
Рейтинг: 0 / 0
24.11.2017, 17:02
    #39559159
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск sequence по БД
Reflector,

А у меня вообще сумашедшая идея для дебаггинга возникла ( для случая, когда имя последовательности известно, но не ясно, кто её дергает )

1) последовательность переименовываем как-нибудь
2) Создаем package со старым именем последовательности, в нем функцию Nextval
3) В "функционирующем" случае из этой функции дергаем Nextval из последовательности
4) а вот когда хотим "дебаггинг", пусть Nextval генерирует исключение (exception) и вот тогда по call-stack 'у в некоторых случаях можно будет понять, кто вызвал Nextval
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Поиск sequence по БД / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]