Введенная вами ошибка журнала:
... Database is set to dirty, this *may* mean it is corrupt. No modifications are allowed until a recovery run has been performed! (ERR_SYSTEM)
свидетельствует о том, что база данных находится в несогласованном состоянии (например, база данных не была корректно закрыта, произошел сбой системы или повреждение из-за операционной системы).проблемы с синхронизацией диска или вводом-выводом, внезапное отключение питания, незапланированная автоматическая принудительная перезагрузка Центра обновления Windows и т. д.).
Попробуйте выполнить восстановление после сбоя, выполнив контролируемый запуск, завершение работы и перезапуск затронутых (или всех) баз данных (т.е.. перезагрузка):
Если вы работаете в режиме клиент-сервер, то:
ij> /* Startup */
ij> connect 'jdbc:derby://localhost:1527/sample';
ij>
ij> /* Shutdown */
ij> connect 'jdbc:derby://localhost:1527/;shutdown=true';
ERROR XJ015: DERBY SQL error: ERRORCODE: 50000, SQLSTATE: XJ015, SQLERRMC: Derby system shutdown.
ij> quit;
PS C:\db-derby-10.13.1.1-bin\bin> ### Shutdown Network Server ###
PS C:\db-derby-10.13.1.1-bin\bin> .\NetworkServerControl shutdown
Mon Apr 22 03:14:46 AEST 2019 : Apache Derby Network Server - 10.13.1.1 - (1765088) shutdown
PS C:\db-derby-10.13.1.1-bin\bin>
(Если вы работаете во встроенном режиме, вам нужно будет выполнить ij
shutdown строка подключения для каждой базы данных (например, connect 'jdbc:derby:c:\derby\databases\sample;shutdown=true';
). Информацию обо всех стилях строк подключения для встроенного режима см. в разделе «Примеры подключения к базе данных» в «Руководстве разработчика Derby».
Затем запустите Derby и / или ваше приложение.
(путем выполнения управляемого запуска (т. Е. Запуска, выключения и перезапуска) вrt step Derby пытается обнаружить любые несоответствия базы данных, которые могли произойти (из-за сбоя системы).Он будет пытаться использовать активные журналы для отката (или отката) любых неудачных транзакций до последнего известного исправного коммита.Это одна из первых линий защиты от повреждения данных.Однако у Crash Recovery есть свои ограничения, например, если ваши файлы базы данных настолько повреждены или их несовместимые части слишком стары, чем те, которые хранятся в активных журналах, вам может потребоваться восстановить базу данных из хорошей резервной копии.Обратитесь к «Руководству разработчика Derby» для получения дополнительной информации о том, как работает восстановление):
Загрузка баз данных
Конфигурация по умолчанию для Derby - загрузка (илиначать) базу данных, когда приложение впервые устанавливает соединение с ней.Когда Derby загружает базу данных, он проверяет, нужно ли выполнять восстановление базы данных, поэтому в некоторых необычных случаях загрузка может занять некоторое время.Вы также можете настроить свою систему на автоматическую загрузку всех баз данных в системе при ее запуске;см. derby.system.bootAll в Справочном руководстве Derby.
...
Хранение и восстановление
Если система или операционная системанеожиданно завершается с ошибкой, при следующем запуске Derby он может использовать журнал для восстановления, восстановления «потерянных» транзакций из журнала и отката незавершенных транзакций.Восстановление гарантирует, что все зафиксированные транзакции во время сбоя системы были применены к базе данных, а все транзакции, которые были активны, откатываются.Таким образом, базы данных остаются в согласованном действительном состоянии.
Затем попробуйте проверить согласованность таблиц:
ij>
SELECT schemaname, tablename,
SYSCS_UTIL.SYSCS_CHECK_TABLE(schemaname, tablename)
FROM sys.sysschemas s, sys.systables t
WHERE s.schemaid = t.schemaid;
...
...
...
SYS
|SYSVIEWS
|1
31 rows selected
ij>
В худшем случае может потребоваться восстановление из резервной копии.
Если вы включили Online Log Archiving, вы можете выполнить восстановление с повтором транзакций.
(См. Раздел «Поддержание целостности базы данных» «Руководства по администрированию Derby» для получения дополнительной информации о функции SYSCS_CHECK_TABLE, резервном копировании и восстановлении, архивировании журналов и восстановлении с повтором транзакций).