Understanding Bootstrap Of Oracle Database

作者: Maclean Liu , post on May 18th, 2007 , English Version
【本站文章除注明转载外,均为本站原创编译】
转载请注明:文章转载自: Oracle Clinic – Maclean Liu的个人技术博客 [http://www.oracledatabase12g.com/]
本文标题: Understanding Bootstrap Of Oracle Database
本文永久地址: http://www.oracledatabase12g.com/archives/understanding-bootstrap-of-oracle-database.html

In this Document


@ Oracle Confidential (INTERNAL). Do not distribute to customers
@ Reason: has internal information

@ (AuthWiz 2.5.1)

Applies to:

Oracle Server – Enterprise Edition – Version:
Information in this document applies to any platform.
Oracle RDBMS Server

Purpose

What is bootstrap?
What happens during database startup?
Which objects are classified as bootstrap objects in oracle database?
How the dictionaries are loaded?
Why bootstrap (ORA-00704) process failure is so serious if it occurs on startup or while recovery?

Scope and Application

This article intend to explain the bootstrap operations of oracle.

Understanding Bootstrap Of Oracle Database

What is bootstrap?

In general, Bootstrap is a technique for loading the first few instructions of a computer program into active memory and then using them to bring in the rest of the program.

What is bootstrap in Oracle ?

In Oracle, Bootstrap refers to loading of metadata (data dictionary) before we OPEN the database.
Bootstrap objects are classified as the objects (tables / indexes / clusters) with the object_id below 56 as bootstrap objects.
These objects are mandatory to bring up an instance, as this contains the most important metadata of the database.

What happens on database startup?

This shall be explained by setting the SQL_TRACE while opening the database.

Connect as sysdba and do the following

STARTUP MOUNT;
ALTER SESSION SET EVENTS ’10046 TRACE NAME CONTEXT FOREVER, LEVEL 12′;
ALTER DATABASE OPEN;
ALTER SESSION SET EVENTS ’10046 TRACE NAME CONTEXT OFF’;
SHOW PARAMETER USER_DUMP_DEST
ORADEBUG SETMYPID
ORADEBUG TRACEFILE_NAME

The sql_trace of the above process explains the following operations behind startup.
The bootstrap operation happens between MOUNT stage and OPEN stage.

1. The first SQL after in the above trace shows the creation of the bootstrap$ table.
Something similar to the following:

———————————————–
create table bootstrap$ ( line# number not null, obj# number not null, sql_text varchar2(4000) not null) storage (initial 50K objno 56 extents (file 1 block 377))
———————————————–

This sys.bootstrap$ table contains the DDL’s for other bootstrap tables (object_id below 56).

-> Actually these tables were created internally by the time of database creation (by sql.bsq), The create DDL passed between MOUNT and OPEN stage will be executed through different driver routines. In simple words these are not standard CREATE DDLs.
While starting up the database oracle will load these objects into memory (shared_pool),
(ie) it will assign the relevant object number and refer to the datafile and the block associated with that.
And such operations happen only while warm startup.

@ The internals of the above explained in ‘kqlb.c’.

2. Now a query executed against the sys.bootstrap$ table, which holds the create sql’s for other base tables.

select line#, sql_text from bootstrap$ where obj# != :1 (56)

Subsequently it will create those objects by running those queries.

Object number 0 – (System Rollback Segment)
Object number 2 to 55 (Other base tables)
Object number 1 is NOT used by any of the objects.

3. Performs various operations to keep the bootstrap objects in consistent state.

- Upon the successful completion of bootstrap the database will do the other tasks like recovery and will open the database.

Which objects are classified as bootstrap objects in oracle database?

Objects with data_object_id less than 56 are classified as core bootstrap objects.

The objects are added to the bootstrap. The objects affected are:
hist_head$
histgrm$
i_hh_obj#_col#
i_hh_obj#_intcol#
i_obj#_intcol#
i_h_obj#_col#
c_obj#_intcol#

From 10.1 the following objects have been added:
fixed_obj$
tab_stats$
ind_stats$
i_fixed_obj$_obj#
i_tab_stats$_obj#
i_ind_stats$_obj#
object_usage

These additional objects shall be re-classified (or) ignored by following methods.
1. Opening the database in migrate mode
2. Using event 38003
Event 38003 affects the bootstrap process of loading the fixed cache in  kqlblfc(). Per default certain objects are marked as bootstrap objects (even though they are not defined as such in sys.bootstrap$) but by setting the event they will be left as non-bootstrapped.

What is bootstrap process failure? ORA-00704

This ORA-00704 error SERIOUS if reported at startup. This error refers to some problem during bootstrap operation.
Any ORA-00704 error on STARTUP / RECOVER is serious, this error normally rose due to some inconsistency with the bootstrap segments (or) data corruption on bootstrap$ (or) any of the base tables below object_id 56. After this error it might not allow to open that database.

When ORA-00704 shall occur?

1. There is a probable of this error when any unsupported operations are tried to force open the database.
2. This error can also occur when system datafile has corrupted blocks. (ORA-01578)
3. In earlier releases of oracle (prior to 7.3.4 and 8.0.3) this issue shall arise due to Bug 434596

The option is to restore it from a good backup and recover it.
-> If the underlying cause is physical corruption that is due to hardware problems then do complete recovery.
-> If the issue is not relating to any physical corruption, then the problem could be due some unsupported actions on Bootstrap, and a Point In Time Recovery would be an option in such cas

© 2007, www.oracledatabase12g.com. 版权所有.文章允许转载,但必须以链接方式注明源地址,否则追究法律责任.

相关文章 | Related posts:

  1. How to Perform a Health Check on the Database [ID 122669.1]
  2. Script to Collect RAC Diagnostic Information (racdiag.sql)
  3. Siebel CRM with Oracle® Cost-Based Optimizer (CBO)
  4. How we created a clone database from the datafiles image copies of a physical standby database
  5. Extracting Data from a Corrupt Table using DBMS_REPAIR or Event 10231
  6. "hcheck.sql" script to check for known problems in Oracle8i, Oracle9i, Oracle10g and Oracle 11g
  7. Troubleshooting and Understanding Applications Forms
  8. EVENT: 10231 "skip corrupted blocks on _table_scans_"
  9. Debugging OCFS on Linux
  10. Yet Another Performance Profiling Method (Or YAPP-Method)

2 comments to Understanding Bootstrap Of Oracle Database

  • admin

    OERR: ORA 704 “bootstrap process failure”
    Error: ORA 704
    Text: bootstrap process failure
    ——————————————————————————-
    Cause: Failure in processing bootstrap data – see accompaning error.
    Action: Contact your customer support representative.

    *** Important: The notes below are for experienced users – See Note:22080.1

    Explanation:
    This is a general error reported at startup when there is some
    problem during processing of bootstrap information.

    There should be an accompanying error/s.

    Diagnosis:
    – See the accompanying error/s for more information.

    – Shutdown abort the instance and clean up any OS structures
    used by the instance. Eg: Ensure there is no shared memory,
    semaphores etc.. left lying around

    – Retry the startup.

    – If the error persists follow up on the accompanying errors
    (Eg: block corruption etc.. could cause this.)

    Articles:
    None known.

  • Neeraj

    Thanx alot dear..
    This is quite helpful to know more aboiut bootstrap….

    god bless you …

    –neeraj

Leave a Reply

  

  

  

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>