startup nomount;RMAN> restore spfile from '/backup/ctl_XXXX';SQL> shutdow..."/>
溫馨提示×

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

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

oracle各種恢復(fù)場(chǎng)景列舉及演示

發(fā)布時(shí)間:2020-06-29 20:03:19 來(lái)源:網(wǎng)絡(luò) 閱讀:935 作者:朱wei 欄目:關(guān)系型數(shù)據(jù)庫(kù)

SPFILE文件損壞的恢復(fù)場(chǎng)景: 

場(chǎng)景

恢復(fù)操作

SPFILE文件損壞

有備份

SQL> startup nomount;

RMAN> restore spfile from '/backup/ctl_XXXX';

SQL> shutdown immediate;

Oracle instance shut down

SQL> startup;

無(wú)備份

手工創(chuàng)建pfile文件并生成spfile文件

一般只需幾個(gè)關(guān)鍵參數(shù)就能把庫(kù)拉起,但考慮到性能問(wèn)題,得恢復(fù)到丟失前的參數(shù)設(shè)置,可以從以下幾個(gè)地方找:

1.awr報(bào)告里面的spfile,在awr報(bào)告最后

2.alert log里面在庫(kù)啟動(dòng)時(shí)都會(huì)很很多初始參數(shù)輸出

 

控制文件恢復(fù)場(chǎng)景及演示:https://blog.51cto.com/wyzwl/1978252

場(chǎng)景

恢復(fù)方法

恢復(fù)條件

其中一個(gè)控制文件損壞

1.1 拷貝冗余的控制文件

1、具有多路冗余控制文件鏡像

2、其它冗余控制文件沒(méi)有損壞

1.2 修改control_files參數(shù)去除損壞文件

同上、但不推薦該方法進(jìn)行恢復(fù)

所有的控制文件損壞

有備份

2.1 通過(guò)rman備份控制文件進(jìn)行完全恢復(fù)

1、通過(guò)rman備份了控制文件

2、備份了控制文件之后有連續(xù)的歸檔和redo文件

2.2 通過(guò)rman備份控制文件進(jìn)行不完全恢復(fù)

1、通過(guò)rman備份了控制文件

2、備份了控制文件之后歸檔或redo文件丟失

2.3 通過(guò)trace備份控制文件進(jìn)行完全恢復(fù)

1、通過(guò)trace備份了控制文件

2、備份了控制文件之后有連續(xù)的歸檔和redo文件

2.4 通過(guò)trace備份控制文件進(jìn)行不完全恢復(fù)

1、通過(guò)trace備份了控制文件

2、備份了控制文件之后歸檔或redo文件丟失

無(wú)備份

2.5 通過(guò)手工重建控制文件進(jìn)行恢復(fù)(noresetlogs)

1、無(wú)有效的備份控制文件

2、redo文件無(wú)丟失和無(wú)損壞

2.6 通過(guò)手工重建控制文件進(jìn)行恢復(fù)(resetlogs)

1、無(wú)有效的備份控制文件

2、redo文件丟失或損壞

2.7 通過(guò)SNAPSHOT CONTROLFILE文件進(jìn)行恢復(fù)

此處為記錄一個(gè)恢復(fù)控制文件的方法(不常使用)

 

日志文件(redo log)恢復(fù)場(chǎng)景及演示(不考慮非歸檔模式):

場(chǎng)景

是否歸檔

恢復(fù)操作

STATUS=INACTIVE

日志信息無(wú)需寫(xiě)入數(shù)據(jù)文件

1.在線(xiàn)時(shí)損壞

2.正常關(guān)閉后損壞

ARC=YES

open和mount狀態(tài)都可以執(zhí)行,不會(huì)丟失數(shù)據(jù)

SQL>alter database clear logfile group 1;

ARC=NO

open和mount狀態(tài)都可以執(zhí)行,不會(huì)丟失數(shù)據(jù)

SQL>alter database clear unarchived logfile group 1;

STATUS=ACTIVE

日志信息需要寫(xiě)入數(shù)據(jù)文件

1.在線(xiàn)時(shí)損壞

2.不正常關(guān)閉后損壞

ARC=YES

1.實(shí)例在線(xiàn)時(shí)損壞,直接在線(xiàn)執(zhí)行,不丟數(shù)據(jù)(千萬(wàn)別關(guān)庫(kù))

