获得Oracle数据库的DBID

来源:互联网 发布:亿赞普大数据 编辑:程序博客网 时间:2024/05/21 14:06

一.查询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';              ---使用归档日志文件


原创粉丝点击