Проблемы при запросе базы данных Oracle для списка таблиц: «Таблица или представление не существует»

StackOverflow https://stackoverflow.com/questions/3777760

Вопрос

В моей программе мне нужно получить доступ к схеме базы данных Oracle 11G. Я пытался получить список таблиц, используя такое запрос:

SELECT t.TABLE_NAME, t.OWNER
FROM ALL_TABLES t
WHERE t.DROPPED = 'NO'
ORDER BY t.TABLE_NAME

Запрос работает, и я вернусь список таблиц. К сожалению, при запросе некоторых таблиц, используя имя таблицы, я получаю следующую ошибку:

ORA-00942: таблица или вид не существует

Что может вызвать эту ошибку? Это может быть до привилегии?

В отдельную проблему я также немного запутался в том, могут ли потенциально были два или таблицы с тем же именем и то, как я мог бы различить двух. Мне нужно следить за этому?

Я использую поставщик Oracle.dataAccess в .NET для подключения к базе данных. Это удаленный сервер, и, к сожалению, у меня есть очень ограниченный доступ к нему.

Это было полезно?

Решение

Это может быть до привилегии. Но это может быть до таблицы, находящегося в другую схему, и для этого не является синонимом. Работает ли это, если вы квалифицируете имя таблицы с владельцем? Т.е. выберите из [Владельца]. [Table_name] вместо этого?

Другие советы

Просто потому, что у вас есть доступ к представлению All_tables, не означает, что вы действительно можете выбрать таблицы, которые вы получаете через этот вид. Вам нужен соответствующий грант, выберите на таблицах, чтобы выбрать их.

2 Таблицы могут иметь то же имя, если они принадлежат к другой схеме (схема на самом деле шире, чем просто таблицы, схема не может иметь два объекта (таблица, вид ...), которые имеют одинаковое имя)

Да, это функция безопасности - если у вас нет разрешения на выбор из таблицы, Oracle, как правило, даже не признает вас, что она существует (обычный пользователь не сможет увидеть вещи в выборе от All_ если это не было предоставлено по ДБА).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top