Як знайти об’єкт, який, здається, не існує в таблиці об’єктів?


11

У мене об’єкт називається cot_ntn_pi_v. Мені сказали, що це синонім. Він не відображається в таблиці всіх_синонімів. Це схоже на вид або таблицю, але я не можу знайти його в таблиці всіх об'єктів. Я можу вибрати з нього, але я не можу його скинути, оскільки він "не існує", і я не можу створити нову таблицю з таким же ім'ям, як "ім'я вже використовується іншим об'єктом".

Я збожеволію чи роблю щось справді дурне?


1
Якщо у вас немає дозволу на предмет, він може не відображатися в таблицях ALL_ *. Можливо, вам знадобиться адміністративний логін і заглянути в таблиці словника даних DBA_ *.
Занепокоєння

Відповіді:


11

Типи об'єктів у тій самій області імен, що і таблиця:

  • Автономні процедури
  • Автономні збережені функції
  • Пакети
  • Типи, визначені користувачем
  • Послідовності
  • Перегляди
  • Приватні синоніми
  • Матеріалізовані погляди

Тому це, мабуть, один із таких типів. Якщо ви можете вибрати з нього, то він виключає перші п’ять, залишаючи це таблицею, переглядом, приватним синонімом або матеріалізованим поданням.

Коли ви шукали в all_objectsін., Ви використовували великі регістри? Наприклад,

select *
  from ALL_OBJECTS
 where OBJECT_NAME = 'COT_NTN_PI_V'; 

Якщо ви використовуєте такий інструмент, як SQL Developer або Toad, ви можете дозволити йому описати об'єкт для вас. Виділіть ім’я в інструменті та натисніть Shift-F4Розробник або F4Жаба. Toad надає багато опису об’єкта, тоді як Developer, на вкладці "Подробиці", буде мати рядок з TABLE_NAMEабо MVIEW_NAMEв ньому, і він покаже, що це таке.

Як тільки ви дізнаєтеся, що це таке, тоді вам стане легше знати, як його скинути.


Так, використовуючи sql developer і shift + f4, я зміг з’ясувати, що мені потрібно! Дякую :)
БОН

4

Ви можете не побачити об’єкт у таблицях ALL_%, якщо у вас немає грантів на сам об’єкт, тому перевірте таблицю DBA_OBJECTS (для цього вам знадобляться гранти / належним чином наданий користувач):

select * 
from DBA_OBJECTS
where object_name = 'COT_NTN_PI_V';

Якщо це не дає жодного результату, ви можете перевірити в необроблених таблицях словника даних Oracle цей запит:

select u.name as owner, o.name as object_name, 
 decode(o.type#, 0, 'NEXT OBJECT', 1, 'INDEX', 2, 'TABLE', 3, 'CLUSTER',
 4, 'VIEW', 5, 'SYNONYM', 6, 'SEQUENCE',
 7, 'PROCEDURE', 8, 'FUNCTION', 9, 'PACKAGE',
 11, 'PACKAGE BODY', 12, 'TRIGGER',
 13, 'TYPE', 14, 'TYPE BODY',
 19, 'TABLE PARTITION', 20, 'INDEX PARTITION', 21, 'LOB',
 22, 'LIBRARY', 23, 'DIRECTORY', 24, 'QUEUE',
 28, 'JAVA SOURCE', 29, 'JAVA CLASS', 30, 'JAVA RESOURCE',
 32, 'INDEXTYPE', 33, 'OPERATOR',
 34, 'TABLE SUBPARTITION', 35, 'INDEX SUBPARTITION',
 39, 'LOB PARTITION', 40, 'LOB SUBPARTITION',
 43, 'DIMENSION',
 44, 'CONTEXT', 47, 'RESOURCE PLAN',
 48, 'CONSUMER GROUP',
 51, 'SUBSCRIPTION', 52, 'LOCATION', 56, 'JAVA DATA', 'UNKNOWN') as type,
o.ctime, o.mtime,
 to_char(o.stime, 'YYYY-MM-DD:HH24:MI:SS'),
 decode(o.status, 0, 'N/A', 1, 'VALID', 'INVALID') as status
 from sys.obj$ o, sys.user$ u
 where o.owner# = u.user#
 and o.linkname is null
 and (o.type# not in (1 , 10) or
 (o.type# = 1 and 1 = (select 1
 from sys.ind$ i
 where i.obj# = o.obj#
 and i.type# in (1, 2, 3, 4, 6, 7, 9))))
 and o.name = 'COT_NTN_PI_V';
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.