2009-10-22 4 views
1

В середине автоматизированного тестового прогона прошлой ночью одна из моих 20 рабочих нитей вышла из строя; приложение пыталось ввести INSERT. Отчеты Springframework ORA-00942: таблица или представление не существует.Устранение неисправностей ORA-00942

Подключение к базе данных (11.1.0.6.0) через диспетчер предприятия, я подтягиваю рабочий стол SQL и запрашиваю таблицу, открывая (а), что таблица существует сейчас (b) строка, которая должна быть вставлена (c) строка, ранее вставленная этим потоком, присутствует (d), что таблица имеет строки до и после ошибки во времени.

Для пользователя с небольшим опытом oracle, как я могу проверить, возникла ли ошибка с этим сервером базы данных, и оттуда, как я могу вернуться к первопричине ошибки?

+0

Не могли бы вы предоставить эту дополнительную информацию: 1. Были ли вставки выполнены владельцем таблицы или другой схемой с привилегиями INSERT? 2. Если в таблицу была вставлена ​​другая схема, была ли ссылка на таблицу, назначенная владельцем, доступ через частный синоним или доступ через общедоступный синоним? 3. Имеются ли в этой базе данных другие схемы, содержащие таблицы с тем же именем? Были проблемы с Oracle при выполнении некоторых из этих условий - не знаю, присутствует ли ошибка в 11g. – dpbradley

ответ

1

Я бы начал как можно ближе к базе данных, чтобы подтвердить, что SQL выполнен, зафиксирован, откат и т. Д. В самой базе данных. Я установил TKPROF (проверьте документы или посетите Tom Kyte's site для получения дополнительной информации) и посмотрите, что на самом деле выполняется из вашего приложения. Это, по крайней мере, поможет вам понять, действительно ли то, что вы ожидаете выполнить, на самом деле «прибывает», как должно.

ORA-00942 произойдет, если таблица «невидима» для вызывающей программы, то есть если разрешения недостаточны.

1

Как сказал Дэйв К., таблица могла существовать, но стала «невидимой» для вашего процесса.

Из-за фразы «прошлой ночью» мои мысли приводят к тому, что может произойти ночной процесс, например, процесс резервного копирования или очистки, из-за чего таблица будет отключена.

+0

Интересная мысль, но я считаю, что она устранена точкой (d). Окно вокруг сбоя довольно короткое (порядка секунд). У меня на самом деле есть строка с той же меткой времени, которую неудачная вставка должна была иметь, представленная другой нитью. Как было сказано, как бы я отследил основную причину, если проблема заключалась в том, что таблица стала невидимой? – VoiceOfUnreason

+0

Трудно сказать, не зная об окружающей среде. В моем офисе я бы поговорил с администраторами баз данных или sysAdmins, чтобы узнать, регулярно ли выполняется какой-либо процесс. Также спросите, есть ли журналы db. – Prof

Смежные вопросы