SQL>alter database clear unarchived logfile group 1;

2.實(shí)例不正常關(guān)閉后損壞,丟數(shù)據(jù)

SQL>startup nomount;

SQL>alter system set "_allow_resetlogs_corruption"=ture scope=spfile;

SQL>shutdown immediate;

SQL>startup mount;

SQL>recover database until cancel;

SQL>alter database open resetlogs;

ARC=NO

1.實(shí)例在線(xiàn)時(shí)損壞,直接在線(xiàn)執(zhí)行,不丟數(shù)據(jù)

SQL>alter database clear unarchived logfile group 1;

2.實(shí)例不正常關(guān)閉后損壞,不丟數(shù)據(jù)

SQL>startup nomount;

SQL>alter system set "_allow_resetlogs_corruption"=ture scope=spfile;

SQL>shutdown immediate;

SQL>startup mount;

SQL>recover database until cancel;

SQL>alter database open resetlogs;

STATUS=CURRENT

日志信息無(wú)需寫(xiě)入數(shù)據(jù)文件

正常關(guān)閉后損壞

ARC=NO

實(shí)例正常關(guān)閉后損壞,不丟失數(shù)據(jù)

SQL>startup mount;

SQL>alter database clear unarchived logfile group 1;

日志信息需要寫(xiě)入數(shù)據(jù)文件

1.在線(xiàn)時(shí)損壞

2.不正常關(guān)閉后損壞

ARC=NO

1.實(shí)例在線(xiàn)時(shí)損壞,直接在線(xiàn)執(zhí)行,不丟數(shù)據(jù)(千萬(wàn)別關(guān)庫(kù))

SQL>alter system switch logfile;

SQL>alter database clear unarchived logfile group 1;

2.實(shí)例不正常關(guān)閉后損壞,會(huì)丟失數(shù)據(jù)

SQL>startup nomount;

SQL>alter system set "_allow_resetlogs_corruption"=ture scope=spfile;

SQL>shutdown immediate;

SQL>startup mount;

SQL>recover database until cancel;

SQL>alter database open resetlogs;

表空間和數(shù)據(jù)文件恢復(fù)場(chǎng)景及演示: 

場(chǎng)景

是否完全恢復(fù)

恢復(fù)操作

數(shù)據(jù)文件

系統(tǒng)表空間數(shù)據(jù)文件(system,sysaux,undo)

有完整備份(歸檔,rman)

SQL>startup mount;

SQL>alter database recover datafile <file_id>;

SQL>alter database open;

無(wú)完整備份(缺歸檔等)

RMAN不完全恢復(fù)

 1、基本時(shí)間恢復(fù)

  c:\set nls_date_format=yyyy-dd-mm hh34:mi:ss

  c:\rman target  sys/oracle@test nocatalog

  RMAN>run {

   startup force mount;

   set until time='2010-08-22 12:00:08';

   restore database;

   recover database;

   sql 'alter database open resetlogs;

   }

 2、基于SCN恢復(fù)

  RMAN>run {

   startup force mount;

   set until scn=123456;

   restore database;

   recover database;

   sql 'alter database open resetlogs';

   }

 3、基于日志序列號(hào)恢復(fù)

  RMAN>run {

   startup force mount;

   set until seqence=10;

   restore database;

   recover database;

   sql 'alter database open resetlogs';

   }

 4、基于備份控制文件恢復(fù)

  c:\set nls_date_format=yyyy-dd-mm hh34:mi:ss

  c:\rman target  sys/oracle@test nocatalog

  RMAN>startup force nomount;

  RMAN>set dbid=1113606269;

  RMAN>restore controlfile from autobackup maxseq 6;

  RMAN>alter database mount;

  RMAN>run {

   set until time='2010-08-22 12:00:08';

   restore database;

   recover database;

   sql 'alter database open resetlogs;

   }

普通表空間數(shù)據(jù)文件

有完整備份(歸檔,rman)

SQL>alter database datafile <datafile_name> offlie;

SQL>alter database recover datafile <datafile_name>;

SQL>alter tablespace datafile <datafile_name>  online;

無(wú)完整備份(缺歸檔等)

如果缺失歸檔:對(duì)庫(kù)進(jìn)行基于時(shí)間點(diǎn)不完整恢復(fù)

如果無(wú)備份:

