Гость
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Слишком большие логи джоба / 12 сообщений из 12, страница 1 из 1
16.12.2021, 07:33
    #40120472
Igor Karmanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слишком большие логи джоба
Доброго времени суток!

Есть джоб, результат выполнения которого очень приличного размера (DBMS_OUTPUT.PUT).
В итоге результаты не влазят в поле OUTPUT, у которого тип, к сожалению, VARCHAR2.
Подскажите, пожалуйста, альтернативу полю OUTPUT?
Можно ли вставить результаты в BINARY_OUTPUT, к примеру, чтобы все влезло? И если можно, то как это реализовать?

Заранее спасибо!
...
Рейтинг: 0 / 0
16.12.2021, 11:51
    #40120563
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слишком большие логи джоба
Пишите в clob
...
Рейтинг: 0 / 0
16.12.2021, 13:26
    #40120596
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слишком большие логи джоба
Igor Karmanov
Доброго времени суток!

Есть джоб, результат выполнения которого очень приличного размера (DBMS_OUTPUT .PUT ).
В итоге результаты не влазят в поле OUTPUT, у которого тип, к сожалению, VARCHAR2.
Подскажите, пожалуйста, альтернативу полю OUTPUT?
Можно ли вставить результаты в BINARY_OUTPUT, к примеру, чтобы все влезло? И если можно, то как это реализовать?

Заранее спасибо!

Используйте
DBMS_OUTPUT .PUT_LINE
...
Рейтинг: 0 / 0
16.12.2021, 13:42
    #40120608
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слишком большие логи джоба
Igor Karmanov,

джоб пишет с помощью DBMS_OUTPUT

интересно как/чем смотрят(вычитывают) результат? DBMS_OUTPUT.GET_LINE в джобе?

.....
stax
...
Рейтинг: 0 / 0
16.12.2021, 14:22
    #40120635
SeaGate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слишком большие логи джоба
Igor KarmanovПодскажите, пожалуйста, альтернативу полю OUTPUT?
Можно ли вставить результаты в BINARY_OUTPUT, к примеру, чтобы все влезло? И если можно, то как это реализовать?
Если пишется в OUTPUT, то пишется и в BINARY_OUTPUT.
OUTPUT ограничен varchar2(4000).
На BINARY_OUTPUT ограничений нет - весь вывод DBMS_OUTPUT.PUT там должен присутствовать.


Staxинтересно как/чем смотрят(вычитывают) результат? DBMS_OUTPUT.GET_LINE в джобе?
DBA_SCHEDULER_JOB_RUN_DETAILS: OUTPUT / BINARY_OUTPUT.

https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/scheduling-jobs-with-oracle-scheduler.html#GUID-198FED95-7867-4058-8111-2B825DF0FD00
авторYou can also use the attribute STORE_OUTPUT to direct the *_SCHEDULER_JOB_RUN_DETAILS view to store the output sent to stdout for external jobs or DBMS_OUTPUT for database jobs. When STORE_OUTPUT is set to TRUE and the LOGGING_LEVEL indicates that the job run should be logged, then all the output is collected and put inside the BINARY_OUTPUT column of this view. A char representation can be queried from the OUTPUT column.
...
Рейтинг: 0 / 0
16.12.2021, 14:38
    #40120639
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слишком большие логи джоба
SeaGate

DBA_SCHEDULER_JOB_RUN_DETAILS: OUTPUT / BINARY_OUTPUT.

https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/scheduling-jobs-with-oracle-scheduler.html#GUID-198FED95-7867-4058-8111-2B825DF0FD00
авторYou can also use the attribute STORE_OUTPUT to direct the *_SCHEDULER_JOB_RUN_DETAILS view to store the output sent to stdout for external jobs or DBMS_OUTPUT for database jobs. When STORE_OUTPUT is set to TRUE and the LOGGING_LEVEL indicates that the job run should be logged, then all the output is collected and put inside the BINARY_OUTPUT column of this view. A char representation can be queried from the OUTPUT column.


спасибо
отстал я от реальной жизни

.....
stax
...
Рейтинг: 0 / 0
17.12.2021, 07:47
    #40120893
Igor Karmanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слишком большие логи джоба
SeaGate,

В том-то и дело, что нет в BINARY_OUTPUT вывода, туда текстом пишется "BLOB" и на этом всё.
...
Рейтинг: 0 / 0
17.12.2021, 08:31
    #40120895
