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/