zoukankan      html  css  js  c++  java
  • Understanding Bootstrap Of Oracle Database


    In this Document


    @ Oracle Confidential (INTERNAL). Do notdistribute 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 startupor while recovery?

    Scope and Application

    This article intend to explain thebootstrap operations of oracle.

    Understanding Bootstrap Of Oracle Database

    What is bootstrap?

    In general, Bootstrap is a technique forloading the first few instructions of a computer program into active memory andthen 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 mostimportant metadata of the database.

    What happens on database startup?

    This shall be explained by setting theSQL_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 explainsthe 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_textvarchar2(4000) not null) storage (initial 50K objno 56 extents (file 1 block377))
    ———————————————–

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

    -> Actually these tables were createdinternally by the time of database creation (by sql.bsq), The create DDL passedbetween MOUNT and OPEN stage will be executed through different driverroutines. 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 thedatafile 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 executedagainst the sys.bootstrap$ table, which holds the create sql’s for other basetables.

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

    Subsequently it willcreate 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 variousoperations to keep the bootstrap objects in consistent state.

    - Upon the successful completion ofbootstrap the database will do the other tasks like recovery and will open thedatabase.

    Which objects are classified as bootstrapobjects in oracle database?

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

    The objects are added tothe 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 followingobjects 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 objectsshall 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 (eventhough they are not defined as such in sys.bootstrap$) but by setting the eventthey will be left as non-bootstrapped.

    What is bootstrap process failure?ORA-00704

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

    When ORA-00704 shall occur?

    1. There is a probable of this error whenany 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 shallarise due to Bug 434596

    The option is to restore it from a goodbackup and recover it.
    -> If the underlying cause is physical corruption that is due to hardwareproblems then do complete recovery.
    -> If the issue is not relating to any physical corruption, then the problemcould be due some unsupported actions on Bootstrap, and a Point In TimeRecovery would be an option in such cas

    -------------------------------------------------------------------------------------------------------

    Blog: http://blog.csdn.net/tianlesoftware

    Weibo: http://weibo.com/tianlesoftware

    Email: dvd.dba@gmail.com

    DBA1 群:62697716(满);   DBA2 群:62697977(满)  DBA3 群:62697850(满)  

    DBA 超级群:63306533(满);  DBA4 群:83829929(满) DBA5群: 142216823(满) 

    DBA6 群:158654907(满)   DBA7 群:69087192(满)  DBA8 群:172855474

    DBA 超级群2:151508914  DBA9群:102954821     聊天 群:40132017(满)

    --加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请


  • 相关阅读:
    【转】MySQL innodb_autoinc_lock_mode 详解 ,并发插入时主键冲突的解决方案
    optimize table在优化mysql时很重要
    Spring MVC+Mybatis 多数据源配置及发现的几个问题
    Mysql主键一致时,可以进行在元数据上的操作
    同一条sql在mysql5.6和5.7版本遇到的问题。
    实现ApplicationContextAware接口时,获取ApplicationContext为null
    获取访问者的IP
    for...in...
    CSS hack
    Base64
  • 原文地址:https://www.cnblogs.com/tianlesoftware/p/3609544.html
Copyright © 2011-2022 走看看