oragraf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слишком большие логи джоба
Igor Karmanov
В том-то и дело, что нет в BINARY_OUTPUT вывода, туда текстом пишется "BLOB" и на этом всё.
Жжошь! Давай запрос через sqlplus.
...
Рейтинг: 0 / 0
17.12.2021, 09:01
    #40120903
Asmodeus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слишком большие логи джоба
Igor Karmanov,

В зависимости от инструмента... Скачайте себе этот BLOB и просмотрите привычным средством.
...
Рейтинг: 0 / 0
17.12.2021, 16:48
    #40121091
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слишком большие логи джоба
Igor Karmanov


В том-то и дело, что нет в BINARY_OUTPUT вывода, туда текстом пишется "BLOB" и на этом всё.


Похоже ты и GUI пользоваться не умеешь. Кликни на BLOB и будет тебе счастье.

SY.
...
Рейтинг: 0 / 0
17.12.2021, 17:15
    #40121096
Igor Karmanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слишком большие логи джоба
oragraf,

Код: 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.
31.
32.
33.
34.
CREATE OR REPLACE PROCEDURE CMS_RBRU.CMS_RBRU_ACCOUNTS_UPDATE
IS
cursor am is SELECT DISTINCT
CASE
WHEN co.CONTRACTGROUPID = 'G4' THEN 'UPDATE CMS_RBRU.T_PE_COBJECT SET CURRENTACCOUNTBALANCE = '''|| regexp_replace(co.amount, '^(-?)([.,])', '\10\2') ||''', ACCOUNTCREDITED = '''|| cra.ACCNO || ''', ACCOUNTDEBITED = '''|| dea.ACCNO ||''' where CMSID = '''|| co.SOURCEID || ''' '
WHEN co.CONTRACTGROUPID != 'G4' THEN 'UPDATE CMS_RBRU.T_PE_COBJECT SET CURRENTACCOUNTBALANCE = '''|| regexp_replace(co.amount, '^(-?)([.,])', '\10\2') ||''', ACCOUNTDEBITED = '''|| cra.ACCNO || ''', ACCOUNTCREDITED = '''|| dea.ACCNO ||''' where CMSID = '''|| co.SOURCEID || ''' '
END AS "script"
FROM CMS_AM.CMS_OBJECTS co
INNER JOIN CMS_AM.CMS_ACCOUNTS cra ON cra.id = co.CONTRAACCOUNT_ID
INNER JOIN CMS_AM.CMS_ACCOUNTS dea ON dea.id = co.MAINACCOUNT_ID
INNER JOIN CMS_AM.CMS_MSG_OBJECTS cmo ON cmo.SOURCEID = co.SOURCEID
WHERE cmo.MESSAGE_ID in (select m.id
from cms_am.cms_MSG_OBJECTS mo
right join cms_am.cms_messages m on mo.message_id=m.id
where 1=1
and mo.id > (select (max (mm.id)-150000) from cms_am.cms_MSG_OBJECTS mm)
and mo.RESPONSEMESSAGEDATE >= TRUNC(SYSDATE)
and mo.status ='SENT'
and m.operation in ('bindToDeal','unbindOffDeal','changeAccAttr'));
current_upd am%ROWTYPE;
obj_counter NUMBER:=0;
BEGIN
OPEN am;
LOOP
FETCH am INTO current_upd;
EXIT WHEN am%NOTFOUND;
EXECUTE IMMEDIATE current_upd."script" ;
DBMS_OUTPUT.PUT_LINE('upd= '|| current_upd."script");
obj_counter:=obj_counter+1;
END LOOP;
COMMIT;
DBMS_OUTPUT.PUT_LINE('Updates count  = ' || obj_counter);
CLOSE am;
END CMS_RBRU_ACCOUNTS_UPDATE;



Похоже, что я как-то неправильно щелкал на BLOB, что очень странно, ну да ладно, теперь выводит данные, но там не полный список апдейтов,
пробовал выводить их количество, в поле OUTPUT показывает 3891 апдейтов, но в поле BINARY_OUTPUT их всего 50 штук.
...
Рейтинг: 0 / 0
17.12.2021, 17:26
    #40121098
Igor Karmanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слишком большие логи джоба
Сорри, ребята, спасибо всем.
Дело было в DBeaver, через SQL Developer поле BINARY_OUTPUT считалось на ура и в полном объёме.
А то я уже собирался пробовать отсылать логи на почту ))
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Слишком большие логи джоба / 12 сообщений из 12, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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