自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Oracle數(shù)據(jù)庫(kù)中各種類型的文件損壞與修復(fù)過(guò)程詳解

數(shù)據(jù)庫(kù) Oracle
本文我們介紹了10中Oracle文件的損壞及恢復(fù)的過(guò)程,幾乎涵蓋了Oracle數(shù)據(jù)庫(kù)中所有類型文件的損壞與恢復(fù)的方法,希望能夠?qū)δ兴鶐椭?/div>

Oracle數(shù)據(jù)庫(kù)的文件有哪些種類呢?這些文件在什么情況下容易被損壞呢?損壞以后又該怎么樣去修復(fù)呢?本文就介紹了這些內(nèi)容,包括了10中Oracle文件的損壞與修復(fù)的過(guò)程,這10種文件幾乎涵蓋了Oracle數(shù)據(jù)庫(kù)中所有類型的文件,接下來(lái)就讓我們一起來(lái)了解一下這10種文件的損壞與修復(fù)的過(guò)程吧。

一、數(shù)據(jù)庫(kù)服務(wù)器基本情況

OS:RHEL 3

CPU:4個(gè)Intel(R) Xeon(TM) MP CPU 2.70GHz

Mem:8G

Swap:16G

Disk:120G

Oracle Database 10g Enterprise Edition Release 10.1.0.3.0

二、備份方式

數(shù)據(jù)庫(kù)以archive模式運(yùn)行,RMAN多級(jí)增量備份。策略如下:

設(shè)置控制文件自動(dòng)備份。

每三個(gè)月做一個(gè)數(shù)據(jù)庫(kù)的全備份(包括所有得數(shù)據(jù)庫(kù)和只讀表空間),并備份歸檔日志。

每一個(gè)月做一次零級(jí)備份(不包含只讀表空間),并備份歸檔日志。

每周做一次一級(jí)備份,并備份歸檔日志。

每天做一次二級(jí)備份,并備份歸檔日志。

三、恢復(fù)案例

所有恢復(fù)的前提:已經(jīng)做過(guò)數(shù)據(jù)庫(kù)全備份(包括歸檔日志),控制文件和spfile自動(dòng)備份。

1.損壞一個(gè)數(shù)據(jù)文件

(1)故障模擬

刪除數(shù)據(jù)文件:rm /u02/oradata/dbnms/users01.dbf

關(guān)閉數(shù)據(jù)庫(kù):shutdown immediate;

 

  1. ORA-01116: error in opening database file 4   
  2.  
  3. ORA-01110: data file 4: '/u02/oradata/dbnms/users01.dbf'   
  4.  
  5. ORA-27041: unable to open file   
  6.  
  7. Linux Error: 2: No such file or directory   
  8.  
  9. Additional information: 3  

 

強(qiáng)行關(guān)閉:sutdown abort;

啟動(dòng)數(shù)據(jù)庫(kù):startup;

 

  1. ORA-01157: cannot identify/lock data file 4 - see DBWR trace file   
  2.  
  3. ORA-01110: data file 4: '/u02/oradata/dbnms/users01.dbf'  

 

(2)恢復(fù)步驟

 

  1. rman target sys@dbnms catalog rmanuser@cata   
  2.  
  3. run{   
  4.  
  5. allocate channel c1 type disk;   
  6.  
  7. restore datafile 4;   
  8.  
  9. recover datafile 4;   
  10.  
  11. sql 'alter database datafile 4 online';   
  12.  
  13. sql 'alter database open';   
  14.  
  15. release channel c1;   
  16.  
  17. }   
  18.  
  19.  
  20. sqlplus sys as sysdba   
  21.  
  22. select instance_name,status from v$instance;   
  23.  
  24. INSTANCE_NAME STATUS   
  25.  
  26. ---------------- ------------   
  27.  
  28. dbnms OPEN  

 

恢復(fù)成功。

2.損壞全部數(shù)據(jù)文件

(1)故障模擬

