溫馨提示×

溫馨提示×

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

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

怎么利用RMAN恢復(fù)整個(gè)數(shù)據(jù)庫

發(fā)布時(shí)間:2021-08-16 00:14:28 來源:億速云 閱讀:201 作者:chen 欄目:建站服務(wù)器

本篇內(nèi)容介紹了“怎么利用RMAN恢復(fù)整個(gè)數(shù)據(jù)庫”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

利用RMAN恢復(fù)整個(gè)數(shù)據(jù)庫案例一

適合場合:恢復(fù)的目錄一致,同時(shí)備份的過程中有歸檔日志

恢復(fù)的數(shù)據(jù)庫目錄和down機(jī)的數(shù)據(jù)庫一致,還有一個(gè)就是RMAN備份的時(shí)候已經(jīng)備份了歸檔日志。

備份腳本:

run{

allocalte channel ch2 type disk;

sql ‘a(chǎn)lter system archive log current’;

backup as compressed backupset database format ‘/u02/rman/testdb_%T_%U’;

sql ‘a(chǎn)lter system archive log current’;

backup as compressed backupset archivelog all format ‘/u02/rman/testarc_%T_%U’;

bakup current controlfile format ‘/u02/rman/testcon_%T_%U’;

release channel ch2;

}

delete force noprompt expired backup;

delete force noprompt obsoelet;

1.    安裝Oracle服務(wù)器軟件

版本盡量對應(yīng),安裝過程中選擇只安裝軟件,不創(chuàng)建數(shù)據(jù)庫

2.    設(shè)置環(huán)境變量

su – oracle

vim ~/.bash_profile

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=/u01/app/oracle/10g/db_1

export ORACLE_SID=test    --這個(gè)一定要對應(yīng)

export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin

unset USERNAME

生效:source ~/.bash_profile

3.    創(chuàng)建相應(yīng)的目錄和文件,和之前服務(wù)器的一致,信息可以從rman備份的log文件看到,包括如下:

mkdir $ORACLE_BASE/admin/SID/{a,b,c,d,u}dump –p

mkdir $ORACLE_BASE/admin/SID/pfile–p

mkdir $ORACLE_BASE/oradata/SID –p

創(chuàng)建口令文件:

orapwd file=$ORACLE_HOME/dbs/orapwtest password=oracle entires=10

4.    拷貝備份和歸檔到恢復(fù)機(jī)器對應(yīng)的路徑下,特別是rman備份的路徑,否則會報(bào)錯

5.    配置主機(jī)名,監(jiān)聽,IP

6.    恢復(fù)數(shù)據(jù)庫的過程

1)rman target / nocatalog

Recovery Manager: Release 10.2.0.4.0 - Production on Thu Sep 16 13:55:31 2010

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

connected to target database (not started)

2)RMAN> startup nomount;

startup failed: ORA-01078: failure in processing system parameters

LRM-00109: could not open parameter file '/u01/app/oracle/10g/db_1/dbs/inittest.ora'

starting Oracle instance without parameter file for retrival of spfile

Oracle instance started

上面的意思是說:沒有實(shí)例需要的初始化參數(shù)文件,由于沒有參數(shù)文件,所以會報(bào)錯,但實(shí)例已經(jīng)啟動

Total System Global Area     159383552 bytes

Fixed Size                     1266344 bytes

Variable Size                 54529368 bytes

Database Buffers             100663296 bytes

Redo Buffers                   2924544 bytes

3)恢復(fù)初始化參數(shù)文件

這里需要注意的是,要找對對應(yīng)的備份文件,逐一嘗試,一般找備份比較后而且小的

RMAN> restore spfile from '/u02/rman/testdb_20100916_05lo1lg0_1_1';

Starting restore at 16-SEP-10

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=36 devtype=DISK

channel ORA_DISK_1: autobackup found: /u02/rman/testdb_20100916_05lo1lg0_1_1

channel ORA_DISK_1: SPFILE restore from autobackup complete

Finished restore at 16-SEP-10

4)恢復(fù)控制文件

RMAN> shutdown immediate;

Oracle instance shut down

RMAN> startup nomount;

