您好,登錄后才能下訂單哦!
數據庫數據文件和控制文件恢復
一次數據庫數據文件和控制文件丟失或未創建恢復數據庫啟動方法
該文檔適用數據恢復:
數據庫安裝的時候丟失控制文件和數據文件
或者數據庫故障的數據、控制文件丟失
或者數據庫的本來數據、控制文件丟失有備份文件,用備份文件恢復
本文的環境變量
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文件SQL>@/oo/PC_CORE01.sql
br/>SQL>@/oo/PC_CORE01.sql
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。