有朋友求助于我,新安裝的oracle11g數(shù)據(jù)庫(kù),使用PLSQL Developer工具連接報(bào)錯(cuò),錯(cuò)誤代碼:ORA-01219,數(shù)據(jù)庫(kù)版本號(hào)11.2.0.1.0,操作系統(tǒng)Windows Server 2012,問(wèn)我不用重裝是否可以解決?初步判斷是數(shù)據(jù)庫(kù)啟動(dòng)異常,因?yàn)槭莾?nèi)網(wǎng)環(huán)境,不能遠(yuǎn)程,只能指導(dǎo)他一步步操作。
1.首先讓他登錄到服務(wù)器,重啟數(shù)據(jù)庫(kù):
SQL> shutdown immediate
SQL> startup
執(zhí)行startup啟動(dòng)指令后,果然出現(xiàn)錯(cuò)誤信息,顯示為datafile 3文件異常。這里的datafile 3對(duì)應(yīng)的是undo表空間,在打開(kāi)數(shù)據(jù)庫(kù)時(shí),需要用到undo block 208來(lái)回滾沒(méi)有提交的事務(wù),但是block 208這個(gè)塊有問(wèn)題,提示需要恢復(fù)。
2.執(zhí)行以下命令,進(jìn)行數(shù)據(jù)文件恢復(fù):
SQL> recover datafile 3;
3.結(jié)果提示上面的錯(cuò)誤,說(shuō)明datafile 3已經(jīng)損壞,將其下線:
SQL> alter database datafile 3 offline drop;
4.既然數(shù)據(jù)庫(kù)已經(jīng)是open的狀態(tài),那么就可以創(chuàng)建新的undo表空間:
SQL> create undo tablespace UNDOTBS datafile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS.dbf' size 500m autoextend off;
5.指定UNDOTBS表空間為默認(rèn)undo表空間:
SQL> alter system set undo_tablespace='UNDOTBS' scope=both;
6.確保所有UNDOTBS1的status都已變成offline:
SQL> select SEGMENT_NAME ,STATUS ,TABLESPACE_NAME from dba_rollback_segs;
7.當(dāng)UNDOTBS1都為OFFLINE狀態(tài)后,刪除UNDOTBS1:
SQL> drop tablespace UNDOTBS1 including contents and datafiles;
8.重啟數(shù)據(jù)庫(kù)驗(yàn)證結(jié)果,問(wèn)題已解決:
注意:
- 對(duì)于非歸檔模式下只能使用以下指令對(duì)數(shù)據(jù)文件置為離線,否則會(huì)提示錯(cuò)誤:
SQL> alter database datafile 3 offline drop;
- 而對(duì)于歸檔模式,offline和offline drop沒(méi)有什么區(qū)別