mysql 表唯一标识符_Oracle数据库的唯一标识符

Oracle数据库的唯一标识符

时间:2017-08-09 来源:

DBID是DataBase IDentifier的缩写,意思就是数据库的唯一标识符。

这个DBID在数据文件头和控制文件都是存在的,可以用于标示数据文件的归属。

对于不同数据库来说,DBID应当不同,而db_name则可能是相同的。

但是DBID是可变的,在进行数据库Clone等操作时,DBID可以被重置。

dbid是一个根据db_name \ db create time等hash出来的值

NOMOUNT/MOUNT/OPEN及未打开数据库等状态时,查询或获取数据库DBID的方法汇总:五大种类合计10种方法

一、数据库MOUNT/OPEN时,从v$database查询获得

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

BYS@ bys3>select dbid,open_mode from v$database;

DBID OPEN_MODE

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

3358363031 READ WRITE

SYS@ bys3>select dbid,open_mode from v$database;

DBID OPEN_MODE

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

3358363031 MOUNTED

二、使用RMAN的自动备份或日志来获取:

2.从自动备份控制文件集的名字查询DBID,详见:http://blog.csdn.net/q947817003/article/details/16370735

3.从RMAN备份时产生的日志文件查询DBID,与上一步在同一篇博客。详见:http://blog.csdn.net/q947817003/article/details/16370735

三、通过oracle event来dump数据文件头、日志文件头、控制文件头信息来获取DBID

下面三种方法都要求数据库在MOUNT或OPEN状态,且只能DUMP自己数据库的文件。

4.通过oracle

event来dump数据文件头来获取DBID,详见:http://blog.csdn.net/q947817003/article/details/16369041

5.通过oracle

event来dump控制文件头来获取DBID,详见:http://blog.csdn.net/q947817003/article/details/16370273

6.通过oracle event来dump

REDO日志文件头来获取DBID,详见:http://blog.csdn.net/q947817003/article/details/16370539

四、通过alter system dump logfile命令来DUMP REDO及归档日志

这种方法数据库可以在NOMOUNT/MOUNT/OPEN阶段,只用指定文件名,就可以DUMP自己数据库或其它数据库的文件(传到当前库)。

个人见解:

在需要DBID才能进行数据恢复时,alter system dump logfile

'filename';明显适应更多更复杂的场景,因为REDO日志或归档日志总会剩一个两个的,凭此就可以找到DBID了,哈哈。

7.通过alter system dump logfile命令来DUMP

REDO日志文件头来获取DBID,详见:http://blog.csdn.net/q947817003/article/details/16370203

8.通过alter system dump logfile命令来DUMP

归档日志文件头来获取DBID,方法了上一步完全一样。详见:http://blog.csdn.net/q947817003/article/details/16370203

五.用BBED--详见:http://blog.csdn.net/q947817003/article/details/16996475

这里只贴一小部分:

BBED> map

File: /u01/oradata/bys3/system01.dbf (1)

Block: 1 Dba:0x00400001

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

Data File Header

struct kcvfh, 860 bytes @0

ub4 tailchk @8188

BBED> print kcvfhhdr

struct kcvfhhdr, 76 bytes @20

ub4 kccfhswv @20 0x00000000

ub4 kccfhcvn @24 0x0b200000

ub4 kccfhdbi @28 0xc82c8d97

text kccfhdbn[0] @32 B

text kccfhdbn[1] @33 Y

text kccfhdbn[2] @34 S

text kccfhdbn[3] @35 3

text kccfhdbn[4] @36

text kccfhdbn[5] @37

DBID是对应的:ub4 kccfhdbi @28 0xc82c8d97 kccfhdbi--这个名字最后三位也能联想下DBID

可以计算出DBID:16进制c82c8d97,转换为10进制数字:

BYS@ bys3>select name,dbid from v$database;

NAME DBID

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

BYS3 3358363031

BYS@ bys3>select to_number('c82c8d97','xxxxxxxxxxxxx') from dual;

TO_NUMBER('C82C8D97','XXXXXXXXXXXXX')

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

3358363031

DB_NAME从上面text kccfhdbn几个字节可以看出--不需要计算了:--也可以看出,DB_NAME不能超过8个字符的原因了

(以上内容摘于网络,如有侵权,请告之,将第一时间删除)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在MySQL中查询Oracle数据库,您需要使用MySQL的Federated存储引擎。这个引擎允许MySQL连接到不同的数据源,包括Oracle数据库。 以下是在MySQL中查询Oracle数据库的步骤: 1. 确保您的MySQL服务器已启用Federated存储引擎。您可以通过运行以下命令来检查: SHOW ENGINES; 如果您看到Federated列中的“YES”,则示已启用Federated存储引擎。 2. 在MySQL中创建一个Federated,该将连接到Oracle数据库。例如,以下是创建一个连接到Oracle数据库的Federated的示例: CREATE TABLE oracle_table ( id INT(11) NOT NULL AUTO_INCREMENT, name VARCHAR(50) NOT NULL, age INT(11) NOT NULL, PRIMARY KEY (id) ) ENGINE=FEDERATED DEFAULT CHARSET=utf8mb4 CONNECTION='oracle://username:password@oracle_host:1521/oracle_sid/oracle_schema/oracle_table'; 其中,“username”和“password”是连接到Oracle数据库所需的凭据,“oracle_host”是Oracle数据库服务器的主机名或IP地址,“1521”是Oracle数据库服务器的端口,“oracle_sid”是Oracle数据库的系统标识符,“oracle_schema”是Oracle数据库所在的架构,“oracle_table”是要查询的Oracle的名称。 3. 在MySQL中查询Federated。例如,以下是从Oracle中检索数据的示例: SELECT * FROM oracle_table; 这将从Oracle中检索所有数据,并将其返回到MySQL中。 请注意,查询Oracle数据库时可能会遇到性能问题,因为MySQL必须通过网络连接到Oracle服务器并检索数据。因此,您应该进行适当的优化和测试,以确保查询效率最大化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值