oracle中如何获得数据库的DBID信息_oracle

1.查询v$database获得

由于DBID在控制文件和数据文件中都存在记录,所以如果能够mount数据库就可以查询v$database视图获得.

复制代码 代码如下:

SQL> alter database mount;
Database altered.
SQL> select dbid from v$database;
      DBID
----------
3152029224

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-3152029224-20051221-00
-rw-r----- 1 oracle dba 3358720 Jan 21 14:03 c-3152029224-20060121-00
-rw-r----- 1 oracle dba 3358720 Jan 21 14:08 c-3152029224-20060121-01

这里的3152029224就是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-3152029224-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
------------------------------
3152029224
SQL> select dbid from v$database;
DBID
----------
3152029224

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

这种方法仅为测试兴趣所致,不被推荐.

时间: 2025-01-18 19:50:08

oracle中如何获得数据库的DBID信息_oracle的相关文章

如何在oracle中手工创建数据库

oracle中手工创建数据库的步骤: 1. 创建必要的相关目录 2. 创建初始化参数文件 3. 设置环境变量Oracle_sid 4. 创建实例 5. 创建口令文件 6. 启动数据库到nomount(实例)状态 7. 执行建库脚本 8. 执行catalog脚本创建数据字典 9. 执行catproc创建package包 10.      执行pupbld 11.      由初始化参数文件创建spfile文件 12.      执行scott脚本创建scott模式 13.      用命令测试数据

Oracle数据库处理多媒体信息_oracle

正在看的ORACLE教程是:Oracle数据库处理多媒体信息.引文: 长期以来,多媒体信息在计算机中都是以文件形式存放,由操作系统管理的,但是随着计算机网络,分布式计算的发展,对多媒体信息进行高效的管理,存取,查询已经成了一种迫切需求.而关系数据库却有着强大的数据管理能力.两方面结合,多媒体数据库由此应运而生.本文将就Oracle对多媒体信息进行处理的方式,工具,特色以及一些基本原理做一个综述. 但是我们不能不遗憾的看到,现有数据库对一些多媒体数据所特有的操作能力还是很有限的.针对多媒体数据库的

在SQL Server和Oracle中创建job_数据库其它

首先说下ms server,因为我也是新手,所以首先选择了使用企业管理器进行任务设定,然后再导出设计完毕的任务脚本,这样就可以在其他数据库中直接通过执行脚本的形式来新建任务了(需要适当修改其中的一些任务名称和数据库名称等值),下面说下具体的操作步骤以及获得的任务脚本: 1. 保证启动ms server的"SQL Server代理服务"(即agent service) 2. 打开企业管理器 -> 连接数据服务器 -> 右键"SQL Server agent"

oracle中utl_file包读写文件操作实例学习_oracle

在oracle中utl_file包提供了一些操作文本文件的函数和过程,学习了一下他的基本操作 1.创建directory,并给用户授权 复制代码 代码如下: --创建directory create or replace directory TESTFILE as '/home/oracle/zxx/test'; --给用户授权 grant read, write on directory TESTFILE to zxx; 详细介绍 http://download.oracle.com/docs

oracle中lpad函数的用法详解_oracle

oracle中lpad的用法 pad翻译:填充 lpad函数,在字符串的左侧添加指定字符串,用法: www.jb51.net lpad(String ,截取长度,添加的字符串). 说是添加字符串也不准确,比较准确的说法是对String进行截取字符串, 如果截取长度大于String的长度,则在 String的左侧添加字符串进行填补,如果第三个参数未指定,则用空格进行填补. 例如: select lpad('test',10) from dual; 将返回" test" select lp

oracle中如何备份数据库

Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP).热备份和冷备份.导出备件是一种逻辑备份,冷备份和热备份是物理备份. 一. 导出/导入(Export/Import) 利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去. 1. 简单导出数据(Export)和导入数据(Import) Oracle支持三种方式类型的输出: (1).表方式(T方式),将指定表的数据导出. (2).用户方式(U方式),将指定用户的所有

Oracle中手动删除数据库教程

  一.手动删除文件系统数据库 1.停止监听与OEM 代码如下: $ lsnrctl stop listener_name $ emctl stop dbconsole 2.获得数据文件,日志文件及控制文件的相关信息,包含归档 代码如下: $ sqlplus / as sysdba SQL> select status,name from v$controlfile; --获取控制文件的位置信息 SQL> select * from v$dbfile; --获取数据文件的位置信息 SQL>

Oracle中手动删除数据库教程_oracle

在很多情况下,或无法使用dbca工具的时候,我们需要手动来删除数据库.对此,可以借助drop database命令来实现,下面的描述中给出手动删除数据库. 的具体步骤,包含文件系统数据库以及ASM数据库.环境:Oracle Enterprise Linux 5.4 + Oracle 10g R2 .  一.手动删除文件系统数据库      1.停止监听与OEM       复制代码 代码如下:         $ lsnrctl stop listener_name         $ emct

如何在oracle中导入dmp数据库文件

Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中. 利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用. 执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行, DOS中可以执行时由于 在oracle 8i 中 安装目录\ora81\BIN被设置为全局路径, 该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出.