1.oracle11g rac一个数据文件建错地方了,应该建在ASM上边,但是建在本地的文件系统上了,导致节点2一直报错。
2.数据库管理员对数据文件进行了offline drop处理,节点2不报错了,但是文件系统上的数据文件一直删除不掉。
3.现在数据文件是recovery状态,对数据文件进行recover时,报缺少归档日志,但是因为数据库没开归档,所以没有归档日志。
4.分析这个问题应该是数据文件的scn号不一致导致。
5.最后决定用bbed来更改数据文件的scn号,把scn号改一致,然后再online数据文件。
因为数据库使用的是oracle11g,默认没有安装bbed,需要先安装bbed。
在ORACLE 11G下安装BBED,需要从ORACLE 10G中复制三个包
bbedus.msb
sbbdpt.o
ssbbded.o
并将三个文件移到11g $ORACLE_HOME/rdbms/lib/ 目录下
$ mv sbbdpt.o $ORACLE_HOME/rdbms/lib/
$ mv ssbbded.o $ORACLE_HOME/rdbms/lib/
$ mv bbedus.msb $ORACLE_HOME/rdbms/mesg/
$ cd $ORACLE_HOME/rdbms/lib
$ make -f $ORACLE_HOME/rdbms/lib/ins_rdbms.mk BBED=$ORACLE_HOME/bin/bbed $ORACLE_HOME/bin/bbed
6.配置bbed
select file#||' '||name||' '||bytes from v$datafile ;
vi /home/oracle/datafile.lst
1 /u01/app/oracle/product/10.2.0/db_1/oradata/ora10g/system01.dbf 534773760
2 /u01/app/oracle/product/10.2.0/db_1/oradata/ora10g/undotbs01.dbf 414187520
3 /u01/app/oracle/product/10.2.0/db_1/oradata/ora10g/sysaux01.dbf 272629760
4 /u01/app/oracle/product/10.2.0/db_1/oradata/ora10g/users01.dbf 55050240
5 /u01/app/oracle/product/10.2.0/db_1/oradata/ora10g/example01.dbf 104857600
6 /u01/app/oracle/product/10.2.0/db_1/oradata/ora10g/users_test.dbf 209715200
7 /u01/app/oracle/product/10.2.0/db_1/oradata/ora10g/test.dbf 104857600
vi /home/oracle/bbed.par
blocksize=8192
listfile=/home/oracle/datafile.lst
mode=edit
如果文件在asm上边,需要用rman把文件从asm拷贝到本地。然后在编译bbed参数文件。
bbed parfile=/home/oracle/bbed.par 登录bbed
select FILE_ID from dba_data_files 通过视图查找文件编号
根据文件编号,查询offline数据文件的scn号
select to_char(last_change#),to_char(checkpoint_change#) from v$datafile where file#=7;
TO_CHAR(LAST_CHANGE#) TO_CHAR(CHECKPOINT_CHANGE#)
---------------------------------------- ----------------------------------------
2067377 1F8BB1 current: [b18b1f00] 2067338
select to_char1F8BB1 from v$datafile_header where file#=7;
TO_CHAR(CHECKPOINT_CHANGE#)
----------------------------------------
2067338 1F8B8A curreint: 8a8b1f00
发现文件的scn号并不一致
7.登录bbed,开始修改数据文件的scn号
bbed parfile=/home/oracle/bbed.par
在bbed输入
p kcvfhckp 确认484存放的是scn号
d /v dba 7,1 offset 484
set mode edit
将小的scn号,改成大的scn号
modify /x b18b1f00 dba 7,1 offset 484
BBED> sum
BBED> sum apply
BBED> d /v dba 7,1 offset 484 查看scn是否改成功了
BBED> exit
如果修改是asm中的数据文件,需要通过asmcmd把数据文件考回到asm里。
8.最后online数据文件
SQL> recover datafile 7;
SQL> alter database datafile 7 online;
9.因为数据文件建错了地方,需要把数据文件删除
alter tablespace 表空间名字 drop datafile '数据文件绝对路径‘;