zoukankan      html  css  js  c++  java
  • 数据库损坏的情况下如何获取到dbid

    方法1:
    11.2.0.4和12.2.0.1的数据文件头 搜了下dbid的位置,发现在8220字节开始的4个字节处,不确定db_block_size不是8192的库是不是在这个位置
    #我用的linux下hexdump,windows用UE打开估计也行吧
    [oracle@Monkey PROD3]$ hexdump -s 8220 -n 4 -C users01.dbf
    0000201c 28 27 c9 60 |('.`|
    00002020
    复制代码

    存放的数据为 28 27 c9 60

    说明:假设数据为60c92728,那么
    在big-endian下高位字节在前,存放为:
    数据 60 c9 27 28
    在little-endian下低位字节在前,存放为:
    数据 28 27 C9 60

    我的测试平台 Linux X86-64 属于Little ENDIAN_FORMAT,dump数据需反向读
    SQL> select * from v$transportable_platform where PLATFORM_NAME like '%Linux%';
    PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT CON_ID
    ----------- ------------------------------ -------------- ----------
    10 Linux IA (32-bit) Little 0
    11 Linux IA (64-bit) Little 0
    9 IBM zSeries Based Linux Big 0
    13 Linux x86 64-bit Little 0
    18 IBM Power Based Linux Big 0
    复制代码


    所以dbid是 0x60c92728 ,十进制为1623795496
    SQL> select to_number('60c92728','XXXXXXXX') from dual;
    TO_NUMBER('60C92728','XXXXXXXX')
    --------------------------------
    1623795496
    复制代码


    查dbid
    SQL> select dbid from v$database;

    DBID
    ----------
    1623795496
    复制代码

    方法2:
    [oracle@Monkey ~]$ vi /u01/app/oracle/product/12.2.1/db_1/dbs/initPROD.ora
    cat [oracle@Monkey ~]$ cat /u01/app/oracle/product/12.2.1/db_1/dbs/initPROD.ora
    db_name=PROD
    memory_target=300m
    [oracle@Monkey ~]$ sqlplus / as sysdba
    SQL*Plus: Release 12.2.0.1.0 Production on Fri Jul 5 10:25:53 2019
    Copyright (c) 1982, 2016, Oracle. All rights reserved.
    Connected to an idle instance.

    SQL> startup nomount;
    ORACLE instance started.

    Total System Global Area 314572800 bytes
    Fixed Size 8620224 bytes
    Variable Size 239077184 bytes
    Database Buffers 62914560 bytes
    Redo Buffers 3960832 bytes
    SQL>
    SQL> alter system dump datafile '/u01/app/oracle/oradata/PROD3/users01.dbf' block 1;

    System altered.

    SQL> oradebug setmypid;
    oradebug tracefile_name;
    Statement processed.
    SQL> /u01/app/oracle/diag/rdbms/prod/PROD/trace/PROD_ora_8650.trc
    SQL> host vi /u01/app/oracle/diag/rdbms/prod/PROD/trace/PROD_ora_8650.trc
    复制代码

    很容易就找到块头信息里的Db ID了
    *** 2019-07-05T10:30:20.465130+08:00
    V10 STYLE FILE HEADER:
    Compatibility Vsn = 203423744=0xc200000
    Db ID=1623795496=0x60c92728, Db Name='PROD3'
    Activation ID=0=0x0
    Control Seq=39023=0x986f, File size=64000=0xfa00
    File Number=4, Blksiz=8192, File Type=3 DATA

  • 相关阅读:
    Springboot html映射
    table 合并单元格
    Idea中Spring Boot 启动出错
    Modal模态框scrolltop保留上次位移的解决方案
    8、如何实现浏览器的前进、后退操作?
    html中table并排展示
    两个有序的链表的合并
    7、链表(下):如何轻松写出正确的链表代码?
    2018.10.12
    c语言关键字:const
  • 原文地址:https://www.cnblogs.com/hxlasky/p/11149314.html
Copyright © 2011-2022 走看看