Hello,
I have got two questions from my friend.
1) What is the difference between object_id and data_object_id?
2) Will be there any performance impact if data_object_id changes?
For the question #1,
a) Object_id represents the primary_key or the unique identifier for the object b) data_object_id is the pointer (foreign key courtesy TOM) to the data segment (physical segment)
Since some objects like synonyms etc does not have segments they will not have data_object_id's which supports the argument (b) above.
Now lets move on, both will be same or different
Well, the object_id and data_object_id will be same initially, The data object id is assigned to that segment and any kind of change done on the physical segment would lead to give a change in that number for data_object_id and data_object_id will be changed for following cases
a) Alter table or alter index b) Alter table exchange partition c) Truncate table d) Alter table move or using redefinition package e) if the table is part of a cluster, data_object_id points to cluster segment
For question #2, will be there any performance impact?
a) Answer will be NO, (according to my knowledge, if anyone has got any pointers please comment)
b) A question in my mind, thinking logically when you use rowid in your app (a combination of datafile,block,row) shall it affect? Again data_object_id
is again a kind of logical representation number like foreign key so may not affect the rowid based calls
Any pointers to know more about on this would be most welcome.
-Thanks
Geek DBA
Follow Me!!!