Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / SELECT запрос с CLOB полями с сортировкой по времени / 25 сообщений из 49, страница 1 из 2
23.11.2018, 17:19
    #39737634
kroper34
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT запрос с CLOB полями с сортировкой по времени
Коллеги всем привет! Очень выручите если поделитесь экспиренсом куда копать и в чем может быть проблема. Нужно выполнить следующий запрос:

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

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

Да, нужны, значения в этих полях являются очень важными. Пробовал вложенный запрос с преобразованием в varchar2 - не помогло. :(
...
Рейтинг: 0 / 0
23.11.2018, 17:32
    #39737640
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT запрос с CLOB полями с сортировкой по времени
Elickroper34ORA-01861: literal does not match format stringТы или твоё приложение не умеете bind-иться.
...
Рейтинг: 0 / 0
23.11.2018, 17:39
    #39737644
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT запрос с CLOB полями с сортировкой по времени
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
23.11.2018, 17:41
    #39737647
kroper34
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT запрос с CLOB полями с сортировкой по времени
andreymx,

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


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

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

SY.
...
Рейтинг: 0 / 0
23.11.2018, 17:54
    #39737657
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT запрос с CLOB полями с сортировкой по времени
Покажи окончательный запрос и значение переменной
...
Рейтинг: 0 / 0
23.11.2018, 17:57
    #39737659
kroper34
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT запрос с CLOB полями с сортировкой по времени
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
23.11.2018, 17:58
    #39737660
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT запрос с CLOB полями с сортировкой по времени
kroper34,

а если не лоб-ы тянуть в запросе, а dbm_lob.substr ?
...
Рейтинг: 0 / 0
23.11.2018, 18:01
    #39737664
kroper34
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT запрос с CLOB полями с сортировкой по времени
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
23.11.2018, 18:01
    #39737665
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT запрос с CLOB полями с сортировкой по времени
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
23.11.2018, 18:02
    #39737667
kroper34
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT запрос с CLOB полями с сортировкой по времени
orawish,

Я пробовал эту функцию, и даже пробовал ее указывать во вложенном запросе, откуда уже тянул char поле - не помогло (
...
Рейтинг: 0 / 0
23.11.2018, 18:04
    #39737669
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT запрос с CLOB полями с сортировкой по времени
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
23.11.2018, 18:06
    #39737670
kroper34
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT запрос с CLOB полями с сортировкой по времени
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
23.11.2018, 18:06
    #39737672
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT запрос с CLOB полями с сортировкой по времени
kroper34orawish,

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


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

SY.
...
Рейтинг: 0 / 0
23.11.2018, 18:17
    #39737678
kroper34
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT запрос с CLOB полями с сортировкой по времени
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
23.11.2018, 18:19
    #39737679
kroper34
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT запрос с CLOB полями с сортировкой по времени
SY,

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

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

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

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

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

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

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

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


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