搜尋
首頁資料庫mysql教程备份恢复4.2rman恢复基础概念

rman恢复与用户管理的备份恢复一样,都分为完全恢复和不完全恢复,都需要工作在archivelog模式下。 rman10g之后只保留了0级和1级备份,1级备份分为:cumulative(累积增量)和differential(差异增量)两种模式,如果不加关键词默认是差异增量备份: backup

rman恢复与用户管理的备份恢复一样,都分为完全恢复和不完全恢复,都需要工作在archivelog模式下。

rman10g之后只保留了0级和1级备份,1级备份分为:cumulative(累积增量)和differential(差异增量)两种模式,如果不加关键词默认是差异增量备份:

backup incremental level 1 cumulative database(累积增量)

backup incremental level 1 database(差异增量)


连接:

rman

connect target /

@/mydir/lyg.txt

或者:

rman @/mydir/lyg.txt


1、rman转储命令:

当使用rman执行介质恢复时,首先需要用restore命令来完成转储备份文件的,执行restore命令时,rman自动转储最近备份的文件。

restore database : 转储数据库的所有数据文件,当数据库的所有数据文件都出现介质失败,或者执行不完全恢复时,应该使用restore database 命令转储所有数据文件,此命令只能在mount状态下使用。


restore tablespace :用于转储特定表空间的数据文件,如果某个表空间的所有数据文件都出现介质失败,并且数据库处于open阶段,那就应该使用restore tablespace命令。该命令只能在open状态下使用。


restore datafile:转储特定数据文件,该命令既可以在mount状态下,也可以在open状态下使用。


restore controlfile: 该命令用于转储控制文件,当执行基于控制文件的不完全恢复或者将数据库恢复到先前副本状态时,必须转储控制文件,restore controlfile 命令只能在nomount状态下使用。


restore archivelog:转储归档日志,当执行完全恢复和不完全恢复时,都需要应用归档日志。如果归档日志出现介质失败,或者归档日志的映像副本不存在,那么应该使用restore archivelog命令转储归档日志,注意,该命令既可以在mount状态下使用,也可以在open状态下使用。


restore spfile: 转储服务器参数文件。如果服务器参数文件出现介质失败,那么可以使用restore spfile命令进行转储。该命令只能在nomount状态使用。


2、rman恢复命令:

当执行介质恢复时,在转储了数据文件备份之后,需要应用归档日志恢复数据文件,恢复数据文件是使用recover命令来完成的,当执行recover命令时,rman会自动应用自 最近备份以来的所有归档日志。


recover database : 用于恢复数据库所有的数据文件,当使用restore database命令转储了所有的数据文件备份之后,应该使用recover database命令执行恢复,注意该命令只能在mount状态下使用。


recover tablespace: 恢复特定表空间的数据文件,先用restore tablespace命令转储,然后使用recover tablespace执行恢复。注意,该命令只能在open状态下。


recover datafile: 该命令既可以在mount状态下,也可以在open状态下使用。


恢复数据库:

通过查询动态性能视图 v$recover_file可以确定需要恢复的数据文件:

SQL> startup            —— 数据库显示mounted 但是open时出错

SQL> select file#, error from v$recover_file;            ——查询需要恢复的文件,以及出错的原因


示例一 :所有数据文件被误删除:因为所有数据文件全部被误删除,所以可以使用restore database 命令转储所有数据文件,在使用recover database 命令恢复数据库,最后执行 alter database open打开数据库:

C:\> rman target sys/liu123@mynewdb  nocatalog

RMAN> startup force mount

RMAN>run{ restore database;

 recover database;

 sql 'alter database open ';

}


示例二:数据文件所在磁盘出现硬件故障:

需要注意,数据文件此事将不能被转储到其原来的位置,为了恢复数据库,必须将数据文件转储到其他磁盘。在执行restore database 命令之前,通过执行set newname命令可以为数据文件指定新的位置。在执行restore database 命令之后,通过执行switch datafile命令,可以改变控制文件所记载的数据文件位置和名称,在通过执行recover database命令可以应用归档日志。最后用sql语句打开数据库。示例:

RMAN> run{

 startup force mount;

set newname for datafile 1 to 'c:\demo\system01.dbf';

set newname for datafile 2 to 'c:\demo\undotas01.dbf';

set newname for datafile 3 to 'c:\demo\sysaux01.dbf';

set newname for datafile 4 to 'c:\demo\users01.dbf';

set newname for datafile 5 to 'c:\demo\user01.dbf';

set newname for datafile 6 to 'c:\demo\user02.dbf';

restore database;

switch databse;

sql 'alter database open'

}

在恢复并打开数据库之后,执行report schema命令可以查看到数据库新的物理方案

RMAN> report schema;


恢复system表空间的数据文件:

