[20161003]如何知道資料庫的dbid.txt

lfree發表於2016-10-04
[20161003]如何知道資料庫的dbid.txt

--別人問的問題,實際上資料恢復我自己都很少需要知道它。實際上方法很多。
--自己做一些測試。

1.環境:
SYS@test> select * from v$version where rownum=1;
BANNER                                                                               CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production              0

2.方法1:
--如果能找到控制檔案,啟動到mount模式。
--控制檔案其實無處不在,如果你做rman備份。
SYS@test> startup mount
ORACLE instance started.

Total System Global Area 1252663296 bytes
Fixed Size                  2402152 bytes
Variable Size             788531352 bytes
Database Buffers          452984832 bytes
Redo Buffers                8744960 bytes
Database mounted.

D:\tools\rlwrap>rman target /
rman target /
Recovery Manager: Release 12.1.0.1.0 - Production on Tue Oct 4 21:02:45 2016
Copyright (c) 1982, 2013, Oracle and/or its affiliates.  All rights reserved.
connected to target database: TEST (DBID=2119378787, not open)

RMAN> show  SNAPSHOT CONTROLFILE name;
RMAN configuration parameters for database with db_unique_name TEST are:
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:\APP\ORACLE\PRODUCT\12.1.0\DBHOME_1\DATABASE\SNCFTEST.ORA'; # default

--也可以執行如下轉儲:
SYS@test> alter session set events 'immediate trace name controlf level 3';
Session altered.

3.方法2:
--如果你沒有控制檔案,你做過rman備份,看看備份時留下的日誌,其實也能找到dbid。

4.方法3:
--找一個資料檔案當然最好system資料檔案,做1個轉儲就能知道dbid。
--實際上你可以把這個檔案複製到別的機器,使用別的機器做轉儲:

SYS@test> alter system dump datafile 'D:\app\oracle\oradata\test\SYSTEM01.DBF' block 1 ;
System altered.

--//注意在mount下,datfile後不能跟數字,而是使用檔名。
--//檢查轉儲:

Start dump data block from file D:\APP\ORACLE\ORADATA\TEST\SYSTEM01.DBF minblk 1 maxblk 1
 V10 STYLE FILE HEADER:
    Compatibility Vsn = 202375168=0xc100000
    Db ID=2119378787=0x7e532763, Db Name='TEST'
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Activation ID=0=0x0
    Control Seq=266950=0x412c6, File size=112640=0x1b800
    File Number=1, Blksiz=8192, File Type=3 DATA
Dump all the blocks in range:
End dump data block from file D:\APP\ORACLE\ORADATA\TEST\SYSTEM01.DBF minblk 2 maxblk 1

5.方法4,使用bbed:
BBED> info
 File#  Name                                                         Size(blks)
 -----  ----                                                         ----------
     1  D:\APP\ORACLE\ORADATA\TEST\SYSTEM01.DBF                               0
     2  D:\APP\ORACLE\ORADATA\TEST\PDBSEED\SYSTEM01.DBF                       0
     3  D:\APP\ORACLE\ORADATA\TEST\SYSAUX01.DBF                               0
     4  D:\APP\ORACLE\ORADATA\TEST\PDBSEED\SYSAUX01.DBF                       0
     5  D:\APP\ORACLE\ORADATA\TEST\UNDOTBS01.DBF                              0
     6  D:\APP\ORACLE\ORADATA\TEST\USERS01.DBF                                0
     7  D:\APP\ORACLE\ORADATA\TEST\TEST01P\SYSTEM01.DBF                       0
     8  D:\APP\ORACLE\ORADATA\TEST\TEST01P\SYSAUX01.DBF                       0
     9  D:\APP\ORACLE\ORADATA\TEST\TEST01P\SAMPLE_SCHEMA_USERS01.DBF          0
    10  D:\APP\ORACLE\ORADATA\TEST\TEST01P\EXAMPLE01.DBF                      0
    15  D:\APP\ORACLE\ORADATA\TEST\TEST01P\LFREE01.DBF                        0

BBED> set dba 1,2
        DBA             0x00400002 (4194306 1,2)
--//注,我使用windows版本的bbed,無法識別資料檔案的第1塊,出現偏差,實際上正常使用set dba 1,1.

BBED> p /d kcvfh.kcvfhhdr.kccfhdbi
ub4 kccfhdbi                                @28       2119378787

BBED> p /x kcvfh.kcvfhhdr.kccfhdbi
ub4 kccfhdbi                                @28       0x7e532763

6.應該還有其他方法,我僅僅知道這些。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2125849/,如需轉載,請註明出處,否則將追究法律責任。

相關文章