connected to target database (not started)

Oracle instance started

Total System Global Area     167772160 bytes

Fixed Size                     1266392 bytes

Variable Size                 62917928 bytes

Database Buffers             100663296 bytes

Redo Buffers                   2924544 bytes

RMAN> restore controlfile from '/u02/rman/testcon_20100916_07lo1lg8_1_1';

Starting restore at 16-SEP-10

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=101 devtype=DISK

channel ORA_DISK_1: restoring control file

channel ORA_DISK_1: restore complete, elapsed time: 00:00:02

output filename=/u01/app/oracle/oradata/test/control01.ctl

output filename=/u01/app/oracle/oradata/test/control02.ctl

output filename=/u01/app/oracle/oradata/test/control03.ctl

Finished restore at 16-SEP-10

5)將數(shù)據(jù)啟動到mount狀態(tài)

RMAN> alter database mount;

database mounted

released channel: ORA_DISK_1

6)恢復(fù)數(shù)據(jù)庫

后面出現(xiàn)的錯誤是指個(gè)別日志不同步,所以最好就是把歸檔一起拷貝全

RMAN> run{

2> restore database;

3> recover database;

4> }

7)以resetlogs打開數(shù)據(jù)庫

 [oracle@sdb dbs]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Thu Sep 16 14:02:58 2010

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> alter database open resetlogs;

Database altered.

若在6)數(shù)據(jù)庫恢復(fù)的過程中出現(xiàn)問題,可以參考如下的步驟進(jìn)行

在恢復(fù)完控制文件后,啟動到mount狀態(tài)下,在sqlplus提示符下運(yùn)行如下查詢

1.  sql>select file#,checkpoint_change# from v$datafile;

注:如果出現(xiàn)科學(xué)記數(shù)法顯示不了checkpoint_change#列的時(shí)候,可以通過如下命令讓其顯示完全

set numw 15;

發(fā)現(xiàn)所有數(shù)據(jù)文件的checkpoint scn是52873354,因此需要scn大于52873354的歸檔日志來修復(fù)數(shù)據(jù)庫

2.在rman提示符下運(yùn)行l(wèi)ist backup of archivelog all,發(fā)現(xiàn)scn大于52873354的歸檔日志的sequence范圍是1052至1097,在rman提示符下運(yùn)行

restore archivelog sequence between 1052 and 1097;    恢復(fù)歸檔日志(mount)

3.在sqlplus提示符下運(yùn)行命令alter database flashback off;關(guān)閉flashback,然后在rman提示符下運(yùn)行如下命令塊修復(fù)數(shù)據(jù)庫

rman>Run {

Set until sequence=1098;

retore database;

Recover database;

}

利用RMAN恢復(fù)整個(gè)數(shù)據(jù)庫案例二  

適合場合:目錄一致,沒有進(jìn)行歸檔的備份

恢復(fù)的數(shù)據(jù)庫目錄和down機(jī)的數(shù)據(jù)庫一致,RMAN備份的時(shí)候沒有備份歸檔,恢復(fù)的時(shí)候,應(yīng)該盡可能的把數(shù)據(jù)庫做全備的開始的所有后面的歸檔盡可能拷貝過去,這個(gè)和目前公司的有些服務(wù)器備份策略一致

說明:做數(shù)據(jù)庫備份的前,用戶test/test下只有hello,hell2,hello4,hello3表,備份完成后創(chuàng)建了表hello5,結(jié)合RMAN和歸檔日志進(jìn)行恢復(fù),驗(yàn)證備份恢復(fù)完以后,hello5表也存在

備份腳本:

run{

allocate channel ch2 type disk;

sql ‘a(chǎn)lter system archive log current’;

backup as compressed backupset database format ‘/u02/rman/testdb_%T_%U’;

sql ‘a(chǎn)lter system archive log current’;

backup current controlfile format ‘/u02/rman/testcon_%T_%U’;

release channel ch2;

}

恢復(fù)過程如下:

其中1,2,3,4和上面的過程一樣,下面是步驟5恢復(fù)數(shù)據(jù)的過程:

6.利用rman恢復(fù)

