1. 程式人生 > >通過bbed解決資料檔案不能online的問題

通過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 '資料檔案絕對路徑‘;