溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

數(shù)據(jù)庫(kù)數(shù)據(jù)文件和控制文件恢復(fù)

發(fā)布時(shí)間:2020-07-25 21:27:30 來(lái)源:網(wǎng)絡(luò) 閱讀:264 作者:qq1282886418 欄目:系統(tǒng)運(yùn)維

數(shù)據(jù)庫(kù)數(shù)據(jù)文件和控制文件恢復(fù)
一次數(shù)據(jù)庫(kù)數(shù)據(jù)文件和控制文件丟失或未創(chuàng)建恢復(fù)數(shù)據(jù)庫(kù)啟動(dòng)方法
該文檔適用數(shù)據(jù)恢復(fù):
數(shù)據(jù)庫(kù)安裝的時(shí)候丟失控制文件和數(shù)據(jù)文件
或者數(shù)據(jù)庫(kù)故障的數(shù)據(jù)、控制文件丟失
或者數(shù)據(jù)庫(kù)的本來(lái)數(shù)據(jù)、控制文件丟失有備份文件,用備份文件恢復(fù)
本文的環(huán)境變量
ORACLE_BASE=/oo/oracle
ORACLE_HOME=/oo/oracle/11g

1.數(shù)據(jù)庫(kù)啟動(dòng)報(bào)錯(cuò)
數(shù)據(jù)庫(kù)啟動(dòng)時(shí)報(bào)錯(cuò):

報(bào)錯(cuò)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
報(bào)錯(cuò)2:
通過(guò)手動(dòng)制定啟動(dòng)數(shù)據(jù)庫(kù)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

根據(jù)init.ora文件中的信息進(jìn)行創(chuàng)建目錄,并給權(quán)限
將init.ora文件中ORACLE_BASE換成環(huán)境變量中的絕對(duì)路徑
路徑:/oo/oracle/11g/dbs
數(shù)據(jù)庫(kù)數(shù)據(jù)文件和控制文件恢復(fù)
解決方案:
把init.ora中的目錄都創(chuàng)建并且添加權(quán)限
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/
注:這兩個(gè)報(bào)錯(cuò)信息都是目錄文件不存在
2.手動(dòng)啟動(dòng)數(shù)據(jù)庫(kù)
創(chuàng)建目錄并給權(quán)限后通過(guò)手動(dòng)制定啟動(dòng)數(shù)據(jù)庫(kù)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.

使用了如上方法創(chuàng)建spfile文件但是啟動(dòng)還是報(bào)錯(cuò),錯(cuò)誤原因就是這個(gè)目錄下面沒有如下這些文件導(dǎo)致的報(bào)錯(cuò),并且這些文件都沒有是個(gè)空的目錄。
數(shù)據(jù)庫(kù)數(shù)據(jù)文件和控制文件恢復(fù)
如果數(shù)據(jù)庫(kù)沒有備份,可以去其他正常的oracle數(shù)據(jù)庫(kù)中找兩個(gè)控制文件
具體控制文件放在的位置可以查看系統(tǒng)日志文件alert_orcl.log
路徑:/oo/oracle/diag/rdbms/orcl/orcl/trace
數(shù)據(jù)庫(kù)數(shù)據(jù)文件和控制文件恢復(fù)
找兩個(gè)控制文件放到該目錄下面/oo/oracle/11g/dbs
然后再次創(chuàng)建并重啟數(shù)據(jù)庫(kù)
create spfile from pfile='/oo/oracle/11g/dbs/init.ora';
startup mount pfile='/oo/oracle/11g/dbs/initorcl.ora'
注:每次再SQL中startup 后,再次啟動(dòng)前要先停shutdown

3.控制文件恢復(fù)后
有控制文件后再次啟動(dòng)數(shù)據(jù)庫(kù)時(shí)報(bào)錯(cuò)信息變?yōu)橄到y(tǒng)數(shù)據(jù)文件system01.db找不到
報(bào)錯(cuò)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'
去到目錄下面查看時(shí)確實(shí)沒有system01.dbf該文件并且這些文件都沒有是個(gè)空的目錄
數(shù)據(jù)庫(kù)數(shù)據(jù)文件和控制文件恢復(fù)
沒有日志文件和數(shù)據(jù)庫(kù)文件使用recover恢復(fù)時(shí)一定會(huì)報(bào)如下錯(cuò)的。
上面的文件是從其他oracle數(shù)據(jù)庫(kù)服務(wù)器復(fù)制的
報(bào)錯(cuò)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;
報(bào)錯(cuò)5:
ORA-01147: SYSTEM tablespace file 1 is offline
ORA-01110: data file 1: '/oracle/oracle/oradata/orcl/system01.dbf'
?。涸搱?bào)錯(cuò)信息就是上面的命令導(dǎo)致的在重新online就可以了
alter database datafile '/oracle/oracle/oradata/orcl/system01.dbf' online ;
然后使用recover命令進(jìn)行恢復(fù)
recover datafile '/oracle/oracle/oradata/orcl/system01.dbf'; --恢復(fù)數(shù)據(jù)庫(kù)文件
recover tablespace system; --恢復(fù)表空間
recover database; --恢復(fù)數(shù)據(jù)庫(kù)
操作:
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'
因?yàn)槭菑钠渌麢C(jī)器上面復(fù)制的dbf數(shù)據(jù)文件和redo日志沒有復(fù)制完全,將報(bào)錯(cuò)的這個(gè)文件復(fù)制進(jìn)去后再次使用該命令后,數(shù)據(jù)庫(kù)啟動(dòng)了
報(bào)錯(cuò)的原因是復(fù)制別的數(shù)據(jù)庫(kù)的文件時(shí)沒有復(fù)制完全,表中有數(shù)據(jù)所以復(fù)制的數(shù)據(jù)庫(kù)服務(wù)器中的數(shù)據(jù)文件需要都復(fù)制過(guò)去,建議復(fù)制初始化的數(shù)據(jù)庫(kù)服務(wù)器中的文件。
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
但是使用簡(jiǎn)單查詢時(shí)報(bào)錯(cuò)了
重啟一下數(shù)據(jù)庫(kù)就可以了shutdown startup 再次啟動(dòng)后就和正常的一樣了

oracle導(dǎo)入sql文件SQL>@/oo/PC_CORE01.sql
br/>SQL>@/oo/PC_CORE01.sql

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI