第一次在JavaEye写博客,真紧张啊!
场景如下:
[ 给定一个坏掉的control file,如何从中找出DBID和DBNAME ]
方法1: 使用BBED(block browser edit),dump出control file,从中寻找dbid,dbname
1.1 配置bbed
1.1.1 安装bbed
[oracle@single ~]$ cd $ORACLE_HOME/rdbms/lib
[oracle@single lib]$ make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed
1.1.2 设置bbed.par, filelist.txt文件
1.1.2.1 新建一个名为bbed.par的文件,文件内容如下。等会启动bbed.par的时候要用
bbed.par
[oracle@single lib]$ cat /home/oracle/chou/bbed.par
blocksize=8192
listfile=/home/oracle/chou/filelist.txt
mode=edit
1.1.2.2 新建一个名为filelist.txt的文件,文件内容就是你想要操作的数据文件
filelist.txt
[oracle@single lib]$ cat /home/oracle/chou/filelist.txt
1 /home/oracle/chou/control01.ctl 7389184
依次为:文件编号(随意), 文件名, 文件大小(KB)
1.2 启动BBED
[oracle@single lib]$ bbed parfile=/home/oracle/chou/bbed.par
Password: <== 密码:blockedit
BBED: Release 2.0.0.0.0 - Limited Production on Mon Jul 12 19:03:27 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
************* !!! For Oracle Internal Use only !!! ***************
BBED>
BBED> dump file 1 block 1 count 500
File: /home/oracle/chou/control01.ctl (1)
Block: 1 Offsets: 0 to 499 Dba:0x00400001
------------------------------------------------------------------------
15c20000 01000000 00000000 00000104 58ff0000 00000000 0003200a cd71717d
4d4f4e53 54455200
e2130000 c2010000 00400000 00000100 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
38836a07 d1c6322a c7834400 00080000 3ac51a2b 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 08000000 08000000 08000000 00000000 00000000 00000000
01000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000
<32 bytes per line>
BBED>
( 请参考 => http://www.udpwork.com/item/1929.html )
将cd71717d 做一个顺序上的变换,得到dbid如下:
DBID:7d7171cd 转换为十进制 => 2104586701
DBNAME:
4d4f4e53 54455200
,转换为字符
:
SQL> select utl_raw.cast_to_varchar2('4d4f4e5354455200') from dual;
UTL_RAW.CAST_TO_VARCHAR2('4D4F4E5354455200')
--------------------------------------------------------------------------------
MONSTER
方法2: 用坏的control file 启动数据库,从trace file中寻找dbid, dbname
2.1 用坏control file 代替原先的control file,然后startup DB
[oracle@single oradata]$ ls -ltr
合計 7240
drwxr-x--- 2 oracle dba 4096 2月 19 09:53 single
-rwxrwxr-x 1 oracle dba 7389184 7月 6 13:27 control01.ctl
drwxr-x--- 2 oracle dba 4096 7月 11 15:02 tesy
drwxr-x--- 2 oracle dba 4096 7月 12 07:41 test
[oracle@single oradata]$ cd test
[oracle@single test]$ mv control01.ctl control01.ctl.bak
[oracle@single test]$ cd ..
[oracle@single oradata]$ cp control01.ctl test/.
[oracle@single test]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Mon Jul 12 07:41:26 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size 1218992 bytes
Variable Size 96470608 bytes
Database Buffers 184549376 bytes
Redo Buffers 2973696 bytes
ORA-00227: corrupt block detected in control file: (block 1, # blocks 1)
ORA-00202: control file: '/opt/ora10g/oradata/test/control01.ctl'
2.2 检查trace file
[oracle@single udump]$ view test_ora_5628.trc
1 /opt/ora10g/admin/test/udump/test_ora_5628.trc
2 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
3 With the Partitioning, OLAP and Data Mining options
4 ORACLE_HOME = /opt/ora10g/product/10.2.0/db_1
5 System name: Linux
6 Node name: single
7 Release: 2.6.18-92.el5PAE
8 Version: #1 SMP Fri May 23 22:26:05 EDT 2008
9 Machine: i686
10 Instance name: test
11 Redo thread mounted by this instance: 0 <none>
12 Oracle process number: 15
13 Unix process pid: 5628, image: oracle@single (TNS V1-V3)
14
15 *** SERVICE NAME:() 2010-07-12 07:41:29.190
16 *** SESSION ID:(159.1) 2010-07-12 07:41:29.190
17 Hex dump of (file 0, block 1)
18 Dump of memory from 0xB7FB7E00 to 0xB7FBBE00
19 B7FB7E00 0000C215 00000001 00000000 04010000 [................]
20 B7FB7E10 0000FF58 00000000 0A200300 7D7171CD
[X......... ..qq}]
21 B7FB7E20 534E4F4D 00524554 000013E2 000001C2 [MONSTER
.........]
22 B7FB7E30 00004000 00010000 00000000 00000000 [.@..............]
23 B7FB7E40 00000000 00000000 00000000 00000000 [................]
这样得到的dbid不用转换顺序,换为十进制就可以了,dbname就在下面一行,这就不多说了。
DBID:
7D7171CD
转换为十进制 => 2104586701
DBNAME:
MONSTER
分享到:
相关推荐
介绍了使用DBNEWID Utility更改Oracle 数据库dbid和dbname的方法
DBCC BUFFER命令可以用来打印缓冲区头和页面从缓冲区缓存中。该命令的语法如下: dbcc buffer ([dbid|dbname] [,objid|objname] [,nbufs], [printopt]) 其中,dbid|dbname是数据库ID或数据库名称,objid|objname是...
如果数据库配置了自动控制文件备份,并且备份文件的命名遵循默认规则(在Oracle 9i之前),你可以从这些备份文件的名称中找到DBID。例如,文件名中的一串数字就是DBID,如`c-3152029224-20051221-00`中的`...
- `SELECT * FROM Master.dbo.SYSPROCESSES WHERE [DBID] IN (...)`: 这是主要的查询语句,它从`Master.dbo.SYSPROCESSES`表中选取所有列,其中`DBID`字段的值必须存在于子查询的结果中。 4. **子查询**: - 子...
这里,`%d`和`%s`是格式化占位符,分别对应整型变量`@DBID`和字符串变量`@DBNAME`,这使得错误消息可以包含动态数据,提高了错误信息的可用性。 在报表开发过程中,异常处理显得尤为重要。由于报表的生成通常涉及多...
在没有控制文件的情况下,RMAN可以从自动备份中恢复控制文件,但需要先通过`SET DBID`命令设置正确的DBID。 #### 3. 恢复控制文件 一旦设置了DBID,可以使用RMAN的`RESTORE CONTROLFILE FROM AUTOBACKUP`命令从自动...
ALTER DATABASE ' + @DBName + ' ADD FILE (NAME = N''' + @DBName + 'Index'', FILENAME = N''F:\IndexGroup\' + @DBName + 'Index.ndf'', SIZE = 1MB, FILEGROWTH = 1MB) TO FILEGROUP ' + @DBName + 'Group; '...
WHERE dbid = db_id(@dbname); OPEN tb; FETCH NEXT FROM tb INTO @s; WHILE @@FETCH_STATUS = 0 BEGIN EXEC(@s); FETCH NEXT FROM tb INTO @s; END; CLOSE tb; DEALLOCATE tb; GO DROP DATABASE ...
在Oracle数据库管理中,将数据库从一个平台迁移到另一个平台是一项复杂的任务,涉及到数据的兼容性和安全性。Oracle从8i版本开始引入了可传送表空间(Transportable Tablespaces)特性,使得用户可以直接复制数据...
- 设置目标实例的参数文件`init<dbname>.ora`,例如: ```bash *.db_name='xzdb' *.enable_pluggable_database=true ``` - 这些步骤确保了目标环境中具备了运行数据库的基本条件。 2. **备份数据传输**: - ...
Oracle 日志文件是 Oracle 数据库中记录所有数据库操作的文件,对数据库的稳定运行和错误分析具有重要作用。Oracle 日志文件可以帮助数据库管理员追踪数据库的所有操作,包括数据修改、事务提交、错误信息等。下面是...
dbname=CONVERT(CHAR(15),db_name(l.dbid)), 'table'=CONVERT(CHAR(20),object_name(l.id,l.dbid)), page, class=CONVERT(CHAR(15),class), hostname, cmd FROM master..syslocks l, master..spt_...
mysql_select_db($dbname, $dbid); ?> ``` 下一步,让我们来看 multipage.php 文件的内容。这个文件用于实现分页功能,使用 PHP 语言来查询数据库中的记录数量,并将其分页显示。我们使用 mysql_query() 函数查询...
CRS(Cluster Ready Services)是Oracle RAC(Real Application Clusters)架构中的一项关键组件,负责管理集群中的节点和资源。通过使用$ps –df |grep d.bin命令,我们可以检查CRS进程的状态,确保crsd.bin、ocssd...
选项D(源数据库和复制数据库的DBID匹配)不正确,因为DBID在复制过程中不需要匹配;选项E(为目标数据库创建SPFILE)也不正确,因为复制数据库通常使用源数据库的SPFILE或PFILE。 第二个问题涉及在多租户容器...
在实际运维过程中,数据的完整性和安全性至关重要。当遇到意外情况导致数据丢失或损坏时,有效的恢复策略就显得尤为关键。本文将详细介绍SQL Server数据库中的两种主要恢复方式——正常的备份恢复方式以及仅有mdf...
在软件开发过程中,配置文件的管理和操作是一项常见的需求。其中,`.ini` 文件因其简单直观的特点而被广泛采用。本文将基于提供的代码示例,详细介绍如何在C#中实现 `.ini` 文件的读取与写入操作。 #### INI 文件...
大批量数据修改可通过将数据从主数据库 中导出来完成,然后再把这些数据存回到DBID数据库中。一旦修改完成,文件可重新导 入到主数据库中。 DBID生成一个可以导入到Ovation数据库中的文本文件。 2-2. 数据的导入功能...
C# 中读取所有数据库名和相应的表名 在 C# 中,读取所有数据库名和相应的表名是非常有用的功能,特别是在数据库管理和开发中。下面是相关的知识点: 1. 使用 ADO.NET 连接数据库 在 C# 中,使用 ADO.NET 连接...