Устранение неисправностей ORA-00942
В середине автоматизированного тестового прогона вчера вечером один из моих двадцати рабочих потоков оборвался; приложение пыталось вставить. Отчеты Springframework ORA-00942: таблица или представление не существует.
Подключаясь к базе данных (11.1.0.6.0) через менеджера предприятия, я открываю рабочий лист SQL и запрашиваю таблицу, обнаруживая (а), что таблица существует сейчас (б) отсутствует строка, которая должна была быть вставлена (с) присутствует строка, ранее вставленная этим потоком; (d) в таблице есть строки до и после ошибки во времени.
Для пользователя с небольшим опытом оракула, как я могу убедиться, что ошибка возникла на этом сервере баз данных, и оттуда, как я могу вернуть ошибку к основной причине?
2 ответа
Я бы начал как можно ближе к базе данных, чтобы подтвердить, какой SQL выполняется, фиксируется, откатывается и т. Д. В самой базе данных. Я бы настроил TKPROF (просмотрите документы или посетите сайт Тома Кайта для получения дополнительной информации) и посмотрите, что на самом деле выполняется из вашего приложения. Это, по крайней мере, поможет вам понять, действительно ли то, что вы ожидаете, будет исполнено, как и должно быть.
ORA-00942 произойдет, если таблица "невидима" для вызывающей программы, т.е. если недостаточно прав.
Как сказал Дэйв К., таблица, возможно, существовала, но стала "невидимой" для вашего процесса.
Из-за фразы "прошлой ночью" мои мысли приводят к тому, что может возникнуть ночной процесс, например, процесс резервного копирования или очистки, который привел к переводу таблицы в автономный режим.