In all_objects theres a a column called SUBOBJECT_NAME, and the docs say that this is:
Name of the subobject (for example, partition)
If you do the following query:
select *
from all_objects
where owner = 'MDSYS'
and object_name = 'SDO_TGL_OBJECT_ARRAY'
You find that MDSYS.SDO_TGL_OBJECT_ARRAY has a subobject called $VNS_1. What is it? How can types have subobjects?
Sometimes the documentation means exactly what it says.
By way of illustration, I have a table called
RANGE_PART_INTERVAL_TABLEwhich has three partitions. I run the pertinent query against ALL_OBJECTS, and lo!I think the problem is the use of the word “objects”. Oracle comes from a time before Object-Oriented Programming (if you can imagine such a thing). Its data dictionary uses “database object” to mean “thing” – table, view, sequence, procedure, etc. When Oracle introduced OOP into the database it used the keyword
TYPE.for these new things. So the view ALL_OBJECTS is a list of all the things your schema has privileges on, not just the user-defined types.edit
Just to be clear, this has nothing to do with type inheritence.
Inheritence is shown by the USER/ALL/DBA_TYPES view, which shows the supertype of the derived type:…
edit2
TheCoop points out:
In the specific case they cites
$VNS_1is an artefact of Type Evolution. When we execute an ALTER TYPE after that Type has been in use Oracle creates a version of it. We can see this in the %_TYPE_VERSIONS views….Find out more.