`
hougbin
  • 浏览: 502549 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

如何获得数据库的DBID

阅读更多

DBID作用:

1 当丢失了控制文件时,进行自动恢复数据时用到DBID.

RMAN> restore controlfile from autobackup;

启动 restore 于 15-2月 -08

使用通道 ORA_DISK_1

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

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

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

RMAN-03002: failure of restore command at 02/15/2008 00:43:38

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

2 进行rman恢复时,有时也用到DBID.

3 oracle自动控制文件也用DBID做文件名

4 DBID存在于数据文件及控制文件中

 

在进行数据库恢复的过程中,很多时候我们需要知道Oracle数据库的DBID,通常有以下几种方法可以获得数据库的DBID.

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就好了
分享到:
评论

相关推荐

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

    以下是获取Oracle数据库DBID的几种常见方法: 1. 查询`v$database`视图 当数据库处于MOUNT状态时,可以通过查询动态性能视图`v$database`来获取DBID。例如,执行以下SQL命令: ```sql SQL> alter database mount...

    还原sqlserver2008数据提示:因为数据库正在使用,所以无法获得对数据库的独占访问权.docx

    ### SQL Server 2008 数据库还原时遇到“无法获得独占访问权”问题解析与解决方案 在日常的企业级数据库管理与维护工作中,我们经常会遇到数据库备份与还原的需求。对于SQL Server 2008而言,当进行数据库还原操作...

    sql server 还原数据库时提示数据库正在使用,无法进行操作的解决方法

    SELECT 'KILL ' + CAST(spid AS VARCHAR(50)) FROM sys.sysprocesses WHERE db_name(dbid) = @dbname OPEN cs_result FETCH NEXT FROM cs_result INTO @sql WHILE @@fetch_status = 0 BEGIN EXEC(@sql) ...

    数据库运维说明书.docx

    2. **数据库唯一名称**:查询`SELECT db_unique_name FROM v$database`可得到数据库的全局唯一名称。 3. **数据库ID**:`SELECT dbid FROM v$database`用于获取数据库的唯一标识符。 4. **创建时间**:`SELECT to_...

    SQL-server数据库和表的创建与管理.doc

    【实验报告】 实验名称:数据库和表的创建与管理 实验目的: 1. 理解数据库和表在数据管理中的重要性;...通过这次实验,我们的数据库管理技能得到了提升,为进一步深入学习SQL Server打下了坚实基础。

    杀死正在使用数据库的线程.pdf

    在SQL Server中,数据库的管理和维护是至关重要的任务,尤其是当遇到无法正常操作的情况,例如在尝试还原数据库时出现“因为数据库正在使用,所以无法获得对数据库的独占访问权”的错误。这个问题通常是因为有其他...

    数据库操作语句大全(sql)

    一张表,一旦分组 完成后,查询后只能得到组相关的信息。 组相关的信息:(统计信息) count,sum,max,min,avg 分组的标准) 在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据 在selecte统计...

    Oracle Rman备份集在异机恢复

    DBID可以在目标数据库(需要恢复的数据库)上通过查询v$database视图中的dbid字段获得。DBID对于保证在恢复过程中数据库可以被正确识别至关重要。 将备份集从源机器转移到目标机器,通常通过FTP等网络传输工具来...

    数据库日常维护常用的脚本部分收录.docx

    - `dbid`表示数据库编号,`objid`表示数据对象编号。 **应用场景:** - 监控数据库中的活动连接,定位性能问题。 #### 五、查看数据库中的锁情况 通过`sp_lock`存储过程可以查看当前数据库中的锁情况。 **命令**...

    修改数据库为多用户模式

    在将数据库从单用户模式切换到多用户模式时,主要是为了确保在系统维护或升级后,所有需要访问该数据库的用户能够重新获得连接权限。以下是一个详细步骤的解释: 1. **KILL 进程**: 在修改数据库模式之前,通常...

    利用RMAN将数据库转换到不同平台上

    这个特性在后续版本中得到了增强,特别是在Oracle 9i中支持了多种模块大小,进一步克服了源和目标数据库模块大小不一致的问题。在Oracle 10g中,平台间的限制进一步减少,使得跨平台迁移变得更加容易。 恢复管理器...

    Allegro-Skill-axl函数简介

    Allegro数据库中的每个对象,如IC元件、网络等,都有一个唯一的dbid(数据库标识符)。AXL-SKILL正是通过这些dbid来操作Allegro中的对象。不同级别的dbid对应不同的对象类型,例如在设计级别上有Property Dictionary...

    asp.net 因为数据库正在使用的解决方法

    ### ASP.NET 中因数据库正在使用而无法获得排他访问权的问题及解决方法 #### 问题背景 在ASP.NET应用程序开发过程中,可能会遇到由于数据库正在被其他进程或连接使用而导致无法获得对数据库的排他访问权限的情况。...

    Database Mount and Unmount

    - **数据库信息**:从`systdatabases`目录中获取,包括数据库名称、dbid、数据库管理员(dba)的登录名、所有者的suid、事务日志指针、创建日期、`sysdatabases`字段中的状态位、最后一次执行`dump tran`的日期以及...

    RMAN备份与恢复.docx

    - 在源数据库上,通过查询`v$database`视图获取数据库标识符(DBID),这对于异机恢复至关重要。 ```sql SQL> select dbid from v$database; ``` 3. **目标环境准备**: - 设置Oracle相关的环境变量,如`...

    MSSQL2005 手工盲注 总结.txt

    - **dbid检测**:通过查询数据库ID(dbid)来获取关于数据库的基本信息。 - **示例代码**: ```sql http://www.oldjun.com/oldjun.aspx?id=1 and (select count(*) from master.dbo.sysdatabases where dbid=5)=1...

    MSSQL性能监控SQL语句

    在IT行业中,数据库性能监控是确保系统稳定性和优化性能的关键环节。Microsoft SQL Server(MSSQL)作为一款广泛使用的数据库管理系统...在实际应用中,应根据具体需求调整查询条件和排序方式,以获得最有价值的信息。

    Oracle自带的性能诊断工具(AWR报告)

    通过AWR报告,用户可以获得指定时间段内整个系统资源使用情况的详尽报告,类似于对一个人进行全面的健康检查。 #### AWR报告的价值 1. **性能监控**:AWR报告提供了关于CPU使用率、I/O统计、等待事件等关键性能...

    sql 的mdf文件很麻烦

    你也许会得到类似下面的错误信息 服务器: 消息 1813,级别 16,状态 2,行 1  未能打开新数据库 ’test’。CREATE DATABASE 将终止。  设备激活错误。物理文件名 ’d:\test_log.LDF’ 可能有误。  应该...

Global site tag (gtag.js) - Google Analytics