通過bbed解決資料檔案不能online的問題
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 '資料檔案絕對路徑‘;