#db2 #db2-400
#db2 #db2-400
Вопрос:
Для тестирования скрипта qshell, который автоматически очищает журналы старше 2 дней в DB2 для i, мне нужно иметь несколько журналов со статусами, которые не прикреплены или находятся в Сети (скрипт пропускает журналы с такими статусами). Кто-нибудь может мне помочь и посоветовать, как изменить / обновить статусы журналов, используя System I navigator или инструкции SQL.
В настоящее время у меня есть элементы в статусе «Прикреплено» в части «Получатели журналов», и когда я меняю получателя для журнала, создается новый получатель журнала в статусе «Прикреплено», а предыдущий перемещается в статус «Онлайн». Я не нашел никаких способов перевести их в другие статусы. Я также пытался получить некоторую информацию из DISPLAY_JOURNAL, используя инструкции SQL, однако безуспешно.
select * from TABLE (QSYS2.DISPLAY_JOURNAL(
'QSYS2', -- put the JOURNAL_LIBRARY parameter value instead of 'JOURNAL_LIBRARY' (VARCHAR(10))
'QSQJRN', -- put the JOURNAL_NAME parameter value instead of 'JOURNAL_NAME' (VARCHAR(10))
'', -- put the STARTING_RECEIVER_LIBRARY parameter value instead of 'STARTING_RECEIVER_LIBRARY' (VARCHAR(10))
'', -- put the STARTING_RECEIVER_NAME parameter value instead of 'STARTING_RECEIVER_NAME' (VARCHAR(10))
'', -- put the STARTING_TIMESTAMP parameter value instead of 'STARTING_TIMESTAMP' (TIMESTAMP)
'', -- put the STARTING_SEQUENCE parameter value instead of 'STARTING_SEQUENCE' (DECIMAL(21,0))
'', -- put the JOURNAL_CODES parameter value instead of 'JOURNAL_CODES' (VARCHAR(48))
'', -- put the JOURNAL_ENTRY_TYPES parameter value instead of 'JOURNAL_ENTRY_TYPES' (VARCHAR(1200))
'', -- put the OBJECT_LIBRARY parameter value instead of 'OBJECT_LIBRARY' (VARCHAR(10))
'', -- put the OBJECT_NAME parameter value instead of 'OBJECT_NAME' (VARCHAR(10))
'', -- put the OBJECT_OBJTYPE parameter value instead of 'OBJECT_OBJTYPE' (VARCHAR(10))
'', -- put the OBJECT_MEMBER parameter value instead of 'OBJECT_MEMBER' (VARCHAR(10))
'', -- put the USER parameter value instead of 'USER' (VARCHAR(10))
'', -- put the JOB parameter value instead of 'JOB' (VARCHAR(26))
'' -- put the PROGRAM parameter value instead of 'PROGRAM' (VARCHAR(10))
)) AS X
SQL Error [42704]: [SQL0204] DISPLAY_JOURNAL in QSYS2 type *N not found.
[SQL0204] DISPLAY_JOURNAL in QSYS2 type *N not found.
Ответ №1:
Статус получателя журнала — это не то, что вы можете изменить, как поле статуса в таблице базы данных. Это статус самого объекта. Вы можете удалить получателей, как только они были изменены и больше не являются подключенным получателем. Однако, если вы попытаетесь удалить приемник, который не был сохранен, он выдаст вам соответствующее сообщение. Вы можете сохранить приемник журнала, даже если он подключен, но лучше всего, если вы не хотите, чтобы система управляла вашими приемниками за вас, сохранить приемники после их изменения, тогда вы можете удалить приемники в любое время.
Поэтому, возможно, вам следует сохранить получателей со статусом онлайн, тогда вы сможете разрешить своему скрипту удалять их.
Комментарии:
1. Мы используем DB2I для тестирования, это не реальная среда, поэтому нам вообще не нужны журналы, и когда мы выполняем много транзакций, хранилище сервера переполняется, и нам приходится выполнять очистку вручную, вот почему мы решили автоматизировать очистку с помощью Qshell.
2. В этом случае меняйте журналы каждую ночь перед резервным копированием, создавайте их резервные копии и удаляйте старый приемник. Вы даже можете сохранить их в файл сохранения и удалить файл сохранения. Это будет считаться сохранением.
Ответ №2:
DISPLAY_JOURNAL доступен только с версии 7.2
однако у вас недостаточно возможностей для управления удалением журнала? Я позволяю IBM i управлять ими методами, чтобы уменьшить объем памяти, который используют получатели журналов
Комментарии:
1. Проверил мою версию DB2i — мы используем 7.1: (