Expandmenu Shrunk


  • Category Archives Oracle Internal技术
  • Dump Fixed Global Area

    --Fixed Memory structrue    
    Global Area
    *.Fixed SGA:
    The structure of the fixed SGA is externalised in X$KSMFSV;
    SELECT
            SUBSTR (ksmfsnam,1,20) AS "Name",
            SUBSTR (ksmfstyp,1,20) AS "Type",
            ksmfsadr AS "Address",
            ksmfssiz AS "Size"
        FROM x$ksmfsv 
    *.Fixed PGA
    
    
    The following command can be used to dump the global area 
    
        ALTER SESSION SET EVENTS 'immediate trace name global_area level level';
    Levels are (bitmask)
    
    Level Description 
    1 Include PGA     --Fixed PAG(供后台进程使用的? 因为pga因该是Serverprocess_mem+userprocess_mem,select * from v$process_memory_detail(SMON))
    2 Include SGA     --Fixed SGA(安装时创建编译号,作为bootsrap启动,包括指向SGA的其他组件Oracle内部使用select * from bootstrap$;)
    4 Include UGA 
    8 Include indirect memory dumps 
    More detail is included at levels 0x08 0x10 0x18 (OR)          level8,16,24
    
    --Variable Memory structure
    Dump of heapdump
    SGA,PGA,UGA
    
    , 
    
    
    *.shard pool
    row_cache
    library_cache
    uga
    
    *.buffer cache
    buffers
    buffer
    
    
    
    
    An error stack describes the current state of a process. It includes the current SQL statement and the process state for the process.
    
    heapdump level 1(pga 参照oradebug书)
    select * from V$process_deail_memory(默认是SMON的Fixed PGA)
    
    Buffer Cache Dumps:
           *.Multiple Buffers
           To dump buffer headers and buffer contents for buffers currently in the cache 
           
               ALTER SESSION SET EVENTS 'immediate trace name buffers level level';
           where level is one of the following 
           
           
           Level Description 
           1 Buffer headers only 
           2 Level 1 + block headers 
           3 Level 2 + block contents 
           4 Buffer headers only + hash chain 
           5 Level 1 + block headers + hash chain 
           6 Level 2 + block contents + hash chain 
           8 Buffer headers only + hash chain + users/waiters 
           9 Level 1 + block headers + hash chain + users/waiters 
           10 Level 2 + block contents + hash chain + users/waiters 
    Individual Buffers
    In Oracle 8.0 and above is is possible to dump buffer all buffers currently in the cache for a specific block 
    
    For example where a block has been modified and is subject to consistent read from a number of transactions, there may be more than one copy of the block in the buffer cache 
    
    First identify the tablespace number for the block e.g for tablespace TS01 
    
        SELECT ts# FROM sys.ts$
        WHERE name = 'TS01';
    Set the tablespace number using 
    
        ALTER SESSION SET EVENTS 
        'immediate trace name set_tsn_p1 level level';
    where level is the tablespace number + 1 
    
    Identify the relative DBA for the block 
    


  • Block(BBED)

    一.概述
    Block Corruption Diagnostics Recovery
    概述:
      Block corruption就是当Oracle从磁盘读/写入磁盘一个block,一致性检查就会出现,包括:
    ★.Blcok Version(版本号)
    ★Cache中的DBA与Block Buffer(block header?)中的DBA进行比较
    ★块校验检查,当db_block_checksum=true的时候
      ○What Check(检查点)
      -SCNBase And Sequence in the Header(Block)
      -SCNBase And Sequence in the Footter(Block)
      -The Block Type(Block type tore in the first word of the data block块类型存放在block第一节)
    =======================
    二.Block Corruption Types:
    ★Media corrupt
      –Oracle 8:SCN=0
    ★Soft corrupt   (RDBMS发现异常就会将该block标记为异常)
      –Oracle8: SCN=XXX(XXX代表比重组当前block的SCN搞的更改可以应用到该block)
              Seq=UB1MAXVAL
              
    =====================
    三.Corrupt标志Symptoms:ORA-1578
    ★.ORA-1578一般是由于硬件原因导致的:
    —当改错误经常出现的时候,最有可能就是物理block 异常
        —当改错误时断时续时,有可能是硬件异常,可以尝试检查memory和page space,以及io资源等
    ★.当确定好file#,block#后,可以尝试用dd命令读取该block,假如遇见错误,可以尝试多试几次读取该block来确认是否都是返回该块.也可以见车io和出错的控制器

     

    ===================
    四.Handle Corruption(处理块异常)
     
    1. shutdown/start查看错误
    2. 查看是否有 更多的异常块出现,DBV
    3. —-.od-x OS 级别的block
    —-Dump redo确认能发现的异常block
    4  —Media recover(恢复)
     
    5  –DBV
       
    Eg:dbv file=’system01.dbf’ blocksize=4096
    6 –Analyze
      —逻辑的block见车
      —不会将block标记为软异常,只返回异常结果
      —验证tables/indexes
      —Syntax:

    validate strucure
    Full table scan   

    7 –Events Diagnostics
      ○.10231:Skip corrupted block while a full scan(忽略全表扫描的坏块)
      ○.10233:Skip corrupted data/index block while index range scan(索引范围扫描忽略坏表/索引块)
      ○.10232:Dump corrupted blocks in a tracefile
      ○.10210:Force logic block check(强制逻辑table块检查)
     ○.10211: :Force logic block check(Index)
     ○.10212.:Force logic block check(cluster)
       10210,10211,10212 events check fowllowing:
         
    8 —Parametr:db_block_checking
     Db_block_checking   (default false)
    9 —Export Utility
     ○.Full export can used to check logic consistency of a database(全export检查数据库的一致性)
    ○.Export 通过全表扫描的方式返回获取数据
    ○.Export 不能检测所有的数据库块异常:
      —不能检测hwk高水位线上上的磁盘异常
      —不能检测index,free/temporary extents的block异常
     ○.Export Only reads:
       —HWK下的用户数据
       —和export相关的数据字典部分
    10 —Media recovery



  • SCN(Redo)

    ================================================================================================================Redo Generation Architecture=============================四. Redo Generation Architecture (日志产生体系结构)
    ==================================================
    四.一)概述
    Oracle’s Redo Architecture consists of:日志的结构体系包含以下内容
      ·SCN(System Change/Commit Number)
    ·RBA(Redo Byte Address)
    ·Redo Record
    ·Change Vector
    ·Redo Log Files
    ·Redo Threads
    ·Redo Log Buffer
    ·Redo Stream
    ·Recovery Algorithms
    ·Checkpoint Structure
    ·Applying Redo
    ====================
    四.一.一)Redo Generation Architecture日志产生体系结构阐述:
    ·SCN:记录了数据库一致性版本.SCN可以用于:
      –Redo Record Header日志记录头(可以记录事务commit)
      –Datafile Header
      –Controlfile
      –Block Header

     

    ·RBA(Redo Byte Address)用于记录出现在Redo Stream(Redo流队列)中的特定的Change Vector.包含三部分内容:
      –Log Sequence Number
      –Block Number of log
      –Offset of the block
    RBA=10bytes
    ·Redo Record:Redo Record记录了数据库某一状态的版本(state version)
    ·Change Vector:记录了一个单独的Block(可能是block重构的block version?)的行为操作,该Block的一系列操作会使得Change Vector标志连续递增
    ·Redo Logfiles :日志文件记录了所有数据库块的更改的记录(甚至包含一些重组控制文件的信息).每个日志文件由thread中的thread number,sequence numbe,SCN来惟一标识.日志文件中的内容被逻辑的顺序排序来保持数据库更改的顺序一致,根据SCN来序列化,这对TX的ACID属性提供支持.
    ·Thread of Redo:由一个Instance产生的Redo被称为该Instance的Redo thread.每个Thread被写入自己私有的Redo logfiles.
      当前正在被写的日志被称为’Online Redo Logfiles’,它们可以在写完成够被Archive(copy)到磁盘.
      一个Thread可以同时拥有Online和archived组成部分.
      在OPS/RAC环境中,每个instance都有自己独立的redo,也就是说至少需要4日志
      在恢复Recovery的时候,衍生重组的Redo Thread接管Redo Thread来提供日志的逻辑序列化(logic ording)
    ·Checkpoint Structure:
      CKPT结构定义了Redo Stream日志流中的某特定’状态点’,该状态点之前的所有数据库更改已经被DBWR写入磁盘.
      CKPT包含结构:
         –Checkpoint SCN
         –Eabled Thread bit vector(用于标志在checkpoint期间使哪个那个Thread的二进制位)
         –Timestamp
         –Number of Thread that initiated the checkpoint(OPS/RAC环境)(发起该ckpt的实例instance数量)
         –RBA

    ===================
    四.一.二)SCN(System Change/Commit Number) SCN概述
    ·Describe the “Version “ or the commited Verion of a Database stat.(描述数据库状态的’状态版本’/’Commit状态版本’)
    ·SCN=6bytes(Base4byes+Wrap2bytes)
        –Base SCN:在新的SCN分配的时候递增
        –Wrap:在Base SCN到达上限的时候增加
    ·多Instance(RAC/OPS)的数据库维护一个全局SCN(Global SCN)
    概述::
     ——————-
      1.SCN分配:
        SCN描述数据库状态的’状态版本’/’Commit状态版本’.
        一条查询会返回数据库内容,这些内容是一特殊的SCN号来体现
        SCN用来在Redo Record头记录提交的事务
        SCN也用来保存在Redo Record中用来标记在某些特殊SCN后的分配的Redo
        SCN也可以被存放在数据文件头结构中如:控制文件Controlfile/Datafile Header
    ————————-
    2.SCN时间上限限制:
        SCN至少48位,因此可以在524年内以为16384/s的速度进行分配也不会消耗完SCN,按照这个速度Oracle数据库将会在2522年消耗完毕
    ————————
    3.SCN:多实例muti-instance
    在多实例muti-instance环境中,有Current SCN和Recent SCN的区别(在单实例中都是一样的).
    Current  SCN是最接近全局(Global)时间系统的SCN,保存在Block value Block的结构中被一个称为SC的全局锁Global lock进行维护.
    Recent SCN是Current SCN的缓存值(缓存在本地?)
    ======================================================
    四.二)SCN 正题相关
    ======================
    四.二.一)SCN
    ·Assign to a TX where it commits(在事务提交时候分配给事务)
    ·Increases monotonically(单调的递增)
    ·SCN会跳跃式递增,在分布式事务和OPS/RAC环境中.
    ·Used for(适用于):
    — Concurrency Control(并发控制)
    — Redo Log Ordering(重做日志逻辑排序)
    –Recovery(恢复)
    ======================
    四.二.二)RBA (Redo Byte Address)
    ·RBA:RBA标志存储与在线/归档日志中的Redo Record的开始.因此它指向了某个read thread的redo record的确切位置.
    ·RBA存储在所有在数据文件头datafile header、控制文件的数据文件条目中,如控制文件:
    ******************************* ********************************************
    DATA FILE RECORDS
    ***************************************************************************
     (size = 428, compat size = 428, section max = 100, section in-use = 15,
      last-recid= 278, old-recno = 0, last-recno = 0)
     (extent = 1, blkno = 11, numrecs = 100)
    DATA FILE #1:
      (name #3) /opt/ora_data/FSXYBAK/datafile/system.dbf
    creation size=38400 block size=8192 status=0xe head=3 tail=3 dup=1
     tablespace 0, index=1 krfil=1 prev_file=0
     unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
     Checkpoint cnt:433 scn: 0x0000.0036bf85 01/01/2010 04:14:08
     Stop scn: 0xffff.ffffffff 12/31/2009 05:27:17
     Creation Checkpointed at scn:  0x0000.00000006 06/30/2009 22:13:01
    thread:1 rba:(0x1.3.10)

    ·RBA用来快速定位用于恢复的Redo位置
    示例:Record Record
    REDO RECORD – Thread:1 RBA: 0x000080.00013c63.0010 LEN: 0x036c VLD: 0x0d
    SCN: 0x0000.00299b5a SUBSCN:  1 10/31/2009 14:47:48
    ·标志着Redo Record的开始
    ·10bytes长
    ·三个组成部分:
    –Log Sequence Number(日志序列号)
    –Block Number within the redo log(重做日中中的block号)
    –Bytes Number with the block(Block中的offset偏移量)

    ======================
    四.二.三) Redo Records
    ·描述了数据库原子级别的更改
    ·包含了1到多个Change Vectors
    ·创建时间先于更改Buffer
    ·在应用Record Rcord中的更改时候可以保证恢复所有或者完全不能保证(就是说每种恢复一点的说法,所谓actomic原子不可分离性)
    ·这种原子级别的保证是Cache Layer层工作的补充和完善.
    ·Order by SCN号(RBA 保证逻辑的有序性)
    概述:
    由一系列的Change Vectors组成的Redo Record描述了原子级别的数据库更改.
    一个事务可以产生多个Redo Records  (1)TXß—à(N) Redo Records
    一个Record Record允许记录多个数据库Block更改(不同的Database Block更改可以保存在一个Record Record中)来保证所有的更改或者不更改都能被记录如数据库日志Redo logfiles,除了非正常的强行的介入外),如下图一个Record记录了所有的更改
    REDO RECORD – Thread:1 RBA: 0x000080.000000c5.00a8 LEN: 0x0128 VLD: 0x01
    SCN: 0x0000.00294c93 SUBSCN:  2 10/31/2009 06:14:21
       CHANGE #1 TYP:0 CLS:18 AFN:2 DBA:0x00800d5e OBJ:4294967295 SCN:0x0000.00294c93 SEQ:  1 OP:5.1
        ……………
       CHANGE #2 TYP:2 CLS: 1 AFN:1 DBA:0x00401024 OBJ:518 SCN:0x0000.00294c8d SEQ:  1 OP:10.2
    Record Record以为SCN为参照进行逻辑排序存储:
       ·SCN 是单一的递增
       ·CHANGE SCN被用于Redo日志逻辑的有序化
       ·Commit用于标志事务TX的提交

    示例:
    REDO RECORD – Thread:1 RBA: 0x000080.000000c5.00a8 LEN: 0x0128 VLD: 0x01
    SCN: 0x0000.00294c93 SUBSCN:  2 10/31/2009 06:14:21
    CHANGE #1 TYP:0 CLS:18 AFN:2 DBA:0x00800d5e OBJ:4294967295 SCN:0x0000.00294c93 SEQ:  1 OP:5.1 –CV1:
    ktudb redo: siz: 100 spc: 942 flg: 0x0022 seq: 0x00e0 rec: 0x3f
                xid:  0x0001.00d.00000226 
    ktubu redo: slt: 13 rci: 62 opc: 10.22 objn: 518 objd: 518 tsn: 0
    Undo type:  Regular undo       Undo type:  Last buffer split:  No
    Tablespace Undo:  No
                 0x00000000
    index undo for leaf key operations
    KTB Redo
    op: 0x04  ver: 0x01 
    op: L  itl: xid:  0x0001.000.00000225 uba: 0x00800d5e.00e0.3c
                          flg: C—    lkc:  0     scn: 0x0000.00294c8d
    Dump kdilk : itl=2, kdxlkflg=0x1 sdc=0 indexid=0x401021 block=0x00401024
    (kdxlpu): purge leaf row
    key :(10):  06 c5 2b 5f 60 0b 27 02 c1 04
    CHANGE #2 TYP:2 CLS: 1 AFN:1 DBA:0x00401024 OBJ:518 SCN:0x0000.00294c8d SEQ:  1 OP:10.2 –CV:2(op:10.2)
    index redo (kdxlin):  insert leaf row
    KTB Redo
    op: 0x11  ver: 0x01 
    op: F  xid:  0x0001.00d.00000226    uba: 0x00800d5e.00e0.3f
    Block cleanout record, scn:  0x0000.00294c93 ver: 0x01 opt: 0x02, entries follow…
      itli: 2  flg: 2  scn: 0x0000.00294c8d
    REDO: SINGLE / — / —
    itl: 2, sno: 187, row size 20
    insert key: (10):  06 c5 2b 5f 60 0b 27 02 c1 04
    keydata: (6):  00 40 10 13 00 2e
    ·Redo Record包含一系列的CV(change vectors)
    ·上述示例中包含2个CV:
      –CV1:Op(5.1) Change Vector for undo blocks(事务开始)         –5.2 Undo segment header(事务回滚)
      –CV2:Op(10.2)Insert Leaf Row(插入索引叶子节点)




香港马会开奖记录|香港马会开奖资料|香港马会开奖现场|香港马会走势图|香港马会开奖结果直播|香港马会n730|