刪除數(shù)據(jù)文件:rm /u02/oradata/dbnms/*.dbf

強(qiáng)行關(guān)閉:sutdown abort;

啟動(dòng)數(shù)據(jù)庫(kù):startup;

 

  1. ORA-01157: cannot identify/lock data file 1 - see DBWR trace file   
  2.  
  3. ORA-01110: data file 1: '/u02/oradata/dbnms/system01.dbf'  

 

(2)恢復(fù)步驟

 

  1. rman target sys@dbnms catalog rmanuser@cata   
  2.  
  3. run{   
  4.  
  5. allocate channel c1 type disk;   
  6.  
  7. restore database;   
  8.  
  9. recover database;   
  10.  
  11. sql 'alter database open';   
  12.  
  13. release channel c1;   
  14.  
  15. }   
  16.  
  17. sqlplus sys as sysdba   
  18.  
  19. select instance_name,status from v$instance;   
  20.  
  21. INSTANCE_NAME STATUS   
  22.  
  23. ---------------- ------------   
  24.  
  25. dbnms OPEN 

 

恢復(fù)臨時(shí)文件:

 

  1. alter database tempfile '/u02/oradata/dbnms/temp01.dbf' drop;   
  2.  
  3. alter tablespace temp add tempfile '/u02/oradata/dbnms/temp01.dbf' size 50M autoextend on next 5M maxsize unlimited;  

 

恢復(fù)成功。

3.損壞非當(dāng)前聯(lián)機(jī)日志成員

(1)故障模擬

刪除日志文件:rm /u02/oradata/dbnms/redo01.log

關(guān)閉數(shù)據(jù)庫(kù):shutdown immediate;

啟動(dòng)數(shù)據(jù)庫(kù):startup;

 

  1. select * from v$logfile;   
  2.  
  3. GROUP# STATUS TYPE MEMBER IS_   
  4.  
  5. ---------- ------- ------- ------------------------------ ---   
  6.  
  7. 3 ONLINE /u02/oradata/dbnms/redo03.log NO   
  8.  
  9. 2 STALE ONLINE /u02/oradata/dbnms/redo02.log NO   
  10.  
  11. 1 INVALID ONLINE /u02/oradata/dbnms/redo01.log NO   
  12.  
  13. 1 STALE ONLINE /u02/oradata/dbnms/redo11.log NO   
  14.  
  15. 1 STALE ONLINE /u02/oradata/dbnms/redo21.log NO   
  16.  
  17. 2 STALE ONLINE /u02/oradata/dbnms/redo12.log NO   
  18.  
  19. 3 ONLINE /u02/oradata/dbnms/redo13.log NO   
  20.  
  21. 2 STALE ONLINE /u02/oradata/dbnms/redo22.log NO   
  22.  
  23. 3 ONLINE /u02/oradata/dbnms/redo23.log NO   
  24.  
  25. 4 ONLINE /u02/oradata/dbnms/redo31.log NO   
  26.  
  27. 4 ONLINE /u02/oradata/dbnms/redo32.log NO   
  28.  
  29. GROUP# STATUS TYPE MEMBER IS_   
  30.  
  31. ---------- ------- ------- ------------------------------ ---   
  32.  
  33. 4 ONLINE /u02/oradata/dbnms/redo33.log NO 

 

(2)恢復(fù)步驟

 

  1. alter database drop logfile member '/u02/oradata/dbnms/redo01.log';   
  2.  
  3. alter database add logfile member '/u02/oradata/dbnms/redo01.log' to group 1;  

 

恢復(fù)成功.

4.損壞非當(dāng)前聯(lián)機(jī)日志組

(1)故障模擬

刪除日志文件組1的所有文件:

 

  1. rm /u02/oradata/dbnms/redo01.log   
  2.  
  3. rm /u02/oradata/dbnms/redo11.log   
  4.  
  5. rm /u02/oradata/dbnms/redo21.log  

 

關(guān)閉數(shù)據(jù)庫(kù):shutdown immediate;

啟動(dòng)數(shù)據(jù)庫(kù):startup;

 

  1. Database mounted.   
  2.  
  3. ORA-00313: open failed for members of log group 1 of thread 1   
  4.  
  5. ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo11.log'   
  6.  
  7. ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo21.log'   
  8.  
  9. ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo01.log'  

 

(2)恢復(fù)步驟

 

  1. alter database clear logfile group 1;  

 

如果該日志組還沒(méi)有歸檔,則用:

 

  1. alter database clear unarchived logfile group 1;  

 

打開(kāi)數(shù)據(jù)庫(kù):

 

  1. alter database open;  

 

恢復(fù)成功。

#p#

5.損壞全部聯(lián)機(jī)日志

(1)故障模擬

刪除日志文件:rm /u02/oradata/dbnms/*.log

關(guān)閉數(shù)據(jù)庫(kù):shutdown immediate;

啟動(dòng)數(shù)據(jù)庫(kù):startup;

 

  1. Database mounted.   
  2.  
  3. ORA-00313: open failed for members of log group 1 of thread 1   
  4.  
  5. ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo11.log'   
  6.  
  7. ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo21.log'   
  8.  
  9. ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo01.log'  

 

(2)恢復(fù)步驟

 

  1. shutdown immediate;   
  2.  
  3. create pfile from spfile;   
  4.  
  5. cd $ORACLE_HOME/dbs   
  6.  
  7. vi initdbnms.ora  

 

加一個(gè)參數(shù):_allow_resetlogs_corruption=true

 

  1. create spfile from pfile;   
  2.  
  3. startup;   
  4.  
  5. Database mounted.   
  6.  
  7. ORA-00313: open failed for members of log group 1 of thread 1   
  8.  
  9. ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo11.log'   
  10.  
  11. ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo21.log'   
  12.  
  13. ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo01.log'   
  14.  
  15. recover database until cancel;   
  16.  
  17. alter database open resetlogs;  

 

同步catalog:

 

  1. rman target sys@dbnms catalog rmanuser@cata   
  2.  
  3. reset database;   
  4.  
  5. new incarnation of database registered in recovery catalog   
  6.  
  7. starting full resync of recovery catalog   
  8.  
  9. full resync complete  

 

做一個(gè)full備份:

 

  1. /home/oracle/dbbat/backup_full.sh 

 

恢復(fù)成功

6.損壞一個(gè)控制文件

(1)故障模擬

刪除控制文件:rm /u02/oradata/dbnms/control01.ctl

關(guān)閉數(shù)據(jù)庫(kù):shutdown immediate;

 

  1. ORA-00210: cannot open the specified controlfile   
  2.  
  3. ORA-00202: controlfile: '/u02/oradata/dbnms/control01.ctl'   
  4.  
  5. ORA-27041: unable to open file   
  6.  
  7. Linux Error: 2: No such file or directory   
  8.  
  9. Additional information: 3  

 

(2)恢復(fù)步驟

拷貝一個(gè)好的控制文件:

 

  1. cp control02.ctl control01.ctl   
  2.  
  3. shutdown immediate;   
  4.  
  5. startup;   
  6.  
  7. Database mounted.   
  8.  
  9. ORA-01122: database file 1 failed verification check   
  10.  
  11. ORA-01110: data file 1: '/u02/oradata/dbnms/system01.dbf'   
  12.  
  13. ORA-01207: file is more recent than controlfile - old controlfile   
  14.  
  15. rman target sys@dbnms catalog rmanuser@cata   
  16.  
  17. run{   
  18.  
  19. allocate channel c1 type disk;   
  20.  
  21. restore database;   
  22.  
  23. recover database;   
  24.  
  25. sql 'alter database open';   
  26.  
  27. release channel c1;   
  28.  
  29. }   
  30.  
  31. RMAN-00571: ===========================================================   
  32.  
  33. RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============   
  34.  
  35. RMAN-00571: ===========================================================   
  36.  
  37. RMAN-03009: failure of sql command on default channel at 09/08/2005 17:29:04   
  38.  
  39. RMAN-11003: failure during parse/execution of SQL statement: alter database open   
  40.  
  41. ORA-00322: log 3 of thread 1 is not current copy   
  42.  
  43. ORA-00312: online log 3 thread 1: '/u02/oradata/dbnms/redo03.log'   
  44.  
  45. ORA-00312: online log 3 thread 1: '/u02/oradata/dbnms/redo13.log'   
  46.  
  47. ORA-00312: online log 3 thread 1: '/u02/oradata/dbnms/redo23.log'   
  48.  
  49. alter database clear unarchived logfile group 3;   
  50.  
  51. alter database open;  

 

恢復(fù)成功。

7.損壞全部控制文件

(1)故障模擬

刪除控制文件:rm /u02/oradata/dbnms/control01.ctl

關(guān)閉數(shù)據(jù)庫(kù):shutdown immediate;

 

  1. ORA-00210: cannot open the specified controlfile   
  2.  
  3. ORA-00202: controlfile: '/u02/oradata/dbnms/control01.ctl'   
  4.  
  5. ORA-27041: unable to open file   
  6.  
  7. Linux Error: 2: No such file or directory   
  8.  
  9. Additional information: 3  

 

(2)恢復(fù)步驟

 

  1. shutdown abort;   
  2.  
  3. startup nomount;   
  4.  
  5. rman target sys catalog rmanuser@cata   
  6.  
  7. run{   
  8.  
  9. allocate channel c1 type disk;   
  10.  
  11. restore controlfile;   
  12.  
  13. restore database;   
  14.  
  15. sql 'alter database mount';   
  16.  
  17. recover database;   
  18.  
  19. sql 'alter database open resetlogs';   
  20.  
  21. release channel c1;   
  22.  
  23. }   
  24.  
  25. RMAN-00571: ===========================================================   
  26.  
  27. RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============   
  28.  
  29. RMAN-00571: ===========================================================   
  30.  
  31. RMAN-03002: failure of recover command at 09/08/2005 17:43:31   
  32.  
  33. RMAN-06054: media recovery requesting unknown log: thread 1 seq 9 lowscn 670233   
  34.  
  35. alter database open resetlogs;  

 

做一個(gè)full備份:

 

  1. /home/oracle/dbbat/backup_full.sh 

 

恢復(fù)成功

8.損壞臨時(shí)數(shù)據(jù)文件

(1)故障模擬

刪除臨時(shí)數(shù)據(jù)文件:rm /u02/oradata/dbnms/temp01.dbf

關(guān)閉數(shù)據(jù)庫(kù):shutdown immediate;

啟動(dòng)數(shù)據(jù)庫(kù):startup;

(2)恢復(fù)步驟

 

  1. alter database tempfile '/u02/oradata/dbnms/temp01.dbf' drop;   
  2.  
  3. ERROR at line 1:   
  4.  
  5. ORA-01516: nonexistent log file, datafile, or tempfile   
  6.  
  7. "/u02/oradata/dbnms/temp01.dbf"   
  8.  
  9. alter tablespace temp add tempfile '/u02/oradata/dbnms/temp01.dbf' size 50M autoextend on next 5M maxsize unlimited;  

 

恢復(fù)成功

9.損壞spfile參數(shù)文件

(1)故障模擬

刪除spfile文件:rm $ORACLE_HOME/dbs/spfiledbnms.ora

關(guān)閉數(shù)據(jù)庫(kù):shutdown immediate;

啟動(dòng)數(shù)據(jù)庫(kù):startup;

(2)恢復(fù)步驟

 

  1. startup nomount;   
  2.  
  3. rman target sys catalog rmanuser@cata   
  4.  
  5. restore spfile;   
  6.  
  7. shutdown immediate;   
  8.  
  9. startup;  

 

恢復(fù)成功

10.損壞全部文件(包括全部數(shù)據(jù)文件、控制文件、臨時(shí)數(shù)據(jù)文件、聯(lián)機(jī)日志文件)

(1)故障模擬

刪除全部文件:rm /u02/oradata/dbnms/*

關(guān)閉數(shù)據(jù)庫(kù):shutdown immediate;

 

  1. ORA-03113: end-of-file on communication channel 

 

(2)恢復(fù)步驟

 

  1. sqlplus sys as sysdba   
  2.  
  3. startup nomount;   
  4.  
  5. rman target sys catalog rmanuser@cata  

 

還原控制文件:restore controlfile;

還原數(shù)據(jù)庫(kù):restore database;

mount 數(shù)據(jù)庫(kù):alter database mount;

恢復(fù)數(shù)據(jù)庫(kù):recover database;

 

  1. RMAN-00571: ===========================================================   
  2.  
  3. RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============   
  4.  
  5. RMAN-00571: ===========================================================   
  6.  
  7. RMAN-03002: failure of recover command at 09/09/2005 10:33:13   
  8.  
  9. RMAN-06054: media recovery requesting unknown log: thread 1 seq 19 lowscn 718284  

 

用resetlogs方式打開(kāi)數(shù)據(jù)庫(kù):alter database open resetlogs;

 

  1. database opened   
  2.  
  3. new incarnation of database registered in recovery catalog   
  4.  
  5. starting full resync of recovery catalog   
  6.  
  7. full resync complete  

 

重建臨時(shí)文件:

 

  1. sqlplus sys as sysdba   
  2.  
  3. alter database tempfile '/u02/oradata/dbnms/temp01.dbf' drop;   
  4.  
  5. ERROR at line 1:   
  6.  
  7. ORA-01516: nonexistent log file, datafile, or tempfile   
  8.  
  9. "/u02/oradata/dbnms/temp01.dbf"   
  10.  
  11. alter tablespace temp add tempfile '/u02/oradata/dbnms/temp01.dbf' size 50M autoextend on next 5M maxsize unlimited;  

 

執(zhí)行一次全庫(kù)備份:/home/oracle/dbbat/backup_full.sh,恢復(fù)成功。

關(guān)于Oracle數(shù)據(jù)庫(kù)損壞文件的修復(fù)方法就就介紹到這里了,希望本次的介紹能夠帶給您一些收獲吧!

 

【編輯推薦】

  1. 淺析Oracle 10g isqlplus使用DBA賬戶的方法
  2. Oracle數(shù)據(jù)庫(kù)中如何檢查索引碎片并重建索引
  3. 數(shù)據(jù)庫(kù)優(yōu)化技術(shù)之Oracle數(shù)據(jù)庫(kù)動(dòng)態(tài)綁定變量
  4. PL/SQL Developer導(dǎo)入導(dǎo)出數(shù)據(jù)庫(kù)方法及說(shuō)明
  5. 關(guān)于在極高負(fù)荷下Oracle redolog搭配的一些建議
責(zé)任編輯:趙鵬 來(lái)源: ChinaUnix博客
相關(guān)推薦

2010-02-04 11:32:01

數(shù)據(jù)交換技術(shù)

2009-12-24 17:19:13

WPF觸發(fā)器

2024-03-08 12:04:22

PythonPillow驗(yàn)證碼

2010-02-25 10:29:17

WCF Transac

2010-02-26 14:58:14

WCF單例模式

2019-06-12 08:57:43

Oracle數(shù)據(jù)庫(kù)恢復(fù)

2023-10-27 07:03:22

字符串String類型

2010-01-19 16:56:46

交換機(jī)光纖端口

2021-04-20 08:32:56

蘋果AppStore違規(guī)

2010-04-12 16:35:15

Oracle數(shù)據(jù)庫(kù)

2021-10-20 06:02:41

網(wǎng)絡(luò)釣魚(yú)漏洞安全工具

2011-07-20 16:28:54

Oracle數(shù)據(jù)庫(kù)shared pool

2010-01-18 11:13:59

光纖交換機(jī)接口

2010-04-02 17:11:45

Oracle數(shù)據(jù)庫(kù)

2009-02-09 12:52:32

文件加密Oracle數(shù)據(jù)庫(kù)

2011-09-02 14:09:47

OracleDML命令

2015-12-10 10:13:22

2019-11-29 07:37:44

Oracle數(shù)據(jù)庫(kù)索引

2010-01-14 12:50:26

光纖以太網(wǎng)交換機(jī)

2023-03-05 16:25:38

NoSQL數(shù)據(jù)庫(kù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)