Обновление Oracle представлений каталога и таблиц - PullRequest
0 голосов
/ 25 мая 2020

возможно ли обновить таблицу из каталога Oracle с соответствующими разрешениями? Я несколько раз читал, что СУБД должна сама изменять эти таблицы, но возможно ли это в любом случае?

Я имею в виду, делая что-то вроде этого:

update all_tables
    set tablespace_name = 'whatever'
    where owner = 'whoever'
    and backed_up = 'Y'

Ответы [ 4 ]

1 голос
/ 25 мая 2020

Даже не думайте об этом. Словарь данных поддерживается Oracle, и если вы ему помешаете, вы испортите базу данных и попрощаетесь. Oracle откажет в поддержке, и вся вина за ущерб будет лежать на вас.

Если вам нужно сделать что-то , делайте это регулярно. В противном случае не трогайте его.

0 голосов
/ 25 мая 2020

Ой, какой простой вопрос и сколько расстроенных ответов!

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

Вы не сможете изменить представления словаря данных, такие как ALL_TABLES напрямую, потому что это представления в верхних таблицах, например SYS.TAB$. (Определение отображается в DBA_VIEWS.TEXT). Если вы хотите увидеть их операторы CREATE, они находятся на сервере базы данных по адресу $ORACLE_HOME/rdbms/admin и на самом деле довольно интересны.

Самая глупая вещь, которую я видел на inte rnet, - это кто-то, кто вставил второй «Х» в таблицу DUAL. Пожалуйста, не делайте этого дома!

Я почти уверен, что эти таблицы SYS можно изменить, но я бы никогда этого не сделал, потому что они станут несовместимыми. Если подумать, это хранилище, используемое Oracle, чтобы гарантировать целостность ваших таблиц, поэтому целостность самого хранилища не может быть полностью защищена. Вы вставляете строку в SYS.COL$, но это не означает, что в вашей таблице появился новый столбец, просто информация в словаре неверна.

0 голосов
/ 25 мая 2020

Да, технически это возможно: это то, что делает создание базы данных, обновление и иногда исправление базы данных. Вы можете найти множество SQL скриптов в ORACLE_HOME/rdbms/admin, которые делают это.

Но, как уже было сказано, вы никогда не должны этого делать, если вам не сообщит Oracle служба поддержки.

Если вы хотите понять, как словарь базы данных создается с нуля, см. catalog.sql создано 32 года go: Rem Grayson 03/21/88 - Creation.

0 голосов
/ 25 мая 2020

Имя табличного пространства создается по умолчанию или может быть создано администраторами баз данных, когда это необходимо. Но обновление метаданных Oracle - неправильный способ, и вы не должны этого делать, что приведет к конфликту.

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