在数据库各种状态下查询DBID的五大类十种方法汇总


  1. 关于DBID:
  2. DBID是DataBase IDentifier的缩写,意思就是数据库的唯一标识符。
  3. 这个DBID在数据文件头和控制文件都是存在的,可以用于标示数据文件的归属。
  4. 对于不同数据库来说,DBID应当不同,而db_name则可能是相同的。
  5. 但是DBID是可变的,在进行数据库Clone等操作时,DBID可以被重置。
  6. dbid是一个根据db_name \ db create time等hash出来的值

  7. NOMOUNT/MOUNT/OPEN及未打开数据库等状态时,查询或获取数据库DBID的方法汇总:五大种类合计10种方法
  8. 一、数据库MOUNT/OPEN时,从v$database查询获得
  9. 1.由于DBID在控制文件和数据文件中都存在记录,所以如果能够mount数据库就可以查询v$database视图获得.
  10. BYS@ bys3>select dbid,open_mode from v$database;
  11.       DBID OPEN_MODE
  12. ---------- --------------------
  13. 3358363031 READ WRITE
  14. SYS@ bys3>select dbid,open_mode from v$database;
  15.       DBID OPEN_MODE
  16. ---------- --------------------
  17. 3358363031 MOUNTED

  18. 二、使用RMAN的自动备份或日志来获取:
  19. 2.从自动备份控制文件集的名字查询DBID,详见:http://blog.csdn.net/q947817003/article/details/16370735
  20. 3.从RMAN备份时产生的日志文件查询DBID,与上一步在同一篇博客。详见:http://blog.csdn.net/q947817003/article/details/16370735

  21. 三、通过oracle event来dump数据文件头、日志文件头、控制文件头信息来获取DBID
  22. 下面三种方法都要求数据库在MOUNT或OPEN状态,且只能DUMP自己数据库的文件。
  23. 4.通过oracle event来dump数据文件头来获取DBID,详见:http://blog.csdn.net/q947817003/article/details/16369041
  24. 5.通过oracle event来dump控制文件头来获取DBID,详见:http://blog.csdn.net/q947817003/article/details/16370273
  25. 6.通过oracle event来dump REDO日志文件头来获取DBID,详见:http://blog.csdn.net/q947817003/article/details/16370539

  26. 四、通过alter system dump logfile命令来DUMP REDO及归档日志
  27. 这种方法数据库可以在NOMOUNT/MOUNT/OPEN阶段,只用指定文件名,就可以DUMP自己数据库或其它数据库的文件(传到当前库)。
  28. 个人见解:
  29. 在需要DBID才能进行数据恢复时,alter system dump logfile 'filename';明显适应更多更复杂的场景,因为REDO日志或归档日志总会剩一个两个的,凭此就可以找到DBID了,哈哈。
  30. 7.通过alter system dump logfile命令来DUMP REDO日志文件头来获取DBID,详见:http://blog.csdn.net/q947817003/article/details/16370203
  31. 8.通过alter system dump logfile命令来DUMP 归档日志文件头来获取DBID,方法了上一步完全一样。详见:http://blog.csdn.net/q947817003/article/details/16370203

  32. .用BBED--详见:http://blog.youkuaiyun.com/q947817003/article/details/16996475   这里只贴一小部分:
  33. BBED> map
  34.  File: /u01/oradata/bys3/system01.dbf (1)
  35.  Block: 1                                     Dba:0x00400001
  36. ------------------------------------------------------------
  37.  Data File Header

  38.  struct kcvfh, 860 bytes                    @0       

  39.  ub4 tailchk                                @8188   
  40. BBED> print kcvfhhdr
  41. struct kcvfhhdr, 76 bytes                   @20      
  42.    ub4 kccfhswv                             @20       0x00000000
  43.    ub4 kccfhcvn                             @24       0x0b200000
  44.    ub4 kccfhdbi                             @28       0xc82c8d97
  45.    text kccfhdbn[0]                         @32      B
  46.    text kccfhdbn[1]                         @33      Y
  47.    text kccfhdbn[2]                         @34      S
  48.    text kccfhdbn[3]                         @35      3
  49.    text kccfhdbn[4]                         @36       
  50.    text kccfhdbn[5]                         @37      
  51. DBID是对应的:ub4 kccfhdbi           @28       0xc82c8d97   kccfhdbi--这个名字最后三位也能联想下DBID
  52. 可以计算出DBID:16进制c82c8d97,转换为10进制数字:
  53. BYS@ bys3>select name,dbid from v$database;
  54. NAME            DBID
  55. --------- ----------
  56. BYS3      3358363031
  57. BYS@ bys3>select to_number('c82c8d97','xxxxxxxxxxxxx') from dual;
  58. TO_NUMBER('C82C8D97','XXXXXXXXXXXXX')
  59. -------------------------------------
  60.                            3358363031
  61. DB_NAME从上面text kccfhdbn几个字节可以看出--不需要计算了:--也可以看出,DB_NAME不能超过8个字符的原因了
  62. 六、不是技术的技术
  63. 通过包获取:
    select dbms_swrf_internal.get_awr_dbid from dual ;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28878983/viewspace-2136096/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28878983/viewspace-2136096/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值