1.查询v$database获得





因为DBID在控制文件和数据文件里都存在记录,所以假设可以mount数据库就行查询v$database视图获得. 







SQL> alter database mount;





Database altered.





SQL> select dbid from v$database;





      DBID

----------

1363251591













2.在nomount状态时





假设数据库配置了自己主动控制文件备份(Oracle9i),而且名称是缺省的,那么我们能够从自己主动备份文件获得DBID. 









[oracle@jumper dbs]$ cd $ORACLE_HOME/dbs

[oracle@jumper dbs]$ ll c-*

-rw-r----- 1 oracle dba 3375104 Dec 21 11:13 c-1363251591-20051221-00

-rw-r----- 1 oracle dba 3358720 Jan 21 14:03 c-1363251591-20060121-00

-rw-r----- 1 oracle dba 3358720 Jan 21 14:08 c-1363251591-20060121-01









这里的1363251591就是DBID。在10g中,使用Flash Recovery Area。则没有这个命名规则。

3.从自己主动备份中恢复





须要或缺DBID进行恢复一般是由于丢失了全部的控制文件.在恢复时会遇到错误.









[oracle@jumper dbs]$ rman target  /





Recovery Manager: Release 9.2.0.4.0 - Production





Copyright (c) 1995, 2002, Oracle Corporation.  All rights reserved.





connected to target database: conner (not mounted)





RMAN> restore controlfile from autobackup;





Starting restore at 05-FEB-06





using target database controlfile instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=11 devtype=DISK

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of restore command at 02/05/2006 20:47:25

RMAN-06495: must explicitly specify DBID with SET DBID command 









假设存在自己主动备份,我们通常能够直接恢复控制文件,mount数据库之后就好办了: 









RMAN> restore controlfile from '/opt/oracle/product/9.2.0/dbs/c-1363251591-20051221-00';





Starting restore at 05-FEB-06





using channel ORA_DISK_1

channel ORA_DISK_1: restoring controlfile

channel ORA_DISK_1: restore complete

replicating controlfile

input filename=/opt/oracle/oradata/conner/control01.ctl

output filename=/opt/oracle/oradata/conner/control02.ctl

output filename=/opt/oracle/oradata/conner/control03.ctl

Finished restore at 05-FEB-06





 





4.直接从幸存的文件里读取





因为DBID存在于数据文件及控制文件里,所以我们能够通过PL/SQL程序直接从文件里读取: 









SQL> select eygle.get_dbid('/opt/oracle/oradata/conner','user02.dbf') from dual;





