powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / SELECT запрос с CLOB полями с сортировкой по времени
49 сообщений из 49, показаны все 2 страниц
SELECT запрос с CLOB полями с сортировкой по времени
    #39737634
kroper34
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги всем привет! Очень выручите если поделитесь экспиренсом куда копать и в чем может быть проблема. Нужно выполнить следующий запрос:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
SELECT INSERT_DATE,
         ATTACHMENTS,
         CAPTURE_SERVER_HOSTNAME,
         CAPTURE_SERVER_IP,
         CATEGORIES,
         CAPTURE_DATE,
         DEVICE,
         FILEPATH,
         FINGERPRINTS,
         MONITORCODE,
         OBJECT_ID,
         PERIMETERSIN,
         PERIMETERSOUT,
         POLICIES,
         PROTECTEDDOCUMENTS,
         PROTOCOL,
         RECIPIENTSCONTACTS,
         RECIPIENTSDOMAINACCOUNTNAME,
         RECIPIENTSFULLNAME,
         SENDERMACHINEDOMAINNAME,
         SENDERMACHINEIP,
         SENDERSCONTACTS,
         SENDERSDOMAINACCOUNTNAME,
         SENDERSFULLNAME,
         USERDECISION,
         VERDICT,
         VIOLATION_LEVEL
FROM "IWTM"."ARC_VIEW_OBJECTS"
WHERE INSERT_DATE > ?
ORDER BY INSERT_DATE ASC



При запросе возникает ошибка: ORA-01861: literal does not match format string
Или же запрос выполняется, но неадекватно долго. Порядка 20-30 минут.

Как я понял ошибка возникает из-за clob значений. При выполнении аналогичного запроса с удалением всех полей типа clob, он отлично отрабатывает. При выполнении запроса без сортировки С clob полями, он отрабатывает. Как только в запросе присутствуют поля типа clob и сортировка по дате, вылетает ошибка.

Буду очень благодарен, если кто-то с таким сталкивался и поделится опытом. Сам ранее с Oracle не встречался.
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737637
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kroper34КоллегиЯвисты здесь не коллеги.
kroper34Как я понял ошибка возникает из-за clob значений.Ты заблуждаешься.
kroper34ORA-01861: literal does not match format stringТы или твоё приложение не умеете bind-иться.
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737638
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kroper34,

а нужны ли цлобы в запросе?
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737639
kroper34
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreymx,