[oracle@sdb test]$ rman target / nocatalog

Recovery Manager: Release 10.2.0.4.0 - Production on Sun Sep 19 12:02:47 2010

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

connected to target database (not started)

1)恢復(fù)spfile,一般找小的備份文件

RMAN> startup nomount;                                                                                                             

startup failed: ORA-01078: failure in processing system parameters

LRM-00109: could not open parameter file '/u01/app/oracle/10g/db_1/dbs/inittest.ora'

starting Oracle instance without parameter file for retrival of spfile

Oracle instance started

Total System Global Area     159383552 bytes

Fixed Size                     1266344 bytes

Variable Size                 54529368 bytes

Database Buffers             100663296 bytes

Redo Buffers                   2924544 bytes

RMAN> restore spfile from '/u02/rman/testdb_20100919_0llo9foo_1_1';

Starting restore at 19-SEP-10

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=36 devtype=DISK

channel ORA_DISK_1: autobackup found: /u02/rman/testdb_20100919_0llo9foo_1_1

channel ORA_DISK_1: SPFILE restore from autobackup complete

Finished restore at 19-SEP-10

RMAN> shutdown immediate;

Oracle instance shut down

RMAN> startup nomount;

connected to target database (not started)

Oracle instance started

Total System Global Area     167772160 bytes

Fixed Size                     1266392 bytes

Variable Size                 75500840 bytes

Database Buffers              88080384 bytes

Redo Buffers                   2924544 bytes

--說明恢復(fù)成功

2)恢復(fù)控制文件

RMAN> restore controlfile from '/u02/rman/testcon_20100919_0mlo9fov_1_1';

Starting restore at 19-SEP-10

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=101 devtype=DISK

channel ORA_DISK_1: restoring control file

channel ORA_DISK_1: restore complete, elapsed time: 00:00:02

output filename=/u01/app/oracle/oradata/test/control01.ctl

output filename=/u01/app/oracle/oradata/test/control02.ctl

output filename=/u01/app/oracle/oradata/test/control03.ctl

Finished restore at 19-SEP-10

3)啟動數(shù)據(jù)庫到mount狀態(tài),恢復(fù)數(shù)據(jù)庫

RMAN> alter database mount;

database mounted

released channel: ORA_DISK_1

RMAN> run{

2> allocate channel ch2 type disk;

3> restore database;

4> recover database;

5> release channel ch2;

6> }

allocated channel: ch2

channel ch2: sid=101 devtype=DISK

Starting restore at 19-SEP-10

channel ch2: starting datafile backupset restore

channel ch2: specifying datafile(s) to restore from backup set

restoring datafile 00001 to /u01/app/oracle/oradata/test/system01.dbf

restoring datafile 00002 to /u01/app/oracle/oradata/test/undotbs01.dbf

restoring datafile 00003 to /u01/app/oracle/oradata/test/sysaux01.dbf

restoring datafile 00004 to /u01/app/oracle/oradata/test/users01.dbf

channel ch2: reading from backup piece /u02/rman/testdb_20100919_0klo9fna_1_1

channel ch2: restored backup piece 1

piece handle=/u02/rman/testdb_20100919_0klo9fna_1_1 tag=TAG20100919T110514

channel ch2: restore complete, elapsed time: 00:00:36

Finished restore at 19-SEP-10

Starting recover at 19-SEP-10

starting media recovery

released channel: ch2

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of recover command at 09/19/2010 13:36:12

RMAN-06053: unable to perform. media recovery because of missing log

RMAN-06025: no backup of log thread 1 seq 38 lowscn 493029 found to restore

RMAN-06025: no backup of log thread 1 seq 37 lowscn 492908 found to restore

RMAN-06025: no backup of log thread 1 seq 36 lowscn 492874 found to restore

--上面說沒有找到歸檔文件,將盡可能的歸檔文件拷貝過去

RMAN> exit

4)利用SQL*PLUS來恢復(fù)歸檔日志中的內(nèi)容

Recovery Manager complete.

[oracle@sdb test]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Sun Sep 19 13:36:28 2010

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> recover database using backup controlfile;

