it-swarm.it

Come trovo un oggetto che non sembra esistere nella tabella degli oggetti?

Ho un oggetto chiamato cot_ntn_pi_v. Mi è stato detto che questo era un sinonimo. Non appare nella tabella all_synonies. Sembra una vista o una tabella ma non riesco a trovarla nella tabella di tutti gli oggetti. Posso selezionarlo, ma non posso rilasciarlo poiché "non esiste" e non posso creare una nuova tabella con lo stesso nome di "il nome è già utilizzato da un altro oggetto".

Sto impazzendo o sto facendo qualcosa di veramente stupido?

11
BON

I tipi di oggetto nello stesso spazio dei nomi di una tabella sono:

  • Procedure autonome
  • Funzioni memorizzate autonome
  • Pacchi
  • Tipi definiti dall'utente
  • Sequenze
  • Visualizzazioni
  • Sinonimi privati
  • Viste materializzate

Pertanto è probabilmente uno di quei tipi. Se puoi selezionarlo, esclude i primi cinque lasciandoli come tabella, vista, sinonimo privato o vista materializzata.

Quando hai cercato in all_objects ecc. hai usato le maiuscole? Per esempio,

select *
  from ALL_OBJECTS
 where OBJECT_NAME = 'COT_NTN_PI_V'; 

Se usi uno strumento come SQL Developer o Toad puoi lasciarlo descrivere l'oggetto per te. Evidenzia il nome nello strumento e premi Shift-F4 in Developer o F4 in Rospo. Toad fornisce molta descrizione sull'oggetto mentre Developer, nella scheda Dettagli, avrà una riga con TABLE_NAME o MVIEW_NAME e ti mostrerà di cosa si tratta.

Una volta che sai cos'è, allora sarà più facile sapere come lasciarlo cadere.

11
John Doyle

Potresti non essere in grado di vedere l'oggetto nelle tabelle ALL_% se non hai alcuna concessione sull'oggetto stesso, quindi controlla nella tabella DBA_OBJECTS (avrai bisogno di sovvenzioni/un utente concesso in modo appropriato per farlo):

select * 
from DBA_OBJECTS
where object_name = 'COT_NTN_PI_V';

Se ciò non produce alcun output, è possibile controllare nelle tabelle del dizionario dei dati Oracle non elaborate con questa query:

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';
4
Philᵀᴹ