Да, нужны, значения в этих полях являются очень важными. Пробовал вложенный запрос с преобразованием в varchar2 - не помогло. :(
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737640
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elickroper34ORA-01861: literal does not match format stringТы или твоё приложение не умеете bind-иться.
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737644
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kroper34При запросе возникает ошибка: ORA-01861: literal does not match format string


Код: plsql
1.
WHERE INSERT_DATE > ?



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

Код: plsql
1.
select 1 from dual where trunc(sysdate) = ?



и передает параметр '20181123' . Если формат дат по умолчанию для сессии 'yyyy/mm/dd', то:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SQL> alter session set nls_date_format='yyyy/mm/dd';

Session altered.

SQL> select 1 from dual where trunc(sysdate) = '20181123';

         1
----------
         1

SQL> 



А если формат дат по умолчанию для сессии 'dd/mm/yyyy', то:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SQL> alter session set nls_date_format='dd/mm/yyyy';

Session altered.

SQL> select 1 from dual where trunc(sysdate) = '20181123';
select 1 from dual where trunc(sysdate) = '20181123'
                                          *
ERROR at line 1:
ORA-01861: literal does not match format string


SQL>  



Так-что либо используй DATE параметр либо

Код: plsql
1.
WHERE INSERT_DATE > TO_DATE(?,'формат')



SY.
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737647
kroper34
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreymx,

К, сожалению я не знаю, что это значит. В моем случае БД нужна мне только для выполнения SELECT запросов по шедулеру, с указанием чекпоинта, отслеживающего новые строки. Если по простому можете объяснить, возможно ли решить мой вопрос на стороне клиента, буду очень благодарен.
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737651
kroper34
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,
Спасибо большое за ответ! Такие варианты пробовал, не увенчались успехом. При твоем варианте, сейчас получил новую ошибку:
Код: html
1.
ORA-01821: date format not recognized


Настараживает тот момент, что при удалении из запроса полей типа CLOB, запрос без проблем отрабатывает в течении 2-3 сек.
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737656
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kroper34,

И какой-же формат ты указал?

SY.
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737657
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Покажи окончательный запрос и значение переменной
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737659
kroper34
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

yyyy-mm-dd hh24:mi:ss.ff и yyyy-mm-dd hh24:mi:ss.f варианты пробовал

Значения приходят типа, 0000-00-00 00:00:00.0

Думаю, эта ошибка возникает из-за того что поле уже типа DATE
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737660
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kroper34,

а если не лоб-ы тянуть в запросе, а dbm_lob.substr ?
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737664
kroper34
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreymx,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
SELECT INSERT_DATE,
         ATTACHMENTS,
         CAPTURE_SERVER_HOSTNAME,
         CAPTURE_SERVER_IP,
         CATEGORIES,
         CAPTURE_DATE,
         DEVICE,
         FILEPATH,
         FINGERPRINTS,
         MONITORCODE,
         OBJECT_ID,
         PERIMETERSIN,
         PERIMETERSOUT,
         POLICIES,
         PROTECTEDDOCUMENTS,
         PROTOCOL,
         RECIPIENTSCONTACTS,
         RECIPIENTSDOMAINACCOUNTNAME,
         RECIPIENTSFULLNAME,
         SENDERMACHINEDOMAINNAME,
         SENDERMACHINEIP,
         SENDERSCONTACTS,
         SENDERSDOMAINACCOUNTNAME,
         SENDERSFULLNAME,
         USERDECISION,
         VERDICT,
         VIOLATION_LEVEL
FROM "IWTM"."ARC_VIEW_OBJECTS"
WHERE INSERT_DATE > '2018-11-21 00:00:00.0'
ORDER BY INSERT_DATE ASC



Может быть причиной поля типа CLOB или точно не в этом дело? Просто чтобы хоть как-то сузить поиск. У меня есть подозрения на кривую таблицу, к которой цепляюсь, но к сожалению к серверной части доступа нет, чтобы все проверить.
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737665
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kroper34SY,

yyyy-mm-dd hh24:mi:ss.ff и yyyy-mm-dd hh24:mi:ss.f варианты пробовал

Значения приходят типа, 0000-00-00 00:00:00.0

Думаю, эта ошибка возникает из-за того что поле уже типа DATE


yyyy-mm-dd hh24:mi:ss.ff - Это TIMESTAMP. Тогда:

Код: plsql
1.
WHERE INSERT_DATE > TO_TIMESTAMP(?,'yyyy-mm-dd hh24:mi:ss.ff')



SY.
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737667
kroper34
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
orawish,

Я пробовал эту функцию, и даже пробовал ее указывать во вложенном запросе, откуда уже тянул char поле - не помогло (
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737669
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kroper34,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
SELECT INSERT_DATE,
         ATTACHMENTS,
         CAPTURE_SERVER_HOSTNAME,
         CAPTURE_SERVER_IP,
         CATEGORIES,
         CAPTURE_DATE,
         DEVICE,
         FILEPATH,
         FINGERPRINTS,
         MONITORCODE,
         OBJECT_ID,
         PERIMETERSIN,
         PERIMETERSOUT,
         POLICIES,
         PROTECTEDDOCUMENTS,
         PROTOCOL,
         RECIPIENTSCONTACTS,
         RECIPIENTSDOMAINACCOUNTNAME,
         RECIPIENTSFULLNAME,
         SENDERMACHINEDOMAINNAME,
         SENDERMACHINEIP,
         SENDERSCONTACTS,
         SENDERSDOMAINACCOUNTNAME,
         SENDERSFULLNAME,
         USERDECISION,
         VERDICT,
         VIOLATION_LEVEL
FROM "IWTM"."ARC_VIEW_OBJECTS"
WHERE INSERT_DATE > TO_TIMESTAMP('2018-11-21 00:00:00.0','yyyy-mm-dd hh24:mi:ss.ff')
ORDER BY INSERT_DATE ASC



SY.
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737670
kroper34
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

Спасибо за ответ! К сожалению, после этого новая ошибка:

Код: html
1.
ORA-01652: unable to extend temp segment by 128 in tablespace TEMP ORA-06512: at "WMSYS.WM_CONCAT_IMPL", line 31
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737672
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kroper34orawish,

Я пробовал эту функцию, и даже пробовал ее указывать во вложенном запросе, откуда уже тянул char поле - не помогло (
покажите (а то, впечатление, что вы пугаетесь ~куста )
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737677
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kroper34Спасибо за ответ! К сожалению, после этого новая ошибка:


Убери ORDER BY. Какoй смысл сортировать для вставки если реляционная таблица это неупорядоченное множество?

SY.
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737678
kroper34
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
orawish,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT INSERT_DATE,
         d 
FROM (SELECT INSERT_DATE,
         DBMS_LOB.SUBSTR(ATTACHMENTS,
         1000,
         1) AS d
    FROM "IWTM"."ARC_VIEW_OBJECTS")
    ORDER BY INSERT_DATE



В запросе используется одно из полей типа CLOB. Запрос не отрабатывает. Если убрать сортировку - сразу все ок.
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737679
kroper34
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

У меня запрос весит на шедулере, у которого есть чекпоинт значение в данном случае - INSERT_DATE. При очередном выполнении запроса, он смотрит на последнюю дату в выборке последнего селекта и начинает новый с новых записей таблицы. Делается для исключения дубликатов в новом запросе.
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737681
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kroper34SY,

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

Ну и причем тут ORDER BY в INSERT? Но дело не в этом: ORA-06512: at "WMSYS.WM_CONCAT_IMPL". Этого в INSERTе нет, значит ты где-то конкaтенируешь строки.

SY.
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737685
kroper34
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

Ты, прав по логике сортировка не нужна, но в клиенте ПО, которое я использую, это условие зашито для построения запроса. Но все же как ты и сказал, сортировка тут проблемой быть не должна.
Про конкат честно говоря не очень понял, где я могу косячить :(
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737689
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kroper34Про конкат честно говоря не очень понял, где я могу косячить :(

В INSERTе указаны поля или есть вызовы функций? Также "на шедулере" только INSERT или INSERT только часть задания?

SY.
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737690
kroper34
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

Не совсем понял о каких INSERTах идет речь? Я выполняю SELECT запросы, как все устроено на стороне сервера я не могу сказать. Знаю только названия полей и их тип.
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737693
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вернее ошиба которую ты привел возникает когда ты выполняешь INSERT или при выполнении всего задания?

SY.
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737697
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kroper34SY,

Не совсем понял о каких INSERTах идет речь? Я выполняю SELECT запросы, как все устроено на стороне сервера я не могу сказать. Знаю только названия полей и их тип.

Упс, Почему-то казалось у тебя INSERT SELECT. SELECT проходит если убрать ORDER BY?

SY.
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737700
kroper34
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

Что интересно, да, SELECT без ORDER BY работает, но при этом тоже с выводом ошибки:
java.lang.RuntimeException: java.lang.RuntimeException: java.sql.SQLException: ORA-01652: unable to extend temp segment by 128 in tablespace TEMP ORA-06512: at "WMSYS.WM_CONCAT_IMPL", line 31
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737702
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kroper34SY,

Что интересно, да, SELECT без ORDER BY работает, но при этом тоже с выводом ошибки:
java.lang.RuntimeException: java.lang.RuntimeException: java.sql.SQLException: ORA-01652: unable to extend temp segment by 128 in tablespace TEMP ORA-06512: at "WMSYS.WM_CONCAT_IMPL", line 31

Еще раз, в SELECTe указаны поля или есть вызовы функций? Приведи структуру таблицы "IWTM"."ARC_VIEW_OBJECTS".

SY.
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737706
kroper34
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

Что ты подразумеваешь под структурой? Все что я знаю о таблице: названия полей, их описание и тип данных.
Представь что SELECT состоит из 4 полей:
object_id - Number(20) - идентификатор события
monitorcode - Varchar2(4000) - Тип события
insert_date - timestamp - Дата вставки события
categories - clob - Категории события

Вот нужно мне сделать SELECT из этих полей с сортировкой по insert_date. Делаю такой запрос:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
SELECT object_id,
monitorcode,
insert_date,
categories
FROM "IWTM"."ARC_VIEW_OBJECTS"
WHERE INSERT_DATE > '2018-11-21 00:00:00.0'
ORDER BY INSERT_DATE ASC



Но запрос не отрабатывает. Как только убираю поле clob, отрабатывает. Нужно чтобы отработало вместе с clob полем.
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737709
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выполни без ORDER BY:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
SELECT object_id,
monitorcode,
insert_date,
categories
FROM "IWTM"."ARC_VIEW_OBJECTS"
WHERE INSERT_DATE > '2018-11-21 00:00:00.0'
/



SY.
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737711
kroper34
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

java.sql.SQLDataException: ORA-01861: literal does not match format string[SRC HTML][/SRC]
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737714
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kroper34SY,

java.sql.SQLDataException: ORA-01861: literal does not match format string


Ну ведь сказали уже - используй TO_TIMESTAMP:

Код: plsql
1.
2.
3.
4.
5.
6.
SELECT object_id,
monitorcode,
insert_date,
categories
FROM "IWTM"."ARC_VIEW_OBJECTS"
WHERE INSERT_DATE > TO_TIMESTAMP('2018-11-21 00:00:00.0','yyyy-mm-dd hh24:mi:ss.ff')



SY.
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737715
kroper34
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

Очень долго, но выполнился. Минуты 2-3 ждал. Для сравнения запрос из 25 полей без фильтров и сортировок ~2-3 сек.
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737718
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kroper34SY,

Очень долго, но выполнился. Минуты 2-3 ждал. Для сравнения запрос из 25 полей без фильтров и сортировок ~2-3 сек.

Сколько строк возвращает? Выполни:

Код: plsql
1.
2.
3.
SELECT count(*)
FROM "IWTM"."ARC_VIEW_OBJECTS"
WHERE INSERT_DATE > TO_TIMESTAMP('2018-11-21 00:00:00.0','yyyy-mm-dd hh24:mi:ss.ff')



и покажи результат. Затем выполни:

Код: plsql
1.
2.
3.
4.
5.
6.
SELECT object_id,
monitorcode,
insert_date --,
--categories
FROM "IWTM"."ARC_VIEW_OBJECTS"
WHERE INSERT_DATE > TO_TIMESTAMP('2018-11-21 00:00:00.0','yyyy-mm-dd hh24:mi:ss.ff')



и огласи время выполнeния.

SY.
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737719
kroper34
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

193639

Второй запрос возвращает ошибку
ORA-00923: FROM keyword not found where expected
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737720
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kroper34,

Код: plsql
1.
2.
3.
4.
5.
SELECT object_id,
monitorcode,
insert_date
FROM "IWTM"."ARC_VIEW_OBJECTS"
WHERE INSERT_DATE > TO_TIMESTAMP('2018-11-21 00:00:00.0','yyyy-mm-dd hh24:mi:ss.ff')



SY.
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737722
kroper34
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

Выполнялся достаточно долго, около 40 сек
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737723
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kroper34SY,

Выполнялся достаточно долго, около 40 сек

А теперь:

Код: plsql
1.
2.
3.
4.
5.
6.
SELECT object_id,
monitorcode,
insert_date
FROM "IWTM"."ARC_VIEW_OBJECTS"
WHERE INSERT_DATE > TO_TIMESTAMP('2018-11-21 00:00:00.0','yyyy-mm-dd hh24:mi:ss.ff')
ORDER BY INSERT_DATE ASC



SY.
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737724
kroper34
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

Для примера без проблем работает следующий запрос к другой таблице этой же БД, в SELECT присутствует одно поле типа CLOB.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT AUDIT_LOG_ID AS Audit_ID,
         CHANGE_DATE AS DateTime,
         USER_LOGIN AS UserLogin,
         USER_FULLNAME AS UserName,
         USER_EMAIL AS Email,
         OPERATION AS Operation,
         ENTITY_TYPE AS Entity_Type,
         ENTITY_DISPLAY_NAME AS Entity_Name,
         ENTITY_ID AS Entity_ID,
         PROPERTY_CHANGES AS Property_Changes
FROM "IWTM"."ARC_VIEW_AUDIT_LOG"
WHERE AUDIT_LOG_ID > ?
ORDER BY AUDIT_LOG_ID ASC
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737726
kroper34
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

+/- так же, возможно немного дольше, секунд 45.
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737731
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kroper34SY,

+/- так же, возможно немного дольше, секунд 45.

T.e. без CLOB 40 sec без ORDER BY и 45 c (хотя данные уже в buffer cache). C CLOBом без ORDER BY 2 минуты - минутa 20 сек. прочесть 193,639 CLOBов а тут завиит от размера CLOBов, кстати какой?). Теперь:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
SELECT object_id,
monitorcode,
categories,
insert_date
FROM "IWTM"."ARC_VIEW_OBJECTS"
WHERE INSERT_DATE > TO_TIMESTAMP('2018-11-21 00:00:00.0','yyyy-mm-dd hh24:mi:ss.ff')
ORDER BY INSERT_DATE ASC



SY.
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737733
kroper34
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

По размерам CLOB, к сожалению, инфы дать не могу, но подозреваю, что бывают очень большие. Последний запрос не отрабатывает, возвращает ошибку:
Код: html
1.
ORA-01652: unable to extend temp segment by 128 in tablespace TEMP ORA-06512: at "WMSYS.WM_CONCAT_IMPL", line 31


Так же попробовал такой фильтр, работает в разы быстрее, но с сортировкой опять тухло:
Код: html
1.
WHERE INSERT_DATE > CAST(TO_TIMESTAMP(?,'yyyy-mm-dd hh24:mi:ss.ff') AS DATE)
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737736
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kroper34но с сортировкой опять тухло:


А так?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
SELECT object_id,
monitorcode,
categories,
insert_date
FROM "IWTM"."ARC_VIEW_OBJECTS"
WHERE INSERT_DATE > CAST(TO_TIMESTAMP('2018-11-21 00:00:00.0','yyyy-mm-dd hh24:mi:ss.ff') AS DATE)
ORDER BY ROW_NUMBER() OVER(ORDER BY INSERT_DATE ASC)



SY.
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737737
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще, я бы время на сортиовку и не тратил. Тебе нужна max INSERT_DATE последнего SELECTa, так и вычисляй ее в java сравнивая MAX_INSERT_DATE c INSERT_DATE прочитанной строки.

SY.
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39737739
kroper34
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

Спасибо большое за помощь! Завтра буду ещё пробовать, если что-то получится, отпишусь.
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39740128
kroper34
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

В итоге уже 3 дня стабильно отрабатывает следующий запрос:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
SELECT INSERT_DATE,
         dbms_lob.substr(ATTACHMENTS, 400, 1) AS ATTACHMENTS,
         CAPTURE_SERVER_HOSTNAME,
         CAPTURE_SERVER_IP,
         dbms_lob.substr(CATEGORIES, 400, 1) AS CATEGORIES,
         CAPTURE_DATE,
         DEVICE,
         FILEPATH,
         dbms_lob.substr(FINGERPRINTS, 400, 1) AS FINGERPRINTS,
         MONITORCODE,
         OBJECT_ID,
         dbms_lob.substr(PERIMETERSIN, 400, 1) AS PERIMETERSIN,
         dbms_lob.substr(PERIMETERSOUT, 400, 1) AS PERIMETERSOUT,
         dbms_lob.substr(POLICIES, 400, 1) AS POLICIES,
         dbms_lob.substr(PROTECTEDDOCUMENTS, 400, 1) AS PROTECTEDDOCUMENTS,
         PROTOCOL,
         dbms_lob.substr(RECIPIENTSCONTACTS, 400, 1) AS RECIPIENTSCONTACTS,
         dbms_lob.substr(RECIPIENTSDOMAINACCOUNTNAME, 400, 1) AS RECIPIENTSDOMAINACCOUNTNAME,
         dbms_lob.substr(RECIPIENTSFULLNAME, 400, 1) AS RECIPIENTSFULLNAME,
         dbms_lob.substr(SENDERMACHINEDOMAINNAME, 400, 1) AS SENDERMACHINEDOMAINNAME,
         dbms_lob.substr(SENDERMACHINEIP, 400, 1) AS SENDERMACHINEIP,
         dbms_lob.substr(SENDERSCONTACTS, 400, 1) AS SENDERSCONTACTS,
         dbms_lob.substr(SENDERSDOMAINACCOUNTNAME, 400, 1) AS SENDERSDOMAINACCOUNTNAME,
         dbms_lob.substr(SENDERSFULLNAME, 400, 1) AS SENDERSFULLNAME,
         USERDECISION,
         VERDICT,
         VIOLATION_LEVEL
FROM "IWTM"."ARC_VIEW_OBJECTS"
WHERE INSERT_DATE > ?
ORDER BY INSERT_DATE ASC



Опытным путем выявил данную длину при преобразовании CLOB полей и параметры запуска шедулера (каждые 20 мин). В итоге подозреваю, что попадались поля с крайней большим размером, и либо не хватало ОЗУ на клиенте, либо присутствуют ограничения по размеру поля на стороне клиентского ПО.
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39740323
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kroper34,

Дай-ка угадаю, а читаешь ты их в java.lang.String, вместо явной обработки LOB?
...
Рейтинг: 0 / 0
SELECT запрос с CLOB полями с сортировкой по времени
    #39740324
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kroper34,

И ещё вопрос: "IWTM"."ARC_VIEW_OBJECTS" - вьюха с десятком join внутри?
...
Рейтинг: 0 / 0
49 сообщений из 49, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / SELECT запрос с CLOB полями с сортировкой по времени
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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