Какие объекты всегда имеют статус "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 это лучше не делать.