alter database datafile ‘xxx’ offline drop;

或者重建控制文件,代價(jià)就是丟失這個(gè)數(shù)據(jù)文件里的數(shù)據(jù)

表空間

系統(tǒng)表空間

有完整備份(歸檔,rman)

SQL> shutdown immediate  --如果無(wú)法使用immediate關(guān)閉數(shù)據(jù)庫(kù),則使用shutdown abort

RMAN> run

{

  startup mount;

  restore tablespace system;

  recover tablespace system;

  alter database open;

}

無(wú)完整備份(缺歸檔等)

同系統(tǒng)表空間數(shù)據(jù)文件無(wú)完整備份恢復(fù)一樣,得進(jìn)行不完全恢復(fù):

1、基本時(shí)間恢復(fù)

2、基于SCN恢復(fù)

3、基于日志序列號(hào)恢復(fù)

4、基于備份控制文件恢復(fù)

普通表空間

有完整備份(歸檔,rman)

SQL>alter tablespace users offlie;

SQL>alter database recover tablespace <tablespace_name>;

SQL>alter tablespace users online;

無(wú)完整備份(缺歸檔等)

如果缺失歸檔:對(duì)庫(kù)進(jìn)行基于時(shí)間點(diǎn)不完整恢復(fù)

如果無(wú)備份:

alter database datafile ‘xxx’ offline drop;

全庫(kù)恢復(fù)

所有表空間

有完整備份(歸檔,rman)

RMAN>run {

   startup mount;

   restore database;

   recover database;

   sql 'alter database open resetlogs;

   }

無(wú)完整備份(缺歸檔等)

同系統(tǒng)表空間數(shù)據(jù)文件無(wú)完整備份恢復(fù)一樣,得進(jìn)行不完全恢復(fù):

1、基本時(shí)間恢復(fù)

2、基于SCN恢復(fù)

3、基于日志序列號(hào)恢復(fù)

4、基于備份控制文件恢復(fù)

各種誤刪表數(shù)據(jù)操作恢復(fù)場(chǎng)景:

場(chǎng)景

恢復(fù)操作

誤刪表數(shù)據(jù)恢復(fù)(delete)

閃回查詢(xún),閃回版本查詢(xún)

select * from emp as of timestamp to_timestamp('2004-04-04 09:30:00', 'yyyy-mm-dd hh:mi:ss');

若11g開(kāi)啟了閃回歸檔,可利用這個(gè)新特性恢復(fù)

12c的rman新特性可單獨(dú)恢復(fù)表

誤刪表數(shù)據(jù)恢復(fù)(truncate)

利用fy_recover_data離線(xiàn)數(shù)據(jù)文件恢復(fù)

誤刪表恢復(fù)(drop)

1.沒(méi)有相同名字

flashback table 原表名 to before drop [rename to 新表名];

flashback table "回收站中的表名" to before drop [rename to 新表名];

2.有相同的名字

用戶(hù)可能會(huì)經(jīng)常多次創(chuàng)建和刪除同一個(gè)表,第一個(gè)版本恢復(fù)到 TEST1,將第二個(gè)版本恢復(fù)到 TEST2

FLASHBACK TABLE "BIN$04LhcpnoanfgMAAAAAANPw==$0" TO BEFORE DROP RENAME TO TEST1;

FLASHBACK TABLE "BIN$04LhcpnqanfgMAAAAAANPw==$0" TO BEFORE DROP RENAME TO TEST2;

誤修改的VIEW,FUNTION,PROCEDURE,PACKAGE代碼恢復(fù)

1、使用ODU恢復(fù)

2、利用閃回查詢(xún)恢復(fù)

3、通過(guò)基表進(jìn)行恢復(fù)

閃回的場(chǎng)景及演示介紹:

技術(shù)

應(yīng)用場(chǎng)景

步驟

限制

TSPITR

1、表空間中,某個(gè)表的重要數(shù)據(jù)被破壞或刪除。

2、誤用DDL語(yǔ)言更改了表空間中的一個(gè)或多個(gè)表的結(jié)構(gòu),因此無(wú)法使用閃回來(lái)恢復(fù)這些表。

3、表被誤刪,并且已不在回收站中,如使用了帶purge選項(xiàng)的刪表操作。

set nls_date_format=yyyy-mm-dd hh34:mi:ss;