ORA-00279: change 492881 generated at 09/19/2010 11:05:14 needed for thread 1

ORA-00289: suggestion : /u01/arclog/1_36_729861888.dbf

ORA-00280: change 492881 for thread 1 is in sequence #36

先AUTO再CANCLE

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

auto

ORA-00279: change 492908 generated at 09/19/2010 11:06:07 needed for thread 1

ORA-00289: suggestion : /u01/arclog/1_37_729861888.dbf

ORA-00280: change 492908 for thread 1 is in sequence #37

ORA-00278: log file '/u01/arclog/1_36_729861888.dbf' no longer needed for this

recovery

ORA-00279: change 493029 generated at 09/19/2010 11:07:40 needed for thread 1

ORA-00289: suggestion : /u01/arclog/1_38_729861888.dbf

ORA-00280: change 493029 for thread 1 is in sequence #38

ORA-00278: log file '/u01/arclog/1_37_729861888.dbf' no longer needed for this

recovery

ORA-00308: cannot open archived log '/u01/arclog/1_38_729861888.dbf'

ORA-27037: unable to obtain file status

Linux Error: 2: No such file or directory

Additional information: 3

SQL> recover database using backup controlfile;

ORA-00279: change 493029 generated at 09/19/2010 11:07:40 needed for thread 1

ORA-00289: suggestion : /u01/arclog/1_38_729861888.dbf

ORA-00280: change 493029 for thread 1 is in sequence #38

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

cancel

Media recovery cancelled.

SQL> alter database open resetlogs;

alter database open resetlogs

*

ERROR at line 1:

ORA-01113: file 1 needs media recovery

ORA-01110: data file 1: '/u01/app/oracle/oradata/test/system01.dbf'

--上面的出錯信息很正常說,system01.dbf文件需要進(jìn)行media recovery,由于剛才應(yīng)用了歸檔里面的信息,所以會報(bào)錯,再進(jìn)去RMAN中recover database即可

SQL> exit

Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

[oracle@sdb test]$ rman target / nocatalog;

Recovery Manager: Release 10.2.0.4.0 - Production on Sun Sep 19 13:38:51 2010

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

connected to target database: TEST (DBID=2028008317, not open)

using target database control file instead of recovery catalog

RMAN> recover database;

Starting recover at 19-SEP-10

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=104 devtype=DISK

starting media recovery

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of recover command at 09/19/2010 13:38:58

RMAN-06053: unable to perform. media recovery because of missing log

RMAN-06025: no backup of log thread 1 seq 38 lowscn 493029 found to restore

--上面出錯的信息是說,沒有找到seq 38號的日志,不影響

RMAN> exit

Recovery Manager complete.

5)測試恢復(fù)成功

[oracle@sdb test]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Sun Sep 19 13:39:06 2010

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL>shutdown immediate;   --最好先執(zhí)行關(guān)閉再

SQL>startup;

SQL> alter database open resetlogs;

Database altered.

SQL>conn test/test;

SQL> select table_name from user_tables;

TABLE_NAME

------------------------------

HELLO2

HELLO

HELLO3

HELLO4

HELLO5

SQL> select count(*) from hello5;

  COUNT(*)

----------

153600

其實(shí)從3),4),5)步驟可以這樣恢復(fù),首先將盡可能的歸檔拷貝到歸檔的相應(yīng)目錄下

然后進(jìn)行如下的操作步驟:

rman>alter database mount

rman>run{

restore database;

}

rman>catalog start with ‘/u03/backup/arcbak/’

rman>recover database;

rman>shutdown immediate;

rman>startup;

rman>alter database open reseglogs;

方法三:直接把那些歸檔拷貝到和原庫一樣的目錄,然后執(zhí)行如下的操作:

rman>alter database mount

rman>run{

restore database;

recover database;

}

rman>alter database open resetlogs;

rman>shutdown immediate;

rman>startup;

最后要檢查下ps –ef |grep ora_實(shí)例進(jìn)程數(shù),如果進(jìn)程過多,不用過于關(guān)注,只是數(shù)據(jù)庫沒有完全恢復(fù)的原因

利用RMAN恢復(fù)整個(gè)數(shù)據(jù)庫案例三


