Oracle在无法打开数据库的状态下获取DBID

最快的方法

感觉dump数据文件头这个方式很有趣,就dump了11.2.0.4和12.2.0.1的数据文件头 搜了下dbid的位置
发现在8220字节开始的4个字节处,不确定db_block_size不是8192的库是不是在这个位置
--------------------------------------------
#我用的linux下hexdump,windows用UE打开估计也行吧

$ hexdump -s 8220 -n 4 -C /u01/app/oracle/oradata/ORCL/users01.dbf 
0000201c  c0 09 d2 5d                                       |...]|
00002020

 

 

存放的数据为 c0 09 d2 5d

说明:假设数据为c009d25d,那么
在big-endian下高位字节在前,存放为:
数据 c0 09 d2 5d
在little-endian下低位字节在前,存放为:
数据 5d d2 09 c0

 Linux X86-64 属于Little ENDIAN_FORMAT,dump数据需反向读

RMAN> 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
 
         22
Linux OS (S64)                                                        
Big                     0

 

所以dbid是 0x5dd209c0 ,十进制为1574046144

其他方法(主要是BBED)见:https://blog.csdn.net/haibusuanyun/article/details/16370885

BBED的安装方法:http://blog.itpub.net/31442014/viewspace-2679321/

 

posted @ 2020-09-11 16:48  捌玖  阅读(183)  评论(0编辑  收藏  举报