recover tablespace users until time '2018-01-15 09:20:00' auxiliary destination '/auxdata';

sql 'alter tablespace users online';

1、數(shù)據(jù)庫(kù)必須位于歸檔模式,且存在相應(yīng)的備份集合。

2、要恢復(fù)的表空間必須是自包含的,不依賴(lài)于其它表空間中的對(duì)象。例如,如果一個(gè)表在其它表空間中包含索引,則它們或者一起參與恢復(fù),或者先將依賴(lài)關(guān)系解除才能做恢復(fù)。

flashback

在正式生產(chǎn)環(huán)境一般都不會(huì)輕易閃回整庫(kù),在測(cè)試環(huán)境中,可以利用這個(gè)特性來(lái)還原數(shù)據(jù),比如第一輪UAT測(cè)試完成后,回到初始化狀態(tài),可以進(jìn)行下一輪測(cè)試

啟用flashback database步驟

查詢(xún)數(shù)據(jù)庫(kù)是否開(kāi)啟閃回:select flashback_on from v$database;

關(guān)閉數(shù)據(jù)庫(kù)à啟動(dòng)到mount狀態(tài)à開(kāi)啟歸檔,設(shè)置閃回,不能設(shè)置歸檔路徑,歸檔存放在閃回日志目錄下:alter system set log_archive_dest=’’;à設(shè)置閃回日志目錄:alter system set db_recovery_file_dest=’+data’;à設(shè)置閃回日志保留3天時(shí)間,默認(rèn)1440分鐘:alter system set flashback_retention_target=4320;à設(shè)置閃回日志存儲(chǔ)空間大?。篴lter system set db_recovery_file_dest_size=5000g;à打開(kāi)閃回alter database flashback on;à查詢(xún)是否開(kāi)啟à打開(kāi)DB:alter database open;

如何閃回

查詢(xún)閃回能恢復(fù)的最久時(shí)間段

Select oldest_flashback_scn,oldest_flashback_time from v$flashback_database_log;

重啟DB到MOUNT狀態(tài)à閃回?cái)?shù)據(jù)庫(kù)到某個(gè)時(shí)間點(diǎn):flashback database to timestamp to_timestamp(‘2016-01-02 00:00:00’,’yyyy-mm-dd hh34:mi:ss’);

或閃回DB到某SCN:flashback database to scn xxx;

1.flashback 數(shù)據(jù)庫(kù)不能解決media failure 這種錯(cuò)誤rman是唯一選擇

2.若刪除了數(shù)據(jù)文件或用戶(hù)shrink 縮小了數(shù)據(jù)文件大小,flashback不能用,需要先利用rman把刪除之前或縮小文件之前恢復(fù),再閃回

3.如果控制文件恢復(fù)出來(lái)或重建控制文件,不能閃回

4.閃回恢復(fù)到最早SCN,取決flashback log 中記錄的最早SCN

其它恢復(fù)工具的介紹:

恢復(fù)工具

恢復(fù)參考

ODU工具的使用

強(qiáng)大的恢復(fù)工具,需要版權(quán),有試用版,功能較小

http://www.oracleodu.com/cn/

AMDU恢復(fù)

針對(duì)ASM磁盤(pán)無(wú)法掛載后的數(shù)據(jù)文件抽取恢復(fù)

http://www.eygle.com/archives/2012/03/asm_amdu_recovery.html

logmnr

在delete誤刪數(shù)據(jù)無(wú)法使用快照閃回恢復(fù)時(shí),使用logmnr挖歸檔,可以恢復(fù)數(shù)據(jù)

添加需要分析的在線(xiàn)日志

exec dbms_logmnr.add_logfile(logfilename=>'/opt4/arch/1_22560_911528823.dbf',options=>dbms_logmnr.new);

添加其他在線(xiàn)日志

exec dbms_logmnr.add_logfile(logfilename=>'/opt4/arch/1_22560_911528823.dbf',options=>dbms_logmnr.addfile);

分析添加的文件

execute dbms_logmnr.start_logmnr(options => dbms_logmnr.dict_from_online_catalog + dbms_logmnr.committed_data_only+dbms_logmnr.print_pretty_sql);

查詢(xún)對(duì)應(yīng)內(nèi)容

select * from v$logmnr_contents;


向AI問(wèn)一下細(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