恢復(fù)目錄不一致

當(dāng)數(shù)據(jù)庫目錄不一樣的時(shí)候,一般沒有必要這樣做,但是有時(shí)候特殊的需要

備份腳本:

run{

allocate channel ch2 type disk;

sql ‘a(chǎn)lter system archive log current’;

backup as compressed backupset database format ‘/u02/rman/testdb_%T_%U’;

sql ‘a(chǎn)lter system archive log current’;

backup as compressed archivelog all format ‘/u02/rman/testarc_%T_%U’;

backup current controlfile format ‘/u02/rman/testcon_%T_U’;

release channel ch2;

}

crosscheck backup;

delete force noprompt obsolete;

1,2,3,4,5過程和案例一的基本一樣。

下面是恢復(fù)過程:

[oracle@sdb rman]$ rman target / nocatalog

Recovery Manager: Release 10.2.0.4.0 - Production on Sun Sep 19 17:08:33 2010

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

connected to target database (not started)

1)恢復(fù)spfile文件

RMAN> startup nomount;

connected to target database (not started)

startup failed: ORA-01078: failure in processing system parameters

LRM-00109: could not open parameter file '/u01/app/oracle/10g/db_1/dbs/inittest.ora'

starting Oracle instance without parameter file for retrival of spfile

Oracle instance started

Total System Global Area     159383552 bytes

Fixed Size                     1266344 bytes

Variable Size                 54529368 bytes

Database Buffers             100663296 bytes

Redo Buffers                   2924544 bytes

RMAN> restore spfile from '/u02/rman/testdb_20100919_0slo9uv5_1_1';

Starting restore at 19-SEP-10

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=36 devtype=DISK

channel ORA_DISK_1: autobackup found: /u02/rman/testdb_20100919_0slo9uv5_1_1

channel ORA_DISK_1: SPFILE restore from autobackup complete

Finished restore at 19-SEP-10

3)恢復(fù)controlfile

RMAN> shutdown immediate;

Oracle instance shut down

RMAN> startup nomount;

connected to target database (not started)

Oracle instance started

Total System Global Area     167772160 bytes

Fixed Size                     1266392 bytes

Variable Size                 88083752 bytes

Database Buffers              75497472 bytes

Redo Buffers                   2924544 bytes

RMAN> restore controlfile from '/u02/rman/testcon_20100919_0ulo9uvd_1_1';

Starting restore at 19-SEP-10

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=101 devtype=DISK

channel ORA_DISK_1: restoring control file

channel ORA_DISK_1: restore complete, elapsed time: 00:00:01

output filename=/u01/app/oracle/oradata/test/control01.ctl

output filename=/u01/app/oracle/oradata/test/control02.ctl

output filename=/u01/app/oracle/oradata/test/control03.ctl

Finished restore at 19-SEP-10

4)恢復(fù)數(shù)據(jù)庫(restore,recover)

RMAN> alter database mount;

database mounted

released channel: ORA_DISK_1

RMAN> report schema;

Starting implicit crosscheck backup at 19-SEP-10

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=101 devtype=DISK

Crosschecked 7 objects

Finished implicit crosscheck backup at 19-SEP-10

Starting implicit crosscheck copy at 19-SEP-10

using channel ORA_DISK_1

Finished implicit crosscheck copy at 19-SEP-10

searching for all files in the recovery area

cataloging files...

no files cataloged

RMAN-06139: WARNING: control file is not current for REPORT SCHEMA

Report of database schema

List of Permanent Datafiles

===========================

File Size(MB) Tablespace           RB segs Datafile Name

---- -------- -------------------- ------- ------------------------

1    0        SYSTEM               ***     /u01/app/oracle/oradata/test/system01.dbf

2    0        UNDOTBS1             ***     /u01/app/oracle/oradata/test/undotbs01.dbf

3    0        SYSAUX               ***     /u01/app/oracle/oradata/test/sysaux01.dbf

4    0        USERS                ***     /u01/app/oracle/oradata/test/users01.dbf

List of Temporary Files

=======================

File Size(MB) Tablespace           Maxsize(MB) Tempfile Name