因为system表空间出现介质失败时,数据库不能被打开,所以必须在mount状态下恢复其数据文件。


示例一:system表空间的数据文件被误删除,在装载了数据库之后,先使用restore datafile 命令转储该表空间所对应的数据文件,在使用recover datafile 命令应用归档日志。最后打开数据库。命令:

RMAN> run{

 startup force mount;

 restore datafile 1 ;

recover datafile 1 ;

sql 'alter database open'

}


示例二:system表空间数据文件所在磁盘出现故障,肯定不能转储到原来位置,在restore datafile之前,执行set newname为数据文件指定新的位置。执行完restore datafile之后,通过switch datafile可以应用归档日志,最后打开数据库。示例:

RMAN>  run {

 startup force mount;

set newname for datafile 1 to 'd:\demo\system01.dbf';

restore datafile 1 ;

switch datafle 1;

 recover datafile 1;

sql 'alter database open';

}


在open状态下恢复关闭后意外丢失的数据文件:

除了system 表空间的数据文件之外,其他数据文件都可以使用该方法进行恢复:


示例一:数据文件被误删除:装载数据库之后,先使用sql语句alter database datafile 。。。offline脱机丢失的数据文件,接着alter database open 打开数据库。,再使用restore datafile命令转储数据文件,使用recover datafile 命令应用归档日志。,最后再 alter database datafile 。。online恢复联机、示例:

RMAN > run {

 startup force mount;

 sql ‘ alter database datafile 4 offline’;

 sql 'alter database open';

 restore datafile 4;

 recover dtafile 4;

 sql 'alter database datafile 4 online';

}


示例二:数据文件所在的磁盘出现损坏:

很显然数据文件不能被转储到原来的位置。首先装载数据库,然后alter database datafile 。。 offline 。然后alter database open。 在restore datafile之前,先set newname 命令为数据文件制定新的位置,在执行了restore datafile命令之后,用switch datafile 命令可以改变控制文件所记载的数据文件的位置和名称,在通过recover datafile 命令可以应用归档日志。最后alter database datafile 。。 online联机。示例代码:

RMAN > run{

startup force mount;

sql 'alter databse datafile 4 offline';

sql 'alter database open ';

set newname for datafile 4 to 'd:\demouser01.dbf';

restore datafile 4;

switch datafile 4;

recover datafile 4;

sql 'alter database datafile 4 onlune';

}


在open状态下恢复打开时意外丢失的数据文件:

此时,只有出现介质失败的数据文件不能访问,而不影响其他数据文件,假定在open状态下users01,.dbf出现介质失败。

示例一:数据文件被误删除:先在open状态下alter database datafile 。。offline ,使用restore datafile 命令转储数据文件,再recovert datafile应用归档日志,最后alter database datafile 。。online使数据文件联机:

RMAN>run {

sql 'alter database datafile 4 offline';

restore datafile 4;

recover datafile 4;

sql 'alter database datafile 4 online';

}


示例二:数据文件所在磁盘出现故障:不能讲数据文件转储到原来位置,首先alter database datafile 。。offline 。然后set newname for 命令为数据文件指定新位置。然后restore datafile,再switch datafile 更改控制文件中数据文件的名称和位置。再使用recover datafile应用归档日志。最后alter database datafile 。。online。示例:

RMAN > run {

sql ' alter database datafile 4 offline';

set newname for datafile 4 to 'd:\demo\users01.dbf';

restore datafile 4;

switch datafile 4;

recover datafile 4;

sql 'alter database datafile 4 online';

}


在open状态下恢复未备份的数据文件:

示例一:数据文件被误删除:

注意此时数据文件并没有备份,从10g开始,如果数据文件备份不存在,那么转储数据文件时会自动建立数据文件,建立了数据文件之后,就可以根据归档日志跑日志,一直恢复到删除文件的时间点。示例:

RMAN>run {

 starup force mount;

sql 'alter database datafile 7 offline';

sql 'alter database open';

restore datafile 7;

recover datafile 7;

sql 'alter database datafile 7 online';

}


示例二:数据文件所在磁盘损坏。

RMAN>run{

startup force mount ;

sql 'alter database datafile 7 offline';

sql 'alter database open';

set newname for datafile 7 to 'c:\demo\user04.dbf';

restore datafile 7;

switch datafile 7;

recover datafile 7;

sql 'alter database datafile 7 online';

}



恢复表空间:

示例一:数据库处于open状态下,如果某个表空间所有数据文件出现介质故障,首先要使用alter tablespace 。。offline for recover来脱机表空间。接着使用restore tablespace 。。再revover tablespace应用归档日志,最后alter tablespace 。。online 。示例:

RMAN > run{

 sql ' alter tablespace users offline for recover';

 restore tablespace users;

 recover tablespace users;

 sql ' alter tablespace users online';

}


示例二:表空间数据文件所在磁盘故障:

RMAN> run{

 sql 'alter tablespace users offline for recover';

 set newname for datafile 4 to  'd:\demo\users01.dbf';

 restore tablespace user;

 switch datafile all;

recover tablespace users;

sql 'alter tablespace users online';

}



数据块介质恢复:

只有当访问到这些坏块的时候才会报错。如报错:

ora-01578:oracle data block corrupted (file# 5, block# 21)

ora-01110:data file 5 :’d:\demo\uyser01,dbf‘

使用命令如下:RMAN >  blockrecover device type disk datafile 5 block 21 ,48 ,128;



RMAN不完全恢复:

rman的不完全恢复能在mount状态下完成。

1、基于时间恢复:当rman执行基于时间点的 不完全恢复时,首先要在命令行设置环境变量NLS_DATE_FORMAT。进入rman之后,先mount数据库,再使用SET UNTIL TIME 命令执行要恢复到的时间点。示例:

C:\> set nls_date_format = yyyy-mm-dd hh24:mi:ss

C:\>rman target sys/oracle@demo nocatalog

RMAN > run{

startup force mount;

set until time = '2012-05-08 17:00:28';

restore database;

recover database;

sql 'alter database open resetlogs';

}


当使用resetlogs选项打开数据库之后,会复位日志序列号,并生成新的数据库副本,在10g之前,不完全恢复之后必须重新备份数据库,10g之后,oracle提供了安全机制可以确保归档日志不会被覆盖,从而使得在恢复数据库时可以使用早期数据库副本的备份,但在执行了不完全恢复之后,建议删除早期的所有备份,并重新备份数据库。示例:

RMAN > run {

 delete  noprompt backup;

 delete noprompt copy;

 backup database format =’d:backup\%d_%s.bakj‘;

 sql 'alter system archive log current';

}


基于SCN的恢复:


首先查询当前scn号:SQL> select current_scn from v$databse;

然后删除一个表scott.emp。

示例如下:RMAN > run{

 startup force mount;

set until scn = 511416;

restore database;

recover database;

sql 'alter database open resetlogs';

}


当使用resetlogs选项打开数据库之后,会复位日志序列号,并生成新的数据库副本,在10g之前,不完全恢复之后必须重新备份数据库,10g之后,oracle提供了安全机制可以确保归档日志不会被覆盖,从而使得在恢复数据库时可以使用早期数据库副本的备份,但在执行了不完全恢复之后,建议删除早期的所有备份,并重新备份数据库。示例:

RMAN > run {

 delete  noprompt backup;

 delete noprompt copy;

 backup database format =’d:backup\%d_%s.bakj‘;

 sql 'alter system archive log current';

}



基于日志序列号恢复:

假定我们在执行完全备份恢复失败时,出现了如下错误备份恢复4.2rman恢复基础概念

这种情况下dba可以实用基于日志序列号的不完全恢复:示例:

RMAN > run{

startup force mount;

set until sequence = 6;

restore database;

recover database;

sql ’alter database open resetlogs‘;

}


当使用resetlogs选项打开数据库之后,会复位日志序列号,并生成新的数据库副本,在10g之前,不完全恢复之后必须重新备份数据库,10g之后,oracle提供了安全机制可以确保归档日志不会被覆盖,从而使得在恢复数据库时可以使用早期数据库副本的备份,但在执行了不完全恢复之后,建议删除早期的所有备份,并重新备份数据库。示例:

RMAN > run {

 delete  noprompt backup;

 delete noprompt copy;

 backup database format =’d:backup\%d_%s.bakj‘;

 sql 'alter system archive log current';

}



基于备份控制文件恢复:

是指实用备份控制文件恢复数据库的过程,当误删除了表空间或者数据库所有控制文件全部损坏时,可以使用这种方法。下面模拟dba用户删除了users表空间为例,说明基于备份控制文件恢复的方法;

SQL> drop tablespace user01 including contents;

通过查询alert文件可以确定误操作时间,alert文件位置:background_dump_dest所对应的目录中,文件名格式:alert_mynewdb.log查看alert文件时,应该有文件尾部向上查看,可以看到删除该表的具体时间,大概为2012-05-08 22:13:34 ,只要恢复到该时间点就可以了,注意:当使用基于备份控制文件的rman不完全恢复时,必须使用恢复目录,将控制文件内的rman元数据周期性写到恢复目录中去,如果没有使用恢复目录,那就要求激活控制文件自动备份功能,否则就不能转储控制文件备份,转储控制文件之前,需要使用set dbid命令,设置数据库id编号,在转储了控制文件之后装载数据库,然后执行基于时间点的rman不完全恢复。示例:

C:\> set nls_date_format = yyyy-mm-dd hh24:mi:ss

C:\>rman target sys/oracle@demo nocatalog

RMAN > startup force nomount

RMAN > set dbid = 3282656886;

RMAN > restore controlfile from autobackup maxseq 6;

RMAN > alter database mount

RMAN >run{

set until time = '2012-05-08 22:13:34';

restore database;

recover database;

sql 'alter database open resetlogs';

}


当使用resetlogs选项打开数据库之后,会复位日志序列号,并生成新的数据库副本,在10g之前,不完全恢复之后必须重新备份数据库,10g之后,oracle提供了安全机制可以确保归档日志不会被覆盖,从而使得在恢复数据库时可以使用早期数据库副本的备份,但在执行了不完全恢复之后,建议删除早期的所有备份,并重新备份数据库。示例:

RMAN > run {

 delete  noprompt backup;

 delete noprompt copy;

 backup database format =’d:backup\%d_%s.bakj‘;

 sql 'alter system archive log current';

}

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
MySQL:初學者的基本技能MySQL:初學者的基本技能Apr 18, 2025 am 12:24 AM

MySQL適合初學者學習數據庫技能。 1.安裝MySQL服務器和客戶端工具。 2.理解基本SQL查詢,如SELECT。 3.掌握數據操作:創建表、插入、更新、刪除數據。 4.學習高級技巧:子查詢和窗口函數。 5.調試和優化:檢查語法、使用索引、避免SELECT*,並使用LIMIT。

MySQL:結構化數據和關係數據庫MySQL:結構化數據和關係數據庫Apr 18, 2025 am 12:22 AM

MySQL通過表結構和SQL查詢高效管理結構化數據,並通過外鍵實現表間關係。 1.創建表時定義數據格式和類型。 2.使用外鍵建立表間關係。 3.通過索引和查詢優化提高性能。 4.定期備份和監控數據庫確保數據安全和性能優化。

MySQL:解釋的關鍵功能和功能MySQL:解釋的關鍵功能和功能Apr 18, 2025 am 12:17 AM

MySQL是一個開源的關係型數據庫管理系統,廣泛應用於Web開發。它的關鍵特性包括:1.支持多種存儲引擎,如InnoDB和MyISAM,適用於不同場景;2.提供主從復制功能,利於負載均衡和數據備份;3.通過查詢優化和索引使用提高查詢效率。

SQL的目的:與MySQL數據庫進行交互SQL的目的:與MySQL數據庫進行交互Apr 18, 2025 am 12:12 AM

SQL用於與MySQL數據庫交互,實現數據的增、刪、改、查及數據庫設計。 1)SQL通過SELECT、INSERT、UPDATE、DELETE語句進行數據操作;2)使用CREATE、ALTER、DROP語句進行數據庫設計和管理;3)複雜查詢和數據分析通過SQL實現,提升業務決策效率。

