The other days, I tried to enable the index monitoring on SYS schema to find if there were any unused indexes which may be accidently created by developers or previous DBA.

Then I ran the following plsql block:

CURSOR cIndexes IS
SELECT index_name FROM user_indexes
WHERE index_type != 'LOB';
BEGIN
FOR rInd IN cIndexes LOOP
EXECUTE IMMEDIATE 'ALTER INDEX 'rInd.index_name
' MONITORING USAGE';
END LOOP;
END;

To my surprise, my above plsql block popped up some error messages

DECLARE
*
ERROR at line 1:
ORA-00701: object necessary for warmstarting database cannot be altered
ORA-06512: at line 7



Obviously, I have done something which I was not supposed to do(i.e. DDL statements) with SYS schema and this will screw up the bootstrap of Oracle(and luckily Oracle did not permit me to do this).After a searching in google and metalink, I found Bootstrap objects are classified as the metadata objects that are manadatory to bring up an instance, as this contians some important metadata of the database. This is the reason why Oracle does not allow us to run the ALTER or other DDL statements on these system objects.



In fact, every version of Oracle database has a different set of Bootstrap objects. When you look at the dba_objects table, you will find an object named BOOTSTRAP$( object_name column). All the objects with object_id below the BOOTSTRAP$ id are classified BOOTSTRAP objects (indeed some of them are dependencies(indexes, views) of other BOOTSTRAPS objects In Oracle 10.2.0.3, if we run the following query,



select * from dba_objects where object_id<=(select object_id from dba_objects where object_name ='BOOTSTRAP$');

We will find that there are 56 BOOTSTRAP objects.

These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • Furl
  • Reddit
  • Spurl
  • StumbleUpon
  • Technorati