EYGLE.GET_DBID('/OPT/ORACLE/OR

------------------------------

1363251591





SQL> select dbid from v$database;





DBID

----------

1363251591





 事实上更简单的,用BBED就好了。

这样的方法仅为測试兴趣所致,不被推荐.

--此处为eygle自己定义的函数  (抽时间我会补上)









5、通过dump数据文件获取dbid:

SYS@orcl> alter system dump datafile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF' block 1000;





系统已更改。





SYS@orcl> select tracefile from v$process where addr in (select paddr from v$session where sid in (select sid from v$mystat));





--查看trace文件:Db ID=1363251591

TRACEFILE

------------------------------------------------------------------------------

d:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_ora_6740.trc





Start dump data block from file D:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF minblk 0 maxblk -1

 V10 STYLE FILE HEADER:

Compatibility Vsn = 186646528=0xb200000

Db ID=1363251591=0x51419187, Db Name='ORCL'

Activation ID=0=0x0

Control Seq=10579=0x2953, File size=1600=0x640

File Number=4, Blksiz=8192, File Type=3 DATA

Dump all the blocks in range:

...

-------------------------------

Dylan    Presents.

怎样获取oracle dbid的更多相关文章

  1. 获取ORACLE数据库的构建信息

    首先连接到数据库,获取ORACLE数据库的基本信息: C:\USERS\ADMINISTRATOR>SQLPLUS/NOLOG SQL*PLUS: RELEASE 10.2.0.3.0 - PR ...

  2. soapUI使用-DataSource获取oracle库中的参数

    soapUI使用-DataSource获取oracle库中的参数 下载mysql和oracle驱动包:http://pan.baidu.com/s/1i3sy1MH 放在Program Files\S ...

  3. 获取Oracle过程中的OUT SYS_REFCURSOR值

    一个项目中的实例:获取Oracle过程中的返回SYS_REFCURSOR.注意:如果SYS_REFCURSOR为一个表或视图.可以通过表名%ROWTYPE获取每行数据,而不必另外定义type. 原过程 ...

  4. 批量获取oracle的表和表字段注释【原】

    批量获取oracle的表和表字段注释 --用户表注释表 SELECT * FROM USER_TAB_COMMENTS WHERE TABLE_NAME LIKE 'WEB_ISC_%'; --显示指 ...

  5. SSIS获取Oracle数据库数据

    获取Oracle数据库步骤如下: 1.目标服务器获取连接Oracle数据库权限2.安装Oracle客户端,名称为win32_11gR2_client 安装管理员版本的.3.将配置文件tnsnames. ...

  6. Orabbix无法获取Oracle DB Size和DB Files Size的解决方法

    Orabbix无法获取Oracle DB Size和DB Files Size的解决方法 这几天在研究Orabbix时发现在Zabbix中无法获取DB Size和DB Files Size的大小,后来 ...

  7. (原创)如何在性能测试中自动生成并获取Oracle AWR报告

    版权声明:本文为原创文章,转载请先联系并标明出处 由于日常使用最多的数据库为Oracle,因此,最近又打起了Oracle的AWR报告的主意. 过去我们执行测试,都是执行开始和结束分别手动建立一个快照, ...

  8. 获取oracle 表字段,表名,以及主键之类等等的信息。

    获取表名:  Oracle的user_talbes用于记录了用户表信息. select * from user_tables  获取某个表的字段: USER_TAB_COLS中记录了用户表的列信息.下 ...

  9. 获取oracle 表字段,表名,以及主键之类等等的信息

    数据库版本号:select * from v$version 数据库名:select * from v$instance 注意: 我在C#项目中查询语句的时候报“ORA-00911: 无效字符” 的错 ...

随机推荐

  1. SPFA cojs 176. [USACO Feb07] 奶牛聚会

    cojs 176. [USACO Feb07] 奶牛聚会 ★☆   输入文件:sparty.in   输出文件:sparty.out   简单对比时间限制:3 s   内存限制:16 MB N(1 ≤ ...

  2. hdu 5210 delete 水题

    Delete Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5210 D ...

  3. Wide-range regulator delivers 12V, 3A output from 16 to 100V source

    Synchronous buck regulators offer high efficiency and are popular in applications in which available ...

  4. Android SDK Manager 代理服务器设置

    http://blog.csdn.net/star_splendid/article/details/6939063 自己机子更新的话,速度1KB/s 实在是等不及了~找方法吧 http://www. ...

  5. 下载Ubuntn 17.04 内核源代码

    zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21-Ubuntu SMP Thu Apr 6 17:04:57 ...

  6. javascript无缝滚动原理

    相比之下,无缝拼接能避免切换时出现空白,使用户体验更好! 无缝滚动原理: 制作一个双胞胎,内容跟主体内容一致,样式一致,如果横向排列则并排,当切换的时候,就可以弥补主体空白的地方,其他按普通循环操作即 ...

  7. Android 工程报错解决 Unable to resolve target 'android-17'

    转自:http://www.cnblogs.com/csulennon/p/3705177.html 换了系统后,重新安装了Android SDK和ADT插件,导入之前的工作空间.居然发现所有的And ...

  8. MFC 获取DC和输出文字、获取指定区域

    缓存DC的作用:解决闪烁问题 CRect  rect; GetClientRect(rect);获取view视图的区域 CClientDC dc(this); 创建了DC可作图 pdc->Dra ...

  9. Android(安卓)开发通过NDK调用JNI,使用opencv做本地c++代码开发配置方法 边缘检测 范例代码

    以前写过两个Android开发配置文档,使用NDK进行JNI开发,这样能够利用以前已经写好的C++代码. 前两篇博客地址: http://blog.csdn.net/watkinsong/articl ...

  10. nose的测试报告

    有时候我们要让报告整洁美观点,以html展示测试结果,我们可以借助pip install nosehtmloutput插件输出html格式报告 from nose.plugins.plugintest ...