---- -------- -------------------- ----------- --------------------

1    0        TEMP                 32767       /u01/app/oracle/oradata/test/temp01.dbf

RMAN> run{

2> set newname for datafile 1 to '/u03/oradata/test/system01.dbf';

3> set newname for datafile 2 to '/u03/oradata/test/undotbs01.dbf';

4> set newname for datafile 3 to '/u03/oradata/test/sysaux01.dbf';

5> set newname for datafile 4 to '/u03/oradata/test/users01.dbf';

6> restore datafile 1,2,3,4;

7> switch datafile all;

8> }    

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

Starting restore at 19-SEP-10

using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile backupset restore

channel ORA_DISK_1: specifying datafile(s) to restore from backup set

restoring datafile 00001 to /u03/oradata/test/system01.dbf

restoring datafile 00002 to /u03/oradata/test/undotbs01.dbf

restoring datafile 00003 to /u03/oradata/test/sysaux01.dbf

restoring datafile 00004 to /u03/oradata/test/users01.dbf

channel ORA_DISK_1: reading from backup piece /u02/rman/testdb_20100919_0rlo9utn_1_1

channel ORA_DISK_1: restored backup piece 1

piece handle=/u02/rman/testdb_20100919_0rlo9utn_1_1 tag=TAG20100919T152439

channel ORA_DISK_1: restore complete, elapsed time: 00:00:36

Finished restore at 19-SEP-10

datafile 1 switched to datafile copy

input datafile copy recid=5 stamp=730143305 filename=/u03/oradata/test/system01.dbf

datafile 2 switched to datafile copy

input datafile copy recid=6 stamp=730143305 filename=/u03/oradata/test/undotbs01.dbf

datafile 3 switched to datafile copy

input datafile copy recid=7 stamp=730143305 filename=/u03/oradata/test/sysaux01.dbf

datafile 4 switched to datafile copy

input datafile copy recid=8 stamp=730143305 filename=/u03/oradata/test/users01.dbf

RMAN> alter database mount;

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of alter db command at 09/19/2010 17:35:25

ORA-01100: database already mounted

RMAN> recover database;

Starting recover at 19-SEP-10

using channel ORA_DISK_1

starting media recovery

archive log thread 1 sequence 43 is already on disk as file /u01/arclog/1_43_729861888.dbf

archive log thread 1 sequence 44 is already on disk as file /u01/arclog/1_44_729861888.dbf

archive log filename=/u01/arclog/1_43_729861888.dbf thread=1 sequence=43

archive log filename=/u01/arclog/1_44_729861888.dbf thread=1 sequence=44

unable to find archive log

archive log thread=1 sequence=45

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of recover command at 09/19/2010 17:36:40

RMAN-06054: media recovery requesting unknown log: thread 1 seq 45 lowscn 500916

RMAN> alter database open resetlogs;

database opened

RMAN> exit

Recovery Manager complete.

5)到此為至,數(shù)據(jù)文件,以及初始化參數(shù)文件,控制文件已經(jīng)恢復(fù)完畢,但控制文件還是保存在以前記錄的目錄里,以及redo,temp文件,下面是這幾個(gè)文件的恢復(fù)過程:

[oracle@sdb ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Sun Sep 19 17:37:44 2010

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

A.查看當(dāng)前日志的狀態(tài)

SQL> select group#,status from v$log;

刪除不在使用的歸檔日志,然后再添加回去

SQL> alter database drop logfile group 2;

SQL> alter database add logfile group 2 '/u03/oradata/test/redo02.log' size 50m;

SQL> alter database drop logfile group 3;

SQL> alter database add logfile group 3 '/u03/oradata/test/redo03.log' size 50m;

下面刪除歸檔1的時(shí)候要注意,必須將其狀態(tài)切換變?yōu)镮NACTIVE的時(shí)候,才可以刪除歸檔1,否則會提示當(dāng)前的還沒有歸檔完

SQL> select group#,status from v$log;

SQL> alter system archive log current;

SQL> select group#,status from v$log;

SQL> alter system archive log current;

SQL> select group#,status from v$log;

SQL> alter system archive log current;