初學者的MySQL:開始數據庫管理初學者的MySQL:開始數據庫管理Apr 18, 2025 am 12:10 AM

MySQL的基本操作包括創建數據庫、表格,及使用SQL進行數據的CRUD操作。 1.創建數據庫:CREATEDATABASEmy_first_db;2.創建表格:CREATETABLEbooks(idINTAUTO_INCREMENTPRIMARYKEY,titleVARCHAR(100)NOTNULL,authorVARCHAR(100)NOTNULL,published_yearINT);3.插入數據:INSERTINTObooks(title,author,published_year)VA

MySQL的角色:Web應用程序中的數據庫MySQL的角色:Web應用程序中的數據庫Apr 17, 2025 am 12:23 AM

MySQL在Web應用中的主要作用是存儲和管理數據。 1.MySQL高效處理用戶信息、產品目錄和交易記錄等數據。 2.通過SQL查詢,開發者能從數據庫提取信息生成動態內容。 3.MySQL基於客戶端-服務器模型工作,確保查詢速度可接受。

mysql:構建您的第一個數據庫mysql:構建您的第一個數據庫Apr 17, 2025 am 12:22 AM

構建MySQL數據庫的步驟包括:1.創建數據庫和表,2.插入數據,3.進行查詢。首先,使用CREATEDATABASE和CREATETABLE語句創建數據庫和表,然後用INSERTINTO語句插入數據,最後用SELECT語句查詢數據。

MySQL:一種對數據存儲的初學者友好方法MySQL:一種對數據存儲的初學者友好方法Apr 17, 2025 am 12:21 AM

MySQL適合初學者,因為它易用且功能強大。 1.MySQL是關係型數據庫,使用SQL進行CRUD操作。 2.安裝簡單,需配置root用戶密碼。 3.使用INSERT、UPDATE、DELETE、SELECT進行數據操作。 4.複雜查詢可使用ORDERBY、WHERE和JOIN。 5.調試需檢查語法,使用EXPLAIN分析查詢。 6.優化建議包括使用索引、選擇合適數據類型和良好編程習慣。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具