目的:使用RMAN时,怎么样确定数据库的DBID
可以通过以下的方法确定数据库的DBID
1. 如果数据库是开启的,可以通过下面的一个查询来确定数据库的DBID
SQL> select dbid from v$database;
DBID
----------
269906945
2.如果所有的数据文件都丢失了,不能使用控制文件的自动备份等等,但是你有一个可用的控制文件,那么利用这个旧的控制文件将数据库置于mount状态,通过类似于1中查询即试图v$database查出数据库的DBID,因为动态性能视图在数据库出于mount状态下,就可以查询
3.如果配置了控制文件自动备份,且备份到了本地,不是在闪回恢复区,那么这个控制文件备份集的名字就包含了DBID,如:
c-269906945-20140913-07
此处:
269906945 就是数据库的DBID
如果数据库是10g,使用了闪回恢复区 + 控制文件自动备份,且备份集为默认的目录,不需要设置DBID,直接通过下面的命令就可以从自动备份集中恢复控制文件或参数文件spfie:
RMAN>startup nomount;
RMAN>restore controlfile from autobackup.
4.如果以前在进行rman备份,真个备份的过程的详细内容被记录下来,或者说有备份的日志,那么也很容易找到数据库的DBID,如:
Recovery Manager: Release 10.2.0.4.0 -Production on Sat Sep 13 12:53:56 2014
Copyright (c) 1982, 2007, Oracle. All rights reserved.
connected to target database: RADIUS (DBID=269906945)
RMAN> backup database format'/u01/backup/backup_full/full_%d_%T_%s_%p.bak';
Starting backup at 13-SEP-14
using target database control file instead ofrecovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=139 devtype=DISK
channel ORA_DISK_1: starting full datafilebackupset
channel ORA_DISK_1: specifying datafile(s) inbackupset
input datafile fno=00001name=/u01/oradata/radius/system01.dbf
input datafile fno=00003 name=/u01/oradata/radius/sysaux01.dbf
input datafile fno=00005name=/u01/oradata/radius/example01.dbf
input datafile fno=00002name=/u01/oradata/radius/undotbs01.dbf
input datafile fno=00004name=/u01/oradata/radius/users01.dbf
channel ORA_DISK_1: starting piece 1 at13-SEP-14
channel ORA_DISK_1: finished piece 1 at13-SEP-14
piecehandle=/u01/backup/backup_full/full_RADIUS_20140913_50_1.baktag=TAG20140913T125428 comment=NONE
channel ORA_DISK_1: backup set complete,elapsed time: 00:00:55
Finished backup at 13-SEP-14
Starting Control File and SPFILE Autobackupat 13-SEP-14
piece handle=/tmp/c-269906945-20140913-08comment=NONE
Finished Control File and SPFILE Autobackupat 13-SEP-14
/************************************************************/
【说明】
RMAN进行备份的时候,一定要产生日志,既能了解整个的备份完成的情况,同时也记录了很多在以后的恢复中利用到的信息。如:备份集的名字,路径,归档的序号,dbid等等
5.如果使用的是UNIX系统,如果数据库出现问题,但是仍然有一个数据文件还在,可以通过strings命令进行查看,如下:
$strings undotbs01.dbf | grep MAXVALUE
3587267724,MAXVALUE
...etc.
从上面可以看出,DBID是3587267724
6.如果使用了恢复目录catalog,通过RMAN连接到恢复目录数据库,发起 list incarnation命令,来查询DBID
首先必须将目标数据库置于nomount状态,然后在进行DBID的查询
如:
D:\>rman target <user>/<pwd>@mydb rcvcat <user>/<pwd>@rcat
RecoveryManager: Release 8.1.7.4.1 - Production
RMAN-06193:connected to target database (not started)
RMAN-06008:connected to recovery catalog database
RMAN> startup nomount
RMAN-06196:Oracle instance started
TotalSystem Global Area 94980124 bytes
FixedSize 75804 bytes
VariableSize 57585664 bytes
DatabaseBuffers 37240832 bytes
RedoBuffers 77824 bytes
RMAN> list incarnation;
RMAN-03022:compiling command: list
Listof Database Incarnations
DBKey Inc Key DB Name DB ID CUR Reset SCN Reset Time
-------------- -------- ---------------- --- ---------- --------
12 ORCL817 1411146558 YES 282854 03-DEC-02
-----------------------------------------------------------------
--END--