SQL> select group#,status from v$log;

SQL> alter system archive log current;

SQL> select group#,status from v$log;

SQL> alter database drop logfile group 1;

SQL> alter database add logfile group 1 '/u03/oradata/test/redo01.log' size 50m;

SQL> select * from v$logfile;

看上面的信息redo聯(lián)機(jī)日志恢復(fù)成功

B.恢復(fù)controlfile文件

SQL> create pfile='/home/oracle/inittest.ora' from spfile;    --先備份spfile 

SQL> shutdown immediate;

[oracle@sdb ~]$ vim inittest.ora   --加顏色的地方,就是要修改的地方,像*dump_dest目錄也可以根據(jù)需要進(jìn)行修改,還有歸檔目錄

test.__db_cache_size=75497472

test.__java_pool_size=4194304

test.__large_pool_size=4194304

test.__shared_pool_size=79691776

test.__streams_pool_size=0

*.audit_file_dest='/u01/app/oracle/admin/test/adump'

*.background_dump_dest='/u01/app/oracle/admin/test/bdump'

*.compatible='10.2.0.3.0'

*.control_files='/u03/oradata/test/control01.ctl','/u03/oradata/test/control02.ctl','/u03/oradata/test/control03.ctl'#Restore Controlfile

*.core_dump_dest='/u01/app/oracle/admin/test/cdump'

*.db_block_size=8192

*.db_domain=''

*.db_file_multiblock_read_count=16

*.db_name='test'

*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'

*.db_recovery_file_dest_size=2147483648

*.dispatchers='(PROTOCOL=TCP) (SERVICE=testXDB)'

*.job_queue_processes=10

*.log_archive_dest_1='LOCATION=/u03/arclog'

*.log_archive_format='%t_%s_%r.dbf'

*.open_cursors=300

*.pga_aggregate_target=16777216

*.processes=100

*.remote_login_passwordfile='EXCLUSIVE'

*.sessions=115

*.sga_target=167772160

*.undo_management='AUTO'

*.undo_tablespace='UNDOTBS1'

*.user_dump_dest='/u01/app/oracle/admin/test/udump'

 [oracle@sdb ~]$ sqlplus / as sysdba

 SQL> startup nomount pfile='/home/oracle/inittest.ora';

[oracle@sdb ~]$ cd /u01/app/oracle/oradata/test/

下面是重點(diǎn),一定要將控制文件拷貝到恢復(fù)后相應(yīng)的目錄里

[oracle@sdb test]$ cp ./control* /u03/oradata/test/

[oracle@sdb test]$ sqlplus / as sysdba

SQL> alter database mount;

SQL> alter database open;

SQL> create spfile from pfile;

create spfile from pfile

ERROR at line 1:

ORA-01078: failure in processing system parameters

LRM-00109: could not open parameter file

'/u01/app/oracle/10g/db_1/dbs/inittest.ora'

出現(xiàn)上面的錯誤原因是:在$ORACLE_HOME/dbs目錄下沒有找到pfile文件,將之前在/home/oracle/inittest.ora文件拷貝過去,再執(zhí)行

SQL> create spfile from pfile;

C.修改temp文件:

先將數(shù)據(jù)文件離線,再修改名以及路徑,最后讓數(shù)據(jù)文件在線

SQL> alter database tempfile '/u01/app/oracle/oradata/test/temp01.dbf' offline;

SQL> host cp /u01/app/oracle/oradata/test/temp01.dbf /u03/oradata/test/temp01.dbf;

SQL> alter database rename file '/u01/app/oracle/oradata/test/temp01.dbf' to '/u03/oradata/test/temp01.dbf';

SQL> alter database tempfile '/u03/oradata/test/temp01.dbf' online;

5)檢查恢復(fù)的整體情況,當(dāng)然也可以再進(jìn)行下歸檔的恢復(fù)

SQL> shutdown immediate;

SQL> startup;

SQL> select name from v$datafile;

SQL> select group#,member from v$logfile;

SQL> select name from v$controlfile;

“怎么利用RMAN恢復(fù)整個(gè)數(shù)據(jù)庫”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

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

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

AI