В каком табличном пространстве хранятся последовательности Oracle? - PullRequest
4 голосов
/ 11 января 2009

В приложении, которое я и мои коллеги поддерживаем, есть база данных Oracle на заднем плане. Мы рассматриваем время от времени запуск приложения в «ограниченном» режиме с одним из табличных пространств базы данных, доступным только для чтения. Мы можем легко переместить необходимые таблицы и индексы в отдельные табличные пространства, которые будут доступны для записи в «ограниченном» режиме. Однако, несмотря на несколько поисков в Google, я не могу определить, в каком табличном пространстве Oracle хранит последовательности.

В этом ответе упоминается, что значения последовательности хранятся в таблице SYSTEM.SEQ $. У меня сейчас нет доступа к БД Oracle, но я бы предположил, что эта таблица находится в одном из системных табличных пространств. Табличное пространство, которое мы создаем только для чтения, не является системным табличным пространством, это одно из наших собственных табличных пространств данных.

В базе данных разработчика я могу успешно ВЫБРАТЬ из последовательности с соответствующим табличным пространством, доступным только для чтения.

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

Ответы [ 3 ]

9 голосов
/ 12 января 2009

Последовательности (в основном) в SEQ $. Части будут в OBJ $ (и гранты в другом месте). Но все эти таблицы находятся в табличном пространстве SYSTEM. Некоторые объекты SYSTEM находятся в SYSAUX. DBA_SEGMENTS является хорошим представлением для определения того, в каких табличных пространствах находится объект (например, SEQ $).

Я подозреваю, что Oracle не позволит вам перевести эти табличные пространства в режим READ ONLY, так как для этого потребуется пометить это табличное пространство как доступное только для чтения, которое записано в таблице SYSTEM в этом табличном пространстве. Вроде как запирающий ключ в сейфе, который он открывает.

0 голосов
/ 11 января 2009

У меня сейчас нет базы данных Oracle, если, если я правильно помню, последовательности являются частью словаря данных и, следовательно, не могут быть обновлены вручную, и даже не могут (просто) запрашиваться без специального синтаксис (вот почему вы не можете просто получить текущее значение последовательности - вы должны увеличить его). Очевидно, что словарь данных является частью табличного пространства SYSTEM, и его следует трогать любыми способами.

0 голосов
/ 11 января 2009

Я думаю, это система, где еще хранить эту информацию?

Но почему ты хочешь это знать? Если табличное пространство доступно только для чтения, вы не можете вставить или обновить его, поэтому вам не нужно использовать последовательность (и).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...