一.查询v$database获得
dbid保存在控制文件、数据文件、日志文件中,当数据库处于mount状态或者open状态时,可以通过v$database视图查询dbid。
SYS@orcl>startupmount;
ORACLE instancestarted.
Total System GlobalArea 536870912 bytes
FixedSize 2085360 bytes
VariableSize 159387152 bytes
DatabaseBuffers 369098752 bytes
RedoBuffers 6299648 bytes
Database mounted.
SYS@orcl>selectdbid from v$database;
DBID
----------
1320402727
SYS@orcl>alterdatabase open;
Database altered.
SYS@orcl>selectdbid from v$database;
DBID
----------
1320402727
二、使用rman获得数据库dbid
当数据库处于open时,在rman的登录信息中可以看到数据库dbid。
[oracle@oraedu~]$ rman target /
Recovery Manager:Release 10.2.0.4.0 - Production on Sun Nov 18 15:08:53 2012
Copyright (c) 1982,2007, Oracle. All rights reserved.
connectedto target database: ORCL (DBID=1320402727)
三.从备份中恢复
控制文件一般有多个拷贝,如果只有其中一个控制文件损坏,我们可以shutdown数据库,然后删除损坏的控制文件,再把未损坏的控制文件复制为损坏的控制文件名,最后重新启动数据库到mount状态就可以查询到dbid。
如果所有控制文件都损坏,但是rman备份了控制文件,可以用rman恢复丢失的控制文件,只要有了控制文件,数据库就可以到mount状态,也可以通过方法1找到dbid。
rman备份controlfile文件又分为两种情况,(1)控制文件自动保存在flash_recovery_area,这是rman默认的设置(如果参数flash_recovery_area没有指定,控制文件会保存在$ORACLE_HOME/dbs目录,控制文件生成的格式与第二种方式生成的格式一样)。(2)控制文件保存在指定的位置。下面就两种方式分别说明:
(1)控制文件自动保存在flash_recovery_area
[oracle@oraedu~]$ rman target /
Recovery Manager:Release 10.2.0.4.0 - Production on Sun Nov 18 15:27:17 2012
Copyright (c) 1982,2007, Oracle. All rights reserved.
connected to target database: orcl (not mounted) ---数据库处于nomount状态
RMAN>show all;
……输出省略……
CONFIGURE CONTROLFILE AUTOBACKUP ON; ---rman已设置控制文件自动备份
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO'%F'; # default ---default表示控制文件备份在flash_recovery_area
……输出省略……
如果控制文件是保存在flash_recovery_area,恢复控制文件很简单,执行下面命令即可:
RMAN>restore controlfile from autobackup;
Starting restore at18-NOV-12
using channelORA_DISK_1
recovery areadestination: /u01/app/oracle/flash_recovery_area
database name (ordatabase unique name) used for search: ORCL
channel ORA_DISK_1:autobackup found in the recovery area
channel ORA_DISK_1: autobackup found:/u01/app/oracle/flash_recovery_area/ORCL/autobackup/2012_11_18/o1_mf_s_799685018_8bk0wtv8_.bkp ---保存在flash_recovery_area的控制文件备份从文件名上看不出dbid
channel ORA_DISK_1:control file restore from autobackup complete
output filename=/u01/app/oracle/oradata/orcl/control01.ctl ---控制文件已经恢复
outputfilename=/u01/app/oracle/oradata/orcl/control02.ctl
outputfilename=/u01/app/oracle/oradata/orcl/control03.ctl
Finished restore at18-NOV-12
rman恢复完控制文件后,sqlplus中设置数据库到mount状态就可以查询到dbid(命令:alter database mount),到这一步查询dbid已经完成,但是数据库还要应用重做日志把数据库恢复到关闭的那一刻(rman中执行recoverdatabase),最后还需要用alter database open resetlogs;方式打开数据库,本文只说明怎么获得dbid,在控制文件恢复后具体要做什么内容将在其他文档中说明。
(2)控制文件保存在指定的位置
RMAN> configure controlfile autobackup format for device typedisk to '/u01/app/oracle/databack/cf_%F'; ---rman设置控制文件保存的位置和格式。
using targetdatabase control file instead of recovery catalog
new RMANconfiguration parameters:
CONFIGURECONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO'/u01/app/oracle/databack/cf_%F';
new RMANconfiguration parameters are successfully stored
RMAN>show all;
……输出省略……
CONFIGURECONTROLFILE AUTOBACKUP ON;
CONFIGURECONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO'/u01/app/oracle/databack/cf_%F';
……输出省略……
RMAN>backup datafile 4;
Starting backup at18-NOV-12
allocated channel:ORA_DISK_1
channel ORA_DISK_1:sid=159 devtype=DISK
channel ORA_DISK_1:starting full datafile backupset
channel ORA_DISK_1:specifying datafile(s) in backupset
input datafilefno=00004 name=/u01/app/oracle/oradata/orcl/users01.dbf
channel ORA_DISK_1:starting piece 1 at 18-NOV-12
channel ORA_DISK_1:finished piece 1 at 18-NOV-12
piecehandle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2012_11_18/o1_mf_nnndf_TAG20121118T154650_8bk4mbxz_.bkptag=TAG20121118T154650 comment=NONE
channel ORA_DISK_1:backup set complete, elapsed time: 00:00:01
Finished backup at18-NOV-12
Starting ControlFile and SPFILE Autobackup at 18-NOV-12
piece handle=/u01/app/oracle/databack/cf_c-1320402727-20121118-0acomment=NONE ---数字1320402727即是dbid.
Finished ControlFile and SPFILE Autobackup at 18-NOV-12
恢复指定的自动备份控制文件,在rman中输入resotre controlfile from '/u01/app/oracle/databack/cf_c-1320402727-20121118-0a'。
如果rman的configure命令指定控制文件保存在flash_reconver_area的目录,备份的控制文件名仍然是用户指定的格式。
四、通过数据文件、在线日志文件、归档日志文件获得
[oracle@oraedu~]$ sqlplus / as sysdba
SQL*Plus: Release10.2.0.4.0 - Production on Sun Nov 18 16:00:31 2012
Copyright (c) 1982,2007, Oracle. All Rights Reserved.
Connected to an idleinstance.
SYS@orcl>startupnomount;
ORACLE instancestarted.
Total System GlobalArea 536870912 bytes
FixedSize 2085360 bytes
VariableSize 159387152 bytes
DatabaseBuffers 369098752 bytes
RedoBuffers 6299648 bytes
SYS@orcl>alter system dump datafile'/u01/app/oracle/oradata/orcl/undotbs01.dbf' block min 1 block max 1; ---dump出的文件保存在udump目录中
SYS@orcl>host cat/u01/app/oracle/admin/orcl/udump/orcl_ora_6162.trc | grep 'Db ID' ---显示时间为最新的trace文件
DbID=1320402727=0x4eb3bf27, Db Name='ORCL'
除了能够使用普通的数据文件外还可以使用undo表空、临时表空间的数据文件,所有dump出的文件都保存在$ORACLE_BASE/admin/<sid>/udump
SYS@orcl>alter system dump tempfile'/u01/app/oracle/oradata/orcl/temp01.dbf' block min 1 block max 1; --使用临时表空间数据文件
SYS@orcl>alter system dump logfile'/u01/app/oracle/oradata/orcl/redo01.log'; ---使用日志文件
SYS@orcl>alter system dump logfile'/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2012_11_18/o1_mf_1_1_8bk3z5xv_.arc'; ---使用归档日志文件