數據庫數據文件和控制文件恢復

數據庫數據文件和控制文件恢復
一次數據庫數據文件和控制文件丟失或未創建恢復數據庫啓動方法
該文檔適用數據恢復:
數據庫安裝的時候丟失控制文件和數據文件
或者數據庫故障的數據、控制文件丟失
或者數據庫的本來數據、控制文件丟失有備份文件,用備份文件恢復
本文的環境變量
ORACLE_BASE=/oo/oracle
ORACLE_HOME=/oo/oracle/11g

1.數據庫啓動報錯
數據庫啓動時報錯:

報錯1:
SQL> startup
ORA-01261: Parameter db_recovery_file_dest destination string cannot be translated
ORA-01262: Stat failed on a file destination directory
Linux-x86_64 Error: 2: No such file or directory
報錯2:
通過手動制定啓動數據庫init.ora文件
SQL> startup mount pfile='/oo/oracle/11g/dbs/init.ora'
ORA-09925: Unable to create audit trail file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 9925

根據init.ora文件中的信息進行創建目錄,並給權限
將init.ora文件中ORACLE_BASE換成環境變量中的絕對路徑
路徑:/oo/oracle/11g/dbs
數據庫數據文件和控制文件恢復
解決方案:
把init.ora中的目錄都創建並且添加權限
mkdir -p /oo/oracle/flash_recovery_area
mkdir -p /oo/oracle/admin/orcl/adump
chmod 755 /oo/oracle/flash_recovery_area
chmod 755 /oo/oracle/admin/orcl/adump
chown oracle:oinstall /oo/oracle/admin/orcl/adump
chown oracle:oinstall /oo/oracle/flash_recovery_area/
注:這兩個報錯信息都是目錄文件不存在
2.手動啓動數據庫
創建目錄並給權限後通過手動制定啓動數據庫init.ora文件
SQL> startup mount pfile='/oo/oracle/11g/dbs/init.ora'
ORACLE instance started.
Total System Global Area 1068937216 bytes
Fixed Size 2220200 bytes
Variable Size 616566616 bytes
Database Buffers 444596224 bytes
Redo Buffers 5554176 bytes
ORA-00205: error in identifying control file, check alert log for more info
/oo/oracle/11g/dbs

SQL> create pfile='/oo/oracle/11g/dbs/initorcl.ora' from spfile;
File created.
SQL> create spfile from pfile='/oo/oracle/11g/dbs/initorcl.ora';
File created.

使用瞭如上方法創建spfile文件但是啓動還是報錯,錯誤原因就是這個目錄下面沒有如下這些文件導致的報錯,並且這些文件都沒有是個空的目錄。
數據庫數據文件和控制文件恢復
如果數據庫沒有備份,可以去其他正常的oracle數據庫中找兩個控制文件
具體控制文件放在的位置可以查看系統日誌文件alert_orcl.log
路徑:/oo/oracle/diag/rdbms/orcl/orcl/trace
數據庫數據文件和控制文件恢復
找兩個控制文件放到該目錄下面/oo/oracle/11g/dbs
然後再次創建並重啓數據庫
create spfile from pfile='/oo/oracle/11g/dbs/init.ora';
startup mount pfile='/oo/oracle/11g/dbs/initorcl.ora'
注:每次再SQL中startup 後,再次啓動前要先停shutdown

3.控制文件恢復後
有控制文件後再次啓動數據庫時報錯信息變爲系統數據文件system01.db找不到
報錯3:
SQL> startup
ORACLE instance started.
Total System Global Area 1068937216 bytes
Fixed Size 2220200 bytes
Variable Size 616566616 bytes
Database Buffers 444596224 bytes
Redo Buffers 5554176 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
ORA-01110: data file 1: '/oracle/oracle/oradata/orcl/system01.dbf'
去到目錄下面查看時確實沒有system01.dbf該文件並且這些文件都沒有是個空的目錄
數據庫數據文件和控制文件恢復
沒有日誌文件和數據庫文件使用recover恢復時一定會報如下錯的。
上面的文件是從其他oracle數據庫服務器複製的
報錯4:
SQL> startup
ORACLE instance started.
Total System Global Area 1068937216 bytes
Fixed Size 2220200 bytes
Variable Size 616566616 bytes
Database Buffers 444596224 bytes
Redo Buffers 5554176 bytes
Database mounted.
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: '/oracle/oracle/oradata/orcl/system01.dbf'

alter database datafile '/oracle/oracle/oradata/orcl/system01.dbf' offline drop;
報錯5:
ORA-01147: SYSTEM tablespace file 1 is offline
ORA-01110: data file 1: '/oracle/oracle/oradata/orcl/system01.dbf'
住:該報錯信息就是上面的命令導致的在重新online就可以了
alter database datafile '/oracle/oracle/oradata/orcl/system01.dbf' online ;
然後使用recover命令進行恢復
recover datafile '/oracle/oracle/oradata/orcl/system01.dbf'; --恢復數據庫文件
recover tablespace system; --恢復表空間
recover database; --恢復數據庫
操作:
SQL>recover datafile '/oracle/oracle/oradata/orcl/system01.dbf';
SQL> ALTER DATABASE OPEN;
ALTER DATABASE OPEN
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 5 - see DBWR trace file
ORA-01110: data file 5: '/oracle/oracle/oradata/orcl/test_data01.dbf'
因爲是從其他機器上面複製的dbf數據文件和redo日誌沒有複製完全,將報錯的這個文件複製進去後再次使用該命令後,數據庫啓動了
報錯的原因是複製別的數據庫的文件時沒有複製完全,表中有數據所以複製的數據庫服務器中的數據文件需要都複製過去,建議複製初始化的數據庫服務器中的文件。
SQL> ALTER DATABASE OPEN;

Database altered.

SQL> select STATUS from v$instance;

STATUS
------------
OPEN

SQL> select from all_tables;
select
from all_tables
*
ERROR at line 1:
ORA-01775: looping chain of synonyms
但是使用簡單查詢時報錯了
重啓一下數據庫就可以了shutdown startup 再次啓動後就和正常的一樣了

oracle導入sql文件br/>SQL>@/oo/PC_CORE01.sql
導入sql語句

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章