Какие объекты всегда имеют статус "valid"?
riverhead
Дата: 08.03.2011 13:35:44
По идее все независимые объекты (т.е. сюда не включаются функции, процедуры, триггеры, view) Вот у синонимов есть статусы valid/invalid, но он же всегда валидный (например создадим таблицу, создадим синоним на нее, дропнем таблицу - но все равно синоним же останется valid). Вот будут ли объекты словаря данных всегда валидными или таблицы своей схемы?
Короч выскажите мнения кто-че думает по поводу всегда валидных объектов.
SY
Дата: 09.03.2011 01:14:49
riverhead |
---|
Вот у синонимов есть статусы valid/invalid, но он же всегда валидный (например создадим таблицу, создадим синоним на нее, дропнем таблицу - но все равно синоним же останется valid). |
Really? Then it is time to upgrade your prehistoric Oracle version:
SQL> create table tbl(x number);
Table created.
SQL> create synonym tbl_syn for tbl;
Synonym created.
SQL> select status from user_objects where object_name = 'TBL_SYN';
STATUS
-------
VALID
1 row selected.
SQL> drop table tbl;
Table dropped.
SQL> select status from user_objects where object_name = 'TBL_SYN';
STATUS
-------
INVALID
1 row selected.
SQL> create table tbl(x number);
Table created.
SQL> select status from user_objects where object_name = 'TBL_SYN';
STATUS
-------
INVALID
1 row selected.
SQL> alter synonym tbl_syn compile;
Synonym altered.
SQL> select status from user_objects where object_name = 'TBL_SYN';
STATUS
-------
VALID
1 row selected.
SQL>
SY.
riverhead
Дата: 09.03.2011 10:00:56
SY, thanks for remark)
А будут ли объекты словаря данных (т.е. таблицы в которых хранится информация о пользовательских таблицах) всегда валидными?
Да и еще: вот в «DBA_OBJECTS» описываются все объекты, находящиеся в базе данных. В этой view есть поле «STATUS», которое может принимать следующие значения «valid», «invalid» или «n/a». Следовательно можно сделать вывод, что все эти объекты могут (по-крайней мере теоретически) принимать значения «invalid» или «n/a». Я прав или нет?
проходил мимо...
Дата: 09.03.2011 10:03:51
riverhead,
все объекты, которые могут быть VALID могут быть и INVALID.
orawish
Дата: 09.03.2011 10:16:07
проходил мимо... |
---|
riverhead,
все объекты, которые могут быть VALID могут быть и INVALID. |
теоретически - наверное. однако, не факт что для всех объектов оно реализовано.
напр. сиквенс. чему там ломаться?
-2-
Дата: 09.03.2011 10:48:05
Вообще, зарекаться, что кто-то из таблица, сиквенс, ... всегда VALID не стоит. Может в следующих версиях придадут какой-нибудь смысл статусу...
orawish |
---|
напр. сиквенс. чему там ломаться? |
maxvalue?
Elic
Дата: 09.03.2011 11:10:11
-2- |
---|
orawish |
---|
напр. сиквенс. чему там ломаться? | maxvalue? |
Ну кончился. И что, теперь всему зависимому коду становиться инвалидным?
riverhead
Дата: 09.03.2011 11:17:25
Короч, вот в книге вычитал:
Такие объекты как хранимые процедуры, представления, триггеры в своих определениях содержат ссылки на другие объекты (таблицы, последовательности, другие хранимые процедуры). При изменении базового объекта, изменяется статус зависимых объектов – они получают статус «недействительный» т.е. «invalid». Применительно к хранимой процедуре или триггеру это означает компиляцию, применительно к представлению – повторный разбор его записи в словаре данных.
Таблицы, последовательности и синонимы, действительны всегда [Введение в Oracle/В.И. Комаров].
Но, насчет синонимов они неправы как нам любезно продемонстрировал SY.
Так, что остаются таблицы и последовательности.
Статус Инвалидович
Дата: 09.03.2011 12:02:45
riverhead |
---|
Короч, вот в книге вычитал: Такие объекты как хранимые процедуры, представления, триггеры в своих определениях содержат ссылки на другие объекты (таблицы, последовательности, другие хранимые процедуры). При изменении базового объекта, изменяется статус зависимых объектов – они получают статус «недействительный» т.е. «invalid». Применительно к хранимой процедуре или триггеру это означает компиляцию, применительно к представлению – повторный разбор его записи в словаре данных. Таблицы, последовательности и синонимы, действительны всегда [Введение в Oracle/В.И. Комаров].
Но, насчет синонимов они неправы как нам любезно продемонстрировал SY. Так, что остаются таблицы и последовательности. |
Выкинь нахрен эту книгу
SQL> conn hr/hr
Connected.
SQL> create or replace type mytype as object (n number)
2 /
Type created.
SQL> create table mytab(n1 mytype);
Table created.
SQL> select object_name,object_type,status from user_objects where object_name='MYTAB';
OBJECT_NAME
--------------------------------------------------------------------------------
OBJECT_TYPE STATUS
------------------- -------
MYTAB
TABLE VALID
SQL> drop type mytype force;
Type dropped.
SQL> select object_name,object_type,status from user_objects where object_name='MYTAB';
OBJECT_NAME
--------------------------------------------------------------------------------
OBJECT_TYPE STATUS
------------------- -------
MYTAB
TABLE INVALID
обж
Дата: 09.03.2011 12:11:26
Статус Инвалидович,
Вы всем советуете использовать объектные таблицы?
Мне кажется любой нормальный человек, уже давно понял, что в Oracle это лучше не делать.