Почему моя таблица, созданная в одном табличном пространстве, не отображается, когда я запрашиваю ее из другого табличного пространства? - PullRequest
0 голосов
/ 09 апреля 2020

Оба табличных пространства находятся в одной и той же БД, поэтому в Oracle SQL Developer, если я войду в одно табличное пространство tb1, я смогу увидеть все таблицы в tb2. Из-за разрешений я не смог создать таблицу tb2.new_table при входе в tb1. Поэтому я вошел в tb2 и сделал tb2.new_table и могу запросить его там. Когда я снова захожу в tb1, я не вижу вновь созданную таблицу tb2.new_table. Мне просто интересно, почему он не появляется, я сделал коммит после того, как сделал новый стол.

Моя путаница возникает из-за того, что когда я вошел в tb1, я смог добавить столбец в таблицу в tb2. Есть идеи?

1 Ответ

0 голосов
/ 09 апреля 2020

Вы не можете войти в табличное пространство. И вы не ссылаетесь на таблицу по ее табличному пространству (таблица может существовать в нескольких табличных пространствах или без табличных пространств). Если вы ссылаетесь на таблицу tb2.new_table, это означает, что tb2 - это имя схемы, а не табличное пространство. Табличные пространства не имеют ничего общего с разрешениями, они представляют собой просто набор физических файлов данных. Схемы влияют на разрешения.

Похоже, что вы создали новую таблицу в schema2, но не дали пользователю user1 разрешение что-либо делать с этой таблицей. Предполагая, что это так, пользователь user2 запускает коммант

grant select on new_table to user1

, а затем user1 должен иметь возможность

select * from user2.new_table

Если вы хотите, чтобы user1 мог вставлять, обновлять и / или удалите данные в new_table, вам также необходимо предоставить эти разрешения, например

grant insert, update, delete on new_table to user1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...