rman恢复案例

rman恢复案例
rman恢复案例

ORACLE恢复方案

ORACLE RESTORE SCHEME

第一章. 理解什么是数据库恢复

当我们使用一个数据库时,总希望数据库的内容是可靠的、正确的,但由于计算机系统的故障(硬件故障、软件故障、网络故障、进程故障和系统故障)影响数据库系统的操作,影响数据库中数据的正确性,甚至破坏数据库,使数据库中全部或部分数据丢失。因此当发生上述故障后,希望能重构这个完整的数据库,该处理称为数据库恢复。恢复过程大致可以分为复原(Restore)与恢复(Restore)过程。

数据库恢复可以分为以下两类:

1.1实例故障的一致性恢复

当实例意外地(如掉电、后台进程故障等)或预料地(发出SHUTDOUM ABORT语句)中止时出现实例故障,此时需要实例恢复。实例恢复将数据库恢复到故障之前的事务一致状态。如果在在线后备发现实例故障,则需介质恢复。在其它情况ORACLE在下次数据库起动时(对新实例装配和打开),自动地执行实例恢复。如果需要,从装配状态变为打开状态,自动地激发实例恢复,由下列处理:

(1)为了解恢复数据文件中没有记录的数据,进行向前滚。该数据记录在在线日志,包括对回滚段的内容恢复。

(2)回滚未提交的事务,按步1重新生成回滚段所指定的操作。

(3)释放在故障时正在处理事务所持有的资源。

(4)解决在故障时正经历一阶段提交的任何悬而未决的分布事务。

1.2介质故障或文件错误的不一致恢复

介质故障是当一个文件、一个文件的部分或磁盘不能读或不能写时出现的故障。

文件错误一般指意外的错误导致文件被删除或意外事故导致文件的不一致。

这种状态下的数据库都是不一致的,需要DBA手工来进行数据库的恢复,这种恢复有两种形式,决定于数据库运行的归档方式和备份方式。

(1)完全介质恢复可恢复全部丢失的修改。一般情况下需要有数据库的备份且数据库运行在归档状态下并且有可用归档日志时才可能。对于不同类型的错误,有不同类型的完全恢复可使用,其决定于毁坏文件和数据库的可用性。

(2)不完全介质恢复是在完全介质恢复不可能或不要求时进行的介质恢复。重构受损的数据库,使其恢复介质故障前或用户出错之前的一个事务一致性状态。不完全介质恢复有不同类型的使用,决定于需要不完全介质恢复的情况,有下列类型:基于撤消、基于时间和基于修改的不完全恢复。

基于撤消(CANCEL)恢复:在某种情况,不完全介质恢复必须被控制,DBA可撤消在指定点的操作。基于撤消的恢复地在一个或多个日志组(在线的或归档的)已被介质故障所破坏,不能用于恢复过程时使用,所以介质恢复必须控制,以致在使用最近的、未损的日

志组于数据文件后中止恢复操作。

基于时间(TIME)和基于修改(SCN)的恢复:如果DBA希望恢复到过去的某个指定点,是一种理想的不完全介质恢复,一般发生在恢复到某个特定操作之前,恢复到如意外删除某个数据表之前。

第二章.数据库恢复案例测试环境

2.1 数据库环境

以下的所有案例都是通过测试经过,环境为:

OS:Windows 2000 Server

DB:Oracle 816

DBNAME:TEST

数据文件:

SQL> select file#,status,enabled,name from v$datafile;

FILE# STA TUS ENABLED NAME

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

1 SYSTEM READ WRITE D:\ORACLE\ORADATA\TEST\SYSTEM01.DBF

2 ONLINE READ WRITE D:\ORACLE\ORADATA\TEST\RBS01.DBF

3 ONLINE READ WRITE D:\ORACLE\ORADATA\TEST\USERS01.DBF

4 ONLINE READ WRITE D:\ORACLE\ORADATA\TEST\TEMP01.DBF

5 ONLINE READ WRITE D:\ORACLE\ORADATA\TEST\TOOLS01.DBF

6 ONLINE READ WRITE D:\ORACLE\ORADATA\TEST\INDX01.DBF

控制文件:

SQL> select * from v$controlfile;

STATUS NAME

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

D:\ORACLE\ORADA TA\TEST\CONTROL01.CTL

D:\ORACLE\ORADA TA\TEST\CONTROL02.CTL

D:\ORACLE\ORADA TA\TEST\CONTROL03.CTL

联机日志:

SQL> select * from v$logfile;

GROUP# STA TUS MEMBER

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

1 STALE D:\ORACLE\ORADA TA\TEST\REDO01.LOG

2 D:\ORACLE\ORADATA\TEST\REDO02.LOG

3 STALE D:\ORACLE\ORADA TA\TEST\REDO03.LOG

2.2 数据库备份脚本

冷备份脚本

rem script:coldbak.sql

rem creater:chenjiping

rem date:5.8.2003

rem desc:offline full backup database

--connect database

connect internal/password;

--shutdown database

shutdown immediate;

--Copy Data file

!xcopy d:\oracle\oradata\test\*.dbf d:\database/H/R;

--Copy Control file

!xcopy d:\oracle\oradata\test\*.ctl d:\database/H/R;

--Copy Log file

!xcopy d:\oracle\oradata\test\*.log d:\database/H/R;

--startup database

startup;

说明:

1、以上脚本在数据库关闭状态下备份数据库所有的数据文件,联机日志,控制文件(在一个目录下),如果成功备份,所有文件是一致的。

2、没有备份参数文件,参数文件可以另外备份,没有必要每次都备份,只需要在改变设置后备份一次。

3、如果以上命令没有成功依次执行,那么备份将是无效的,如连接数据库不成功,那么肯定关闭数据库也不成功,那么备份则无效

4、冷备份建议下人工干预下执行。

数据库OS热全备份脚本

rem script:hotbak.sql

rem creater:chenjiping

rem date:5.8.2003

rem desc:backup all database datafile in archive

--connect database

connect internal/password;

--archive

alter system archive log current;

--start

alter tablespace system begin backup;

!xcopy d:\oracle\oradata\test\system01.dbf d:\databak/H/R;

alter tablespace system end backup;

alter tablespace rbs begin backup;

!xcopy d:\oracle\oradata\test\rbs01.dbf d:\databak/H/R;

alter tablespace rbs end backup;

alter tablespace users begin backup;

!xcopy d:\oracle\oradata\test\users01.dbf d:\databak/H/R;

alter tablespace users end backup;

alter tablespace tools begin backup;

!xcopy d:\oracle\oradata\test\tools01.dbf d:\databak/H/R;

alter tablespace tools end backup;

alter tablespace indx begin backup;

!xcopy d:\oracle\oradata\test\indx01.dbf d:\databak/H/R;

alter tablespace indx end backup;

--end

--bak control file

--binary

alter database backup controlfile to 'd:\databak\controlbinbak.000';

--ascii

alter database backup controlfile to trace;

alter system archive log current;

说明:

1、热备份必须在数据库归档方式下才可以运行

2、以上脚本可以在数据库运行状态下备份数据库所有的数据文件(除了临时数据文件),没有必要备份联机日志。

3、归档日志至少需要一次完整备份之后的所有日志。

4、如果以上命令没有成功依次执行,那么备份也是无效的,如连接数据库不成功,那么备份则无效

RMAN备份只讲叙有恢复目录的情况,如果没有恢复目录,情形大致相似。以下是RMAN的热备份全备份的脚本:

# script:bakup.rcv

# creater:chenjiping

# date:5.8.2003

# desc:backup all database datafile in archive with rman

# connect database

connect rcvcat rman/rman@back;

connect target internal/virpure;

# start backup database

run{

allocate channel c1 type disk;

backup full tag 'dbfull' format 'd:\backup\full%u_%s_%p' database

include current controlfile;

sql 'alter system archive log current';

release channel c1;

}

# end

说明:

1、数据库必须运行在归档模式下

2、RMAN将自动备份数据文件,运行可靠

3、归档日志另外备份处理,但至少需要保存一次备份来的日志

4、不要用RMAN做冷备份,效果不好

以上举例说明了数据库的恢复案例的测试环境与部分备份测试脚本,其它的备份脚本可以根据以上脚本演变而来或在案例中加以说明。

数据库的自动实例将不加以说明,这里只举例说明媒体错误或人为错误造成的恢复可能。

以上包括以下案例都是在WINDOWS+ORACLE816上测试验证的,在不同的操作系统与不同的数据库版本中略有差别。

第三章. 了解与恢复相关的信息

1、理解报警日志文件

报警日志文件一般记载了数据库的启动/关闭信息,归档信息,备份信息,恢复信息,常见错误信息,部分数据库修改记录等。一般令名规则为Alrt.log,如我的测试数据库的报警日志文件的名称为testalrt.log。

报警日志文件的路径是根据初始化参数background_dump_dest来决定的,如在我的机器上,该参数值为D:\Oracle\admin\test\bdump,那么,你就可以在该路径下找到该文件

2、后台进程跟踪文件

后台进程跟踪文件的路径与报警日志文件的路径一致,在某些情况下,你可以通过后台跟踪文件的信息了解更多的需要恢复的信息。如在数据库需要恢复的时候,报警日志文件中常有这样的语句:

Errors in file D:\Oracle\admin\test\bdump\testDBW0.TRC:

ORA-01157: cannot identify/lock data file 1 - see DBWR trace file

通过提示的DBWR跟踪文件,可以查询到更详细的信息。

3、v$recover_file与v$recovery_log

这是两个动态性能视图,可以在mount下查看,通过这两个视图,你可以了解详细的需要恢复的数据文件与需要使用到的归档日志。

第四章. 数据库恢复案例

4.1非归档模式下的备份与恢复

备份方案:采用OS冷备份

1.连接数据库并创建表

SQL*Plus: Release 8.1.6.0.0 - Production on Tue May 6 13:46:32 2003

(c) Copyright 1999 Oracle Corporation. All rights reserved.

SQL> connect internal/password as sysdba;

Connected.

SQL> create table test(a int);

Table created

SQL> insert into test values(1);

1 row inserted

SQL> commit;

Commit complete

2.备份数据库

SQL> @coldbak.sql 或在DOS下svrmgrl @coldbak.sql

3.再插入记录

SQL> insert into test values(2);

1 row inserted

SQL> commit;

Commit complete

SQL> select * from test;

A

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

1

2

4.关闭数据库

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

5.毁坏一个或多个数据文件,如删除user01.dbf

C:\>del D:\ORACLE\ORADATA\TEST\USERS01.DBF

模拟媒体毁坏

6.重新启动数据库,会发现如下错误

SQL> startup

ORACLE instance started.

Total System Global Area 102020364 bytes

Fixed Size 70924 bytes

Variable Size 85487616 bytes

Database Buffers 16384000 bytes

Redo Buffers 77824 bytes

Database mounted.

ORA-01157: cannot identify/lock data file 3 - see DBWR trace file

ORA-01110: data file 3: 'D:\ORACLE\ORADATA\TEST\USERS01.DBF'

在报警文件中,会有更详细的信息

Errors in file D:\Oracle\admin\test\bdump\testDBW0.TRC:

ORA-01157: cannot identify/lock data file 3 - see DBWR trace file

ORA-01110: data file 3: 'D:\ORACLE\ORADA TA\TEST\USERS01.DBF'

ORA-27041: unable to open file

OSD-04002: unable to open file

O/S-Error: (OS 2) 系统找不到指定的文件。

7.拷贝备份复原到原来位置(restore过程)

C:\>xcopy d:\database\*.* d:\oracle\oradata\test/H/R/S

8.打开数据库,检查数据

SQL> alter database open;

Database altered.

SQL> select * from test;

A

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

1

这里可以发现,数据库恢复成功,但在备份之后与崩溃之前的数据丢失了。

说明:

1、非归档模式下的恢复方案可选性很小,一般情况下只能有一种恢复方式,就是数据库的冷备份的完全恢复,仅仅需要拷贝原来的备份就可以(restore),不需要recover。

2、这种情况下的恢复,可以完全恢复到备份的点上,但是可能是丢失数据的,在备份之后与崩溃之前的数据将全部丢失。

3、不管毁坏了多少数据文件或是联机日志或是控制文件,都可以通过这个办法恢复,因为这个恢复过程是Restore所有的冷备份文件,而这个备份点上的所有文件是一致的,与最新的数据库没有关系,就好比把数据库又放到了一个以前的“点”上。

4、对于非归档模式下,最好的办法就是采用OS的冷备份,建议不要用RMAN来作冷备份,效果不好,因为RMAN不备份联机日志,restore不能根本解决问题。

4.2归档模式下丢失或损坏一个数据文件

4.2.1 OS备份方案

在归档方式下损坏或丢失一个数据文件,如果存在相应的备份与该备份以来的归档日志,恢复还是比较简单的,可以作到尽量少的Down机时间,并能作到数据库的完全恢复。

1、连接数据库,创建测试表并插入记录

SQL*Plus: Release 8.1.6.0.0 - Production on Tue May 6 13:46:32 2003

(c) Copyright 1999 Oracle Corporation. All rights reserved.

SQL> connect internal/password as sysdba;

Connected.

SQL> create table test(a int) tablespace users;

Table created

SQL> insert into test values(1);

1 row inserted

SQL> commit;

Commit complete

2、备份数据库

SQL> alter system switch logfile;

System altered.

SQL> alter system switch logfile;

System altered.

SQL> @hotbak.sql 或在DOS下svrmgrl @hotbak.sql

3、继续在测试表中插入记录

SQL> insert into test values(2);

1 row inserted

SQL> commit;

Commit complete

SQL> select * from test;

A

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

1

2

4、关闭数据库,模拟丢失数据文件

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down

C:\>del D:\ORACLE\ORADATA\TEST\USERS01.DBF

模拟媒体毁坏

5、启动数据库错误,脱机该数据文件

SQL> startup

ORACLE instance started.

Total System Global Area 102020364 bytes

Fixed Size 70924 bytes

Variable Size 85487616 bytes

Database Buffers 16384000 bytes

Redo Buffers 77824 bytes

Database mounted.

ORA-01157: cannot identify/lock data file 3 - see DBWR trace file

ORA-01110: data file 3: 'D:\ORACLE\ORADA TA\TEST\USERS01.DBF'

还可以查看报警文件(见上一个恢复案例)或动态视图v$recover_file

如SQL> select * from v$recover_file;

FILE# ONLINE ERROR CHANGE# TIME

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

3 ONLINE 1013500 2003-05-07

脱机数据文件

SQL> alter database datafile 3 offline drop;

Database altered.

6、打开数据库,拷贝备份回来(restore),恢复(recover)该数据文件,并联机

SQL> alter database open;

Database altered.

拷贝备份从备份处

copy d:\databak\ users01.dbf d:\oracle\oradata\test;

恢复该数据文件

SQL> recover datafile 3;

ORA-00279: change 1053698 generated at 05/07/2003 17:51:26 needed for thread 1

ORA-00289: suggestion : D:\ORACLE\ORADATA\TEST\ARCHIVE\TESTT001S00304.ARC ORA-00280: change 1053698 for thread 1 is in sequence #304

Specify log: {=suggested | filename | AUTO | CANCEL}

AUTO

ORA-00279: change 1053701 generated at 05/07/2003 17:51:39 needed for thread 1

ORA-00289: suggestion : D:\ORACLE\ORADATA\TEST\ARCHIVE\TESTT001S00305.ARC ORA-00280: change 1053701 for thread 1 is in sequence #305

ORA-00278: log file 'D:\ORACLE\ORADATA\TEST\ARCHIVE\TESTT001S00304.ARC' no longer needed for this recovery

Media recovery complete.

恢复成功,联机该数据文件

SQL> alter database datafile 3 online;

Database altered.

7、检查数据库的数据(完全恢复)

SQL> select * from test;

A

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

1

2

说明:

1、采用热备份,需要运行在归档模式下,可以实现数据库的完全恢复,也就是说,从备份后到数据库崩溃时的数据都不会丢失。

2、可以采用全备份数据库的方式备份,对于特殊情况,也可以只备份特定的数据文件,如只备份用户表空间(一般情况下对于某些写特别频繁的数据文件,可以单独加大备份频率)

3、如果在恢复过程中,发现损坏的是多个数据文件,即可以采用一个一个数据文件的恢复方法(第5步中需要对数据文件一一脱机,第6步中需要对数据文件分别恢复),也可以采用整个数据库的恢复方法。

4、如果是系统表空间的损坏,不能采用此方法

4.2.2 RMAN备份方案

RMAN也可以进行联机备份,而且备份与恢复方法将比OS备份更简单可靠。

1、连接数据库,创建测试表并插入记录

SQL*Plus: Release 8.1.6.0.0 - Production on Tue May 6 13:46:32 2003

(c) Copyright 1999 Oracle Corporation. All rights reserved.

SQL> connect internal/password as sysdba;

Connected.

SQL> create table test(a int) tablespace users;

Table created

SQL> insert into test values(1);

1 row inserted

SQL> commit;

Commit complete

2、备份数据库表空间users

SQL> alter system switch logfile;

System altered.

SQL>r

1* alter system switch logfile;

System altered.

Recovery Manager: Release 8.1.6.0.0 - Production

RMAN> connect rcvcat rman/rman@back

RMAN-06008: connected to recovery catalog database

RMAN> connect target internal/virpure

RMAN-06005: connected to target database: TEST (DBID=1788174720)

RMAN> run{

2> allocate channel c1 type disk;

3> backup tag 'tsuser' format 'd:\backup\tsuser_%u_%s_%p'

4> tablespace users;

5> release channel c1;

6> }

RMAN-03022: compiling command: allocate

RMAN-03023: executing command: allocate

RMAN-08030: allocated channel: c1

RMAN-08500: channel c1: sid=16 devtype=DISK

RMAN-03022: compiling command: backup

RMAN-03025: performing implicit partial resync of recovery catalog

RMAN-03023: executing command: partial resync

RMAN-08003: starting partial resync of recovery catalog

RMAN-08005: partial resync complete

RMAN-03023: executing command: backup

RMAN-08008: channel c1: starting full datafile backupset

RMAN-08502: set_count=5 set_stamp=494177612 creation_time=16-MAY-03

RMAN-08010: channel c1: specifying datafile(s) in backupset

RMAN-08522: input datafile fno=00003 name=D:\ORACLE\ORADA TA\TEST\USER01.DBF RMAN-08013: channel c1: piece 1 created

RMAN-08503: piece handle=D:\BACKUP\TSUSER_05EN93AC_5_1 comment=NONE RMAN-08525: backup set complete, elapsed time: 00:00:01

RMAN-03023: executing command: partial resync

RMAN-08003: starting partial resync of recovery catalog

RMAN-08005: partial resync complete

RMAN-03022: compiling command: release

RMAN-03023: executing command: release

RMAN-08031: released channel: c1

RMAN>

3、继续在测试表中插入记录

SQL> insert into test values(2);

1 row inserted

SQL> commit;

Commit complete

SQL> select * from test;

A

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

1

2

4、关闭数据库,模拟丢失数据文件

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down

C:\>del D:\ORACLE\ORADATA\TEST\USER01.DBF

5、启动数据库,检查错误

SQL> startup

ORACLE instance started.

Total System Global Area 102020364 bytes

Fixed Size 70924 bytes

Variable Size 85487616 bytes

Database Buffers 16384000 bytes

Redo Buffers 77824 bytes

Database mounted.

ORA-01157: cannot identify/lock data file 3 - see DBWR trace file ORA-01110: data file 3: 'D:\ORACLE\ORADA TA\TEST\USER01.DBF'

6、先打开数据库

SQL> alter database datafile 3 offline drop;

Database altered.

SQL> alter database open;

Database altered.

7、恢复该表空间

恢复脚本可以是恢复单个数据文件

run{

allocate channel c1 type disk;

restore datafile 3;

recover datafile 3;

sql 'alter database datafile 3 online';

release channel c1;

}

也可以是,恢复表空间

run{

allocate channel c1 type disk;

restore tablespace users;

recover tablespace users;

sql 'alter database datafile 3 online';

release channel c1;

}

过程如下:

C:\>rman

Recovery Manager: Release 8.1.6.0.0 - Production

RMAN> connect rcvcat rman/rman@back

RMAN-06008: connected to recovery catalog database

RMAN> connect target internal/virpure

RMAN-06005: connected to target database: TEST (DBID=1788174720)

RMAN> run{

2> allocate channel c1 type disk;

3> restore datafile 3;

4> recover datafile 3;

5> sql 'alter database datafile 3 online';

6> release channel c1;

7> }

RMAN-03022: compiling command: allocate

RMAN-03023: executing command: allocate

RMAN-08030: allocated channel: c1

RMAN-08500: channel c1: sid=13 devtype=DISK

RMAN-03022: compiling command: restore

RMAN-03022: compiling command: IRESTORE

RMAN-03023: executing command: IRESTORE

RMAN-08016: channel c1: starting datafile backupset restore

RMAN-08502: set_count=5 set_stamp=494177612 creation_time=16-MAY-03

RMAN-08089: channel c1: specifying datafile(s) to restore from backup set

RMAN-08523: restoring datafile 00003 to D:\ORACLE\ORADATA\TEST\USER01.DBF RMAN-08023: channel c1: restored backup piece 1

RMAN-08511: piece handle=D:\BACKUP\TSUSER_05EN93AC_5_1 tag=TSUSER params=NULL

RMAN-08024: channel c1: restore complete

RMAN-03023: executing command: partial resync

RMAN-08003: starting partial resync of recovery catalog

RMAN-08005: partial resync complete

RMAN-03022: compiling command: recover

RMAN-03022: compiling command: recover(1)

RMAN-03022: compiling command: recover(2)

RMAN-03022: compiling command: recover(3)

RMAN-03023: executing command: recover(3)

RMAN-08054: starting media recovery

RMAN-03022: compiling command: recover(4)

RMAN-06050: archivelog thread 1 sequence 332 is already on disk as file D:\ORACLE\ORADA TA\TEST\ARCHIVE\TESTT001S00332.ARC

RMAN-06050: archivelog thread 1 sequence 333 is already on disk as file D:\ORACLE\ORADA TA\TEST\ARCHIVE\TESTT001S00333.ARC

RMAN-06050: archivelog thread 1 sequence 334 is already on disk as file D:\ORACLE\ORADA TA\TEST\ARCHIVE\TESTT001S00334.ARC

RMAN-03023: executing command: recover(4)

RMAN-08515: archivelog filename=D:\ORACLE\ORADA TA\TEST\ARCHIVE\TESTT001S00332.ARC thread=1 sequence=332

RMAN-08055: media recovery complete

RMAN-03022: compiling command: sql

RMAN-06162: sql statement: alter database datafile 3 online

RMAN-03023: executing command: sql

RMAN-03022: compiling command: release

RMAN-03023: executing command: release

RMAN-08031: released channel: c1

RMAN>

8、检查数据是否完整

SQL> alter database open;

Database altered.

SQL> select * from test;

A

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

1

2

说明:

1、RMAN也可以实现单个表空间或数据文件的恢复,恢复过程可以在mount下或open方式下,如果在open方式下恢复,可以减少down机时间

2、如果损坏的是一个数据文件,建议offline并在open方式下恢复

3、这里可以看到,RMAN进行数据文件与表空间恢复的时候,代码都比较简单,建议采用RMAN的备份与恢复

4.3丢失多个数据文件,实现整个数据库的恢复4.3.1 OS备份方案

OS备份归档模式下损坏(丢失)多个数据文件,进行整个数据库的恢复1、连接数据库,创建测试表并插入记录

SQL*Plus: Release 8.1.6.0.0 - Production on Tue May 6 13:46:32 2003 (c) Copyright 1999 Oracle Corporation. All rights reserved.

SQL> connect internal/password as sysdba;

Connected.

SQL> create table test(a int);

Table created

SQL> insert into test values(1);

1 row inserted

SQL> commit;

Commit complete

2、备份数据库,备份除临时数据文件后的所数据文件

SQL> alter system switch logfile;

System altered.

SQL> alter system switch logfile;

System altered.

SQL> @hotbak.sql 或在DOS下svrmgrl @hotbak.sql

3、继续在测试表中插入记录

SQL> insert into test values(2);

1 row inserted

SQL> commit;

Commit complete

SQL> select * from test;

A

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

1

2

4、关闭数据库,模拟丢失数据文件

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down

C:\>del D:\ORACLE\ORADATA\TEST\SYSTEM01.DBF

C:\>del D:\ORACLE\ORADATA\TEST\INDX01.DBF

C:\>del D:\ORACLE\ORADATA\TEST\TOOLS01.DBF

C:\>del D:\ORACLE\ORADATA\TEST\RBS01.DBF

模拟媒体毁坏(这里删除多个数据文件)

5、启动数据库,检查错误

SQL> STARTUP

ORACLE instance started.

Total System Global Area 102020364 bytes

Fixed Size 70924 bytes

Variable Size 85487616 bytes

Database Buffers 16384000 bytes

Redo Buffers 77824 bytes

Database mounted.

ORA-01157: cannot identify/lock data file 1 - see DBWR trace file

ORA-01110: data file 1: 'D:\ORACLE\ORADA TA\TEST\SYSTEM01.DBF'

详细信息可以查看报警文件

ORA-1157 signalled during: ALTER DATABASE OPEN...

Thu May 08 09:39:36 2003

Errors in file D:\Oracle\admin\test\bdump\testDBW0.TRC:

ORA-01157: cannot identify/lock data file 1 - see DBWR trace file

ORA-01110: data file 1: 'D:\ORACLE\ORADA TA\TEST\SYSTEM01.DBF' ORA-27041: unable to open file

OSD-04002: unable to open file

O/S-Error: (OS 2) 系统找不到指定的文件。

Thu May 08 09:39:36 2003

Errors in file D:\Oracle\admin\test\bdump\testDBW0.TRC:

ORA-01157: cannot identify/lock data file 2 - see DBWR trace file

ORA-01110: data file 2: 'D:\ORACLE\ORADA TA\TEST\RBS01.DBF' ORA-27041: unable to open file

OSD-04002: unable to open file

O/S-Error: (OS 2) 系统找不到指定的文件。

Thu May 08 09:39:36 2003

Errors in file D:\Oracle\admin\test\bdump\testDBW0.TRC:

ORA-01157: cannot identify/lock data file 5 - see DBWR trace file

ORA-01110: data file 5: 'D:\ORACLE\ORADA TA\TEST\TOOLS01.DBF' ORA-27041: unable to open file

OSD-04002: unable to open file

O/S-Error: (OS 2) 系统找不到指定的文件。

Thu May 08 09:39:36 2003

Errors in file D:\Oracle\admin\test\bdump\testDBW0.TRC:

ORA-01157: cannot identify/lock data file 6 - see DBWR trace file

ORA-01110: data file 6: 'D:\ORACLE\ORADA TA\TEST\INDX01.DBF'

ORA-27041: unable to open file

OSD-04002: unable to open file

O/S-Error: (OS 2) 系统找不到指定的文件。

通过查询v$recover_file可以看到

SQL> select * from v$recover_file;

FILE# ONLINE ERROR CHANGE# TIME

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

1 ONLINE FILE NOT FOUND 0

2 ONLINE FILE NOT FOUND 0

5 ONLINE FILE NOT FOUND 0

6 ONLINE FILE NOT FOUND 0

有四个数据文件需要恢复

6、拷贝备份回到原地点(restore),开始恢复数据库(recover)

restore:

C:\>copy D:\DATABAK\SYSTEM01.DBF D:\ORACLE\ORADATA\TEST\

C:\>copy D:\DATABAK\TEST\INDX01.DBF D:\ORACLE\ORADATA\TEST\

C:\>copy D:\DATABAK\TEST\TOOLS01.DBF D:\ORACLE\ORADA TA\TEST\

C:\>copy D:\DATABAK\TEST\RBS01.DBF.DBF D:\ORACLE\ORADATA\TEST\

Recover:

SQL> recover database;

ORA-00279: change 1073849 generated at 05/08/2003 08:58:35 needed for thread 1

ORA-00289: suggestion : D:\ORACLE\ORADATA\TEST\ARCHIVE\TESTT001S00311.ARC ORA-00280: change 1073849 for thread 1 is in sequence #311

Specify log: {=suggested | filename | AUTO | CANCEL}

auto

ORA-00279: change 1073856 generated at 05/08/2003 09:03:27 needed for thread 1

ORA-00289: suggestion : D:\ORACLE\ORADATA\TEST\ARCHIVE\TESTT001S00312.ARC ORA-00280: change 1073856 for thread 1 is in sequence #312

ORA-00278: log file 'D:\ORACLE\ORADATA\TEST\ARCHIVE\TESTT001S00311.ARC' no longer needed for this recovery

ORA-00279: change 1073858 generated at 05/08/2003 09:11:43 needed for thread 1

ORA-00289: suggestion : D:\ORACLE\ORADATA\TEST\ARCHIVE\TESTT001S00313.ARC ORA-00280: change 1073858 for thread 1 is in sequence #313

ORA-00278: log file 'D:\ORACLE\ORADATA\TEST\ARCHIVE\TESTT001S00312.ARC' no

longer needed for this recovery

ORA-00279: change 1073870 generated at 05/08/2003 09:11:46 needed for thread 1

ORA-00289: suggestion : D:\ORACLE\ORADATA\TEST\ARCHIVE\TESTT001S00314.ARC ORA-00280: change 1073870 for thread 1 is in sequence #314

ORA-00278: log file 'D:\ORACLE\ORADATA\TEST\ARCHIVE\TESTT001S00313.ARC' no longer needed for this recovery

Log applied.

Media recovery complete.

7、打开数据库,检查数据库的数据(完全恢复)

SQL> alter database open;

Database altered.

SQL> select * from test;

A

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

1

2

说明:

1、只要有备份与归档存在,就可以实现数据库的完全恢复(不丢失数据)

2、适合于丢失大量数据文件,或包含系统数据文件在内的数据库的恢复

3、恢复过程在mount下进行,如果恢复成功,再打开数据库,down机时间可能比较长一些。

4.3.2 RMAN备份方案

RMAN备份归档模式下损坏(丢失)多个数据文件,进行整个数据库的恢复

1、连接数据库,创建测试表并插入记录

SQL*Plus: Release 8.1.6.0.0 - Production on Tue May 6 13:46:32 2003

(c) Copyright 1999 Oracle Corporation. All rights reserved.

SQL> connect internal/password as sysdba;

Connected.

SQL> create table test(a int);

Table created

SQL> insert into test values(1);

1 row inserted

SQL> commit;

Commit complete

2、备份数据库

SQL> alter system switch logfile;

System altered.

SQL> alter system switch logfile;

System altered.

DOS下C:>\ rman cmdfile=bakup.rcv msglog=backup.log;

以下是backup.log内容。

Recovery Manager: Release 8.1.6.0.0 - Production

RMAN> # script:bakup.rcv

2> # creater:chenjiping

3> # date:5.8.2003

4> # desc:backup all database datafile in archive with rman

5>

6> #connect database

7> connect rcvcat rman/rman@back;

8> connect target internal/virpure;

9>

10> #start backup database

11> run{

12> allocate channel c1 type disk;

13> backup full tag 'dbfull' format 'd:\backup\full%u_%s_%p' database

14> include current controlfile;

15> sql 'alter system archive log current';

16> release channel c1;

17> }

18> #end

19>

RMAN-06008: connected to recovery catalog database

RMAN-06005: connected to target database: TEST (DBID=1788174720)

RMAN-03022: compiling command: allocate

RMAN-03023: executing command: allocate

RMAN-08030: allocated channel: c1

RMAN-08500: channel c1: sid=15 devtype=DISK

RMAN-03022: compiling command: backup

RMAN-03023: executing command: backup

RMAN-08008: channel c1: starting full datafile backupset

RMAN-08502: set_count=4 set_stamp=494074368 creation_time=15-MAY-03

RMAN-08010: channel c1: specifying datafile(s) in backupset

RMAN-08522: input datafile fno=00002 name=D:\ORACLE\ORADATA\TEST\RBS01.DBF

RMAN-08522: input datafile fno=00001 name=D:\ORACLE\ORADATA\TEST\SYSTEM01.DBF

RMAN-08011: including current controlfile in backupset

RMAN-08522: input datafile fno=00005 name=D:\ORACLE\ORADATA\TEST\TOOLS01.DBF

RMAN-08522: input datafile fno=00004 name=D:\ORACLE\ORADATA\TEST\TEMP01.DBF

RMAN-08522: input datafile fno=00006 name=D:\ORACLE\ORADATA\TEST\INDX01.DBF

RMAN-08522: input datafile fno=00003 name=D:\ORACLE\ORADATA\TEST\USER01.DBF

RMAN-08013: channel c1: piece 1 created

RMAN-08503: piece handle=D:\BACKUP\FULL04EN5UG0_4_1 comment=NONE

RMAN-08525: backup set complete, elapsed time: 00:01:16

RMAN-03023: executing command: partial resync

RMAN-08003: starting partial resync of recovery catalog

RMAN-08005: partial resync complete

RMAN-03022: compiling command: sql

RMAN-06162: sql statement: alter system archive log current

RMAN-03023: executing command: sql

RMAN-03022: compiling command: release

RMAN-03023: executing command: release

RMAN-08031: released channel: c1

Recovery Manager complete.

到这里表示备份成功。

3、继续在测试表中插入记录

SQL> insert into test values(2);

1 row inserted

SQL> commit;

Commit complete

SQL> select * from test;

A

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

1

2

4、关闭数据库,模拟丢失数据文件

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down

C:\>del D:\ORACLE\ORADATA\TEST\SYSTEM01.DBF

C:\>del D:\ORACLE\ORADATA\TEST\INDX01.DBF

C:\>del D:\ORACLE\ORADATA\TEST\TOOLS01.DBF

C:\>del D:\ORACLE\ORADATA\TEST\RBS01.DBF

5、启动数据库,检查错误

SQL> STARTUP

RMAN备份与恢复之完全备份和增量备份

完全备份: 完全备份是指对数据库中使用过的所有数据块进行备份,当然,没有使用过的数据块是不做备份的。在进行完全备份时,RMAN将数据文件中所有的非空白数据块都复制到备份集中。在RMAN中,可以对数据文件进行完全备份或者增量备份,但是对控制文件和日志文件只能进行完全备份。在一个完全数据库备份中,将所有的数据库文件,复制到闪回恢复区。 完全备份实例: 【例】通过BACKUP FULL语句,对数据库执行完全备份。使用TAG参数和FORMAT参数,指定备份文件位置以及备份文件的名称格式。如下: RMAN>RUN{ 2> #BACKUP THE COMPLETE DATABASE 3> ALLOCATE CHANNEL ch1 TYPE DISK; 4> BACKUP FULL 5> TAG full_db_backup FORMAT"E:\app\backup\db_t%t_s%s_p%p" (database); 6> RELEASE CHANNEL ch1; 7> } 【例】在RMAN中执行LIST命令,查看建立的备份集与备份段信息,如下: RMAN> LIST BACKUP OF DATABASE; 增量备份: 增量备份就是将那些与前一次备份相比发生变化的数据块复制到备份集中。进行增量备份时,RMAN会读取整个数据文件,通过RMAN可以为单独的数据文件、表空间、或者整个数据库进行增量备份。在RMAN中建立的增量备份可以具有不同的级别,每个级别都使用一个不小于0的整数来标识,也就是在BACKUP命令中使用LEVEL关键字指定的,例如LEVEL = 0表示备份级别为0,LEVEL = 1表示备份级别为1。 增量备份的方式:

ORACLE11G RMAN备份恢复到异机数据库

ORACLE11G RMAN备份恢复到异机数据库 1. 主数据库环境 操作系统版本 : Centos6.7 x64 数据库版本 : Oracle 11.2.0.4 x64 数据库名 : prb 数据库SID : prb db_unique_name : prb instance_name : prb IP : 10.0.8.100 2. 备库环境 操作系统版本 : Centos6.7 x64 数据库版本 : Oracle 11.2.0.4 x64 (只安装oracle数据库软件,no netca dbca) 数据库名 : prb 数据库SID : prb db_unique_name: prb instance_name : prb IP:10.0.8.101 将参数文件备份、控制文件备份、数据文件备份、以及归档备份到目标主机 1 此处实验环境为同平台,同字节序,同版本,源机器和目标机器相同的目录结构。 2 目标机器只需要安装oracle只安装oracle数据库软件,no netca dbca 3 第一次利用备份恢复测试环境,之后从源机器拷贝备份到目标机器并在控制文件中注册,再见行恢复测试。 备份数据库 backup format '/u01/prb/rmanbk/fulldb_%d_%U' database include current controlfile plus archivelog delete input; orapwd file='/u01/app/oracle/product/11.2.0.4/db_1/dbs/orapwprb' password=oracle entries=10 force=y 1rman 连接到源数据库 prd-db1-> rman target / Recovery Manager: Release 11.2.0.4.0 - Production on Wed Aug 17 19:23:27 2016 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. connected to target database: PRB (DBID=1906641159) RMAN> 2 分别列出参数文件备份,控制文件备份,数据文件备份,以及归档备份的名字 参数文件备份如下: RMAN> list backup of spfile; using target database control file instead of recovery catalog List of Backup Sets ===================

Oracle 11g 基于RMAN的备份与恢复

Oracle 11g 基于RMAN的备份与恢复 备份整个数据库 C:\Users\huangluxiang>rman target/ RMAN> backup database; RMAN> exit (退出) (1)重做日志损坏 SQL> conn /as sysdba 已连接到空闲例程。 SQL> startup mount; ORACLE 例程已经启动。 Total System Global Area 1071333376 bytes Fixed Size 1375792 bytes Variable Size 729809360 bytes Database Buffers 335544320 bytes Redo Buffers 4603904 bytes 数据库装载完毕。 SQL> recover database until cancel; 完成介质恢复。 SQL> alter database open resetlogs; 数据库已更改。 SQL> archive log list; 数据库日志模式存档模式 自动存档启用 存档终点USE_DB_RECOVERY_FILE_DEST 最早的联机日志序列 1 下一个存档日志序列 1 当前日志序列 1 备注:恢复Oracle数据库,应该备份整个数据库 (2)数据库丢失数据文件,控制文件,重做日志文件 C:\Users\huangluxiang>rman target/ RMAN> restore controlfile from autobackup; RMAN>alter database mount; RMAN> restore database; SQL> conn /as sysdba 已连接。 SQL> recover database using backup controlfile until cancel; ORA-00279: 更改990116 (在12/13/2013 14:06:05 生成) 对于线程1 是必需的 ORA-00289: 建议: C:\APP\HUANGLUXIANG\FLASH_RECOVERY_AREA\DLNU\ARCHIVELOG\2013_12_13\ O1_MF_1_5_%U_ .ARC ORA-00280: 更改990116 (用于线程1) 在序列#5 中 指定日志: {=suggested | filename | AUTO | CANCEL}

rman整库备份还原

整库丢失 1登录rman rman target / 2 备份数据库和归档文件 backup database plus archivelog all; 3 产看备份情况 list backup; 4模拟数据变化 create table test31 as select * from dba_users; alter system switch logfile; create table test32 as select * from dba_users; alter system switch logfile; create table test33 as select * from dba_users; 5删除整个数据库 cd /home/app/oracle/oradata rm –rf ora

数据库已经损坏 6根据数据库启动流程,首先恢复spfile vi initora.ora i db_name='ora' :wq -bash-4.2$ sqlplus / as sysdba shut immediate force; 还原数据库 找到备份文件 rman target / 进入rman设置dbid为备份片的id set dbid=1589493431

还原数据库 恢复控制文件 restore controlfile from autobackup; 设置数据库为mount状态 alter database mount; 恢复数据库 restore database; recover database; Starting recover at 22-MAR-18 using channel ORA_DISK_1 starting media recovery archived log for thread 1 with sequence 10 is already on disk as file /home/archivelog/1_10_971265017.dbf archived log for thread 1 with sequence 11 is already on disk as file /home/archivelog/1_11_971265017.dbf archived log file name=/home/archivelog/1_10_971265017.dbf thread=1 sequence=10 archived log file name=/home/archivelog/1_11_971265017.dbf thread=1 sequence=11 unable to find archived log

ORACLE数据备份与数据恢复方案

O R A C L E数据备份与数据恢 复方案 Prepared on 24 November 2020

摘要 结合金华电信IT系统目前正在实施的备份与恢复策略,重点介绍电信业务计算机管理系统(简称97系统)和营销支撑系统的ORALCE数据库备份和恢复方案。 Oracle数据库有三种标准的备份方法,它们分别是导出/导入 (EXP/IMP)、热备份和冷备份。要实现简单导出数据(Export)和导入数据(Import),增量导出/导入的按设定日期自动备份,可考虑,将该部分功能开发成可执行程序,然后结合操作系统整合的任务计划,实现特定时间符合备份规划的备份应用程序的运行,实现数据库的本级备份,结合ftp简单开发,实现多服务器的数据更新同步,实现数据备份的异地自动备份。 关键字:数据库远程异地集中备份 目录

一、前言 目前,数据已成为信息系统的基础核心和重要资源,同时也是各单位的宝贵财富,数据的丢失将导致直接经济损失和用户数据的丢失,严重影响对社会提供正常的服务。另一方面,随着信息技术的迅猛发展和广泛应用,业务数据还将会随业务的开展而快速增加。但由于系统故障,数据库有时可能遭到破坏,这时如何尽快恢复数据就成为当务之急。如做了备份,恢复数据就显得很容易。由此可见,做好数据库的备份至关重要。因此,建立一个满足当前和将来的数据备份需求的备份系统是必不可少的。传统的数据备份方式主要采用主机内置或外置的磁带机对数据进行冷备份,这种方式在数据量不大、操作系统种类单一、服务器数量有限的情况下,不失为一种既经济又简明的备份手段。但随着计算机规模的扩大,数据量几何级的增长以及分布式网络环境的兴起,将越来越多的业务分布在不同的机器、不同的操作平台上,这种单机的人工冷备份方式越来越不适应当今分布式网络环境。 因此迫切需要建立一个集中的、自动在线的企业级备份系统。备份的内容应当包括基于业务的业务数据,又包括IT系统中重要的日志文件、参数文件、配置文件、控制文件等。本文以ORACLE数据库为例,结合金华电信的几个相关业务系统目前正在实施的备份方案,介绍ORACLE数据库的备份与恢复。 二、金华电信ORACLE数据库的备份与恢复方案 由于金华电信IT系统以前只采用逻辑备份方式进行数据库备份,速度较慢并且数据存储管理都很分散,甚至出现备份数据不完整的现象。为了提高备份数据的效率,提供可靠的数据备份,完善备份系统,保证备份数据的完整性,降低数据备份对网络和服务器的影响,对每个IT系统的备份数据进行集中管理,我们对备份工作进行了改进,将逻辑备份与物理备份相结合,在远程建立了一个异地集中、自动在线的备份系统即网络存储管理系统。(这里用到的物理备份指热备份)其具备的主要功能如下:(1)集中式管理 :网络存储备份管理系统对整个网络的数据进行管理。利用集中式管理工具的帮助,系统管理员可对全网的备份策略进行统一管理,备份服务器可以监控所有机器的备份作业,也可以修改备份策略,并可即时浏览所有目录。所有数据可以备份到同备份服

RMAN备份及恢复

Linux下Oracle9i RMAN备份及恢复步骤介 1、切换服务器设置归档模式,如果已经是归档模式可跳过此步: %sqlplus /nolog (启动sqlplus) SQL> conn / as sysdba (以DBA身份连接数据库) SQL> shutdown immediate; (立即关闭数据库) SQL> startup mount (启动实例并加载数据库,但不打开) SQL> alter database archivelog; (更改数据库为归档模式) SQL> alter database open; (打开数据库) SQL> alter system archive log start; (启用自动归档) SQL> exit (退出) 2、连接: %rman target=sys/password@mydb (启动恢复管理器) 3、基本设置: RMAN> configure default device type to disk; (设置默认的备份设备为磁盘) RMAN> configure device type disk parallelism 2; (设置备份的并行级别,通道数) RMAN> configure channel 1 device type disk fromat '/backup1/backup_%U'; (设置备份的文件格式,只适用于磁盘设备) RMAN> configure channel 2 device type disk fromat '/backup2/backup_%U'; (设置备份的文件格式,只适用于磁盘设备) RMAN> configure controlfile autobackup on; (打开控制文件与服务器参数文件的自动备份) RMAN> configure controlfile autobackup format for device type disk to '/backup1/ctl_%F'; (设置控制文件与服务器参数文件自动备份的文件格式) 4、查看所有设置:

Rman 基于时间点的恢复

Rman基于时间点的恢复 首先需要有备份数据库确保归档模式 SQL> insert into test1 values(123); SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; TO_CHAR(SYSDATE,'YY ------------------- 2012-02-28 16:18:20 SQL> truncate table test1; SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount; ORACLE instance started. rman target / Recovery Manager: Release 11.2.0.1.0 - Production on Tue Feb 28 16:25:57 2012 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. connected to target database: ORCL (DBID=1285562719, not open) RMAN> restore database; Starting restore at 2012-02-28 16:26:11 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=10 device type=DISK allocated channel: ORA_DISK_2 channel ORA_DISK_2: SID=135 device type=DISK allocated channel: ORA_DISK_3 channel ORA_DISK_3: SID=11 device type=DISK channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00003 to /apps/oracle/oradata/orcldg/undotbs01.dbf channel ORA_DISK_1: restoring datafile 00004 to /apps/oracle/oradata/orcldg/users01.dbf channel ORA_DISK_1: reading from backup piece /apps/oracle/backup/full_ORCL_8_20120228.bak channel ORA_DISK_2: starting datafile backup set restore channel ORA_DISK_2: specifying datafile(s) to restore from backup set

2016年9月1日rman备份恢复脚本

rman备份恢复 1.通过rman备份文件恢复spfile 2.通过rman备份文件恢复controlfile 3.通过rman备份文件恢复datafile 4.利用恢复回来的controlfile和datafile生成redolog 5.测试交易是否存在,并全备 我系统环境所有的文件如下: [oracle@fowaydbs]$ pwd /opt/oracle/10g/dbs [oracle@fowaydbs]$ ls initdw.ora init.ora [oracle@fowaydbs]$ls /opt/oracle/oradata 已没有任何资料 [oracle@fowaydbs]$ls /opt/oracle/admin 已没有任何资料 [oracle@fowaydbs] ls /opt/oracle/flash_recovery_area/ ORCL [oracle@fowaydbs]ls /opt/oracle/flash_recovery_area/ORCL/backupset/

2008_07_18 [oracle@fowaydbs]ls /opt/oracle/flash_recovery_area/ORCL/backupset/2008_07_ 18/ o1_mf_ncsnf_TAG20080718T203240_482fls2h_.bkp o1_mf_nnndf_TAG20080718T203240_482fkb0k_.bkp 在我这台电脑上, ,系统中所有的ORCL相关的数据文件,参数文件,日志文件,控制文件全部不在了, 没有其他可用的备份文件了,只有rman备份的文件在,这可怎么办呢? 没办法只能恢复了,可怎么恢复呢? 要恢复数据文件用rman备份? 能吗? 当然不能了,因为restore 必须在mount or open状态下. 参数文件,控制文件都没有怎么mount? 要mount必须有参数文件,控制文件,为此我们必须解决这2个难题了. 在解决难题前先准备ORCL的必须的目录: [oracle@fowaydbs]mkdir /opt/oracle/oradata/orcl

RMAN增量备份与恢复

增量备份计划案例 一、增量备份计划关键命令 星期日: RMAN> backup incremental level=0 database; 星期一: RMAN> backup incremental level=2 database; 星期二: RMAN> backup incremental level=2 database; 星期三: RMAN> backup incremental level=1 database; 星期四: RMAN> backup incremental level=2 database; 星期五: RMAN> backup incremental level=2 database; 星期六: RMAN> backup incremental level=2 database; 二、增量备份计划与恢复实例: 恢复管理器: Release 10.2.0.1.0 - Production on 星期六3月22 14:47:30 2008 Copyright (c) 1982, 2005, Oracle. All rights reserved.

连接到目标数据库: ORCL (DBID=1177145004) RMAN> backup incremental level=0 database; 启动backup 于22-3月-08 使用目标数据库控制文件替代恢复目录 分配的通道: ORA_DISK_1 通道ORA_DISK_1: sid=122 devtype=DISK 通道ORA_DISK_1: 启动增量级别0 数据文件备份集 通道ORA_DISK_1: 正在指定备份集中的数据文件 输入数据文件fno=00001 name=C:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF 输入数据文件fno=00003 name=C:\ORACLE\ORADATA\ORCL\SYSAUX01.DBF 输入数据文件fno=00007 name=C:\ORACLE\ORADATA\ORCL\PERFSTAT.DBF 输入数据文件fno=00005 name=C:\ORACLE\ORADATA\ORCL\EXAMPLE01.DBF 输入数据文件fno=00002 name=C:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF 输入数据文件fno=00004 name=C:\ORACLE\ORADATA\ORCL\USERS01.DBF 输入数据文件fno=00006 name=C:\ORACLE\ORADATA\ORCL\TTT.DBF 通道ORA_DISK_1: 正在启动段 1 于22-3月-08 通道ORA_DISK_1: 已完成段 1 于22-3月-08 段句柄=C:\ORACLE\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2008_03_22\O1 _MF_NNND0_TAG20080322T144756_3Y9BWXK2_.BKP 标记=TAG20080322T144756 注释=NONE 通道ORA_DISK_1: 备份集已完成, 经过时间:00:01:45 完成backup 于22-3月-08 启动Control File and SPFILE Autobackup 于22-3月-08 段

rman备份恢复操作命令

首先确定/u02/rman目录是否存在 export ORACLE_SID=数据库实例名 rman备份操作: 使用sys用户登录rman rman target sys/syscode #进入rman run{ #备份数据库 ALLOCATE CHANNEL CH1 DEVICE TYPE DISK FORMAT '/u02/rman/test_%U'; ALLOCATE CHANNEL CH2 DEVICE TYPE DISK FORMAT '/u02/rman/test_%U'; BACKUP incremental level 0 DATABASE plus archivelog delete input; RELEASE CHANNEL CH1; RELEASE CHANNEL CH2; } list backupset; #备份完毕,记录scn (备份时记录备份完成的SCN号,此SCN号作为数据库恢复的时间点,必须记录下来) #SCN号类似如下: rman 恢复操作 1、首次进行恢复 使用sys用户登录rman rman target sys/syscode #进入rman shutdown immediate #停止数据库 startup mount; #启动实例 run{ set until scn ********; #**为备份时记录的SCN号 restore database; #还原数据库 recover database; #恢复数据库 sql 'alter database open resetlogs'; #打开数据库 } 2、多次恢复 在使用备份文件恢复数据库,用open resetlogs方式打开数据之后,如果需要再次恢复数据库,需要指定数据库的incarnation. 使用sys用户登录rman rman target sys/syscode #进入rman shutdown immediate #停止数据库 startup mount; #启动实例 list backupset; #选择scn (备份时记录备份完的SCN号) #SCN号类似如下:

一次曲折的rman控制文件恢复

一次曲折的rman控制文件恢复 用rman备份一个最新的控制文件 rman target / catalog rman/rman@catdb RMAN>backup current controlfile format = '/oracle/backup/backup_%U'; 破坏控制文件 select name from v$controlfile; /dev/rctrlfile1 /dev/rctrlfile2 /dev/rctrlfile3 用dd把控制文件都搞坏,如下: # dd if=/dev/zero of=/dev/rctrlfile1 bs=32k --- --- 没有归档当前的redo log。 SQL> shutdown abort; ORACLE instance shut down. 尝试正常启动数据库 SQL> startup ORACLE instance started. Total System Global Area 167772160 bytes Fixed Size 2094904 bytes Variable Size 100665544 bytes Database Buffers 58720256 bytes Redo Buffers 6291456 bytes ORA-00205: error in identifying control file, check alert log for more info

报错,把数据库启动到nomount状态 SQL> shutdown ORA-01507: database not mounted ORACLE instance shut down. SQL> startup nomount ORACLE instance started. Total System Global Area 167772160 bytes Fixed Size 2094904 bytes Variable Size 100665544 bytes Database Buffers 58720256 bytes Redo Buffers 6291456 bytes SQL> 连接rman,准备恢复数据库文件。 ibmchen$[/oracle]rman target / catalog rman/rman@catdb Recovery Manager: Release 10.2.0.5.0 - Production on Wed Mar 14 16:18:09 2012 Copyright (c) 1982, 2007, Oracle. All rights reserved. connected to target database: orac (not mounted) connected to recovery catalog database 检查是否打开CONTROLFILE AUTOBACKUP ON RMAN> show all; RMAN configuration parameters are: CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default CONFIGURE BACKUP OPTIMIZATION OFF; # default CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

Oracle数据库RMAN恢复之数据文件的恢复详解

除了system表空间的数据文件(mount)之外,其它数据文件可以在open(mount也可以)状态下恢复。open状态下恢复数据文件可以减少数据库停用的时间,所以应该在open状态下恢复这些数据文件。 示例一:数据文件被误删除 数据库关闭状态下删除非系统表空间数据文件。 启动数据库到mount状态。 脱机丢失的数据文件,alter database datafile n offline。 打开数据库,alter database open。 转储数据文件,restore datafile n。 使用recover datafile n 应用归档日志。 联机数据文件,alter database datafile n online。 --数据库关闭状态下删除非系统表空间数据文件。 1.[oracle@localhost ~]$ rm $ORACLE_BASE/product/10. 2.0/oradatabak/example01.dbf; 2.SQL> select file#,error from v$recover_file; 3.FILE# ERROR 4.---------- ----------------------------------------------------------------- 5. 5 FILE NOT FOUND 6.SQL> select file#,name from v$datafile where file#=5; 7.FILE# NAME 8.---------- -------------------------------------------------------------------------------- 9. 5 /oracle/10g/oracle/product/10.2.0/oradatabak/example01.dbf 10.--恢复数据文件 11.RMAN> run { 12.startup force mount; 13.sql 'alter database datafile 5 offline'; 14.sql 'alter database open'; 15.restore datafile 5; 16.recover datafile 5; 17.sql 'alter database datafile 5 online'; 18.8> } 示例二:数据文件所在磁盘出现损坏 数据库关闭状态下删除非系统表空间数据文件。 启动数据库到mount状态。

rman备份常用操作语句

rman备份常用操作语句 2009-08-12 23:21:57| 分类:rman|字号订阅 drop tablespace tbs_rman including contents and datafiles; create tablespace tbs_rman datafile '/oradata/liutest/tbs_rman01.dbf'size 300M; create user rmanuser identified by rman default tablespace tbs_rman temporary tablespace temp; grant recovery_catalog_owner to rmanuser; select * from session_privs; select * from sesseion_roles; rman catalog rmanuser/rman rman>create catalog tablespace tbs_rman; rman>r egister database; rman>list incarnation; -- (可以看出有几个目标数据库注册此RMAN备份) rman>report schema; rman>list backup; rman>list copy; --全备份full backupset rman>run{ allocate channel d1 device type disk; backup as compressed backupset format='/rmanbak/full_%d_%U' tag='fullbak' channel=d1 database plus archivelog delete input; } rman>crosscheck copy; rman>delete expired copy; --0级备份 run{ allocate channel d1 device type disk;

oracle备份与恢复机制

谈ORACLE备份与恢复 经常听到有人说,某数据库备份方法好,某备份方法不好,或者说现在都流行用rman 来备份了,逻辑备份已经过时了,冷备份就更不值一提了,其实数据库的备份从来没有什么好坏之分、没有过时之说,合适才是最重要的,自己好才是真的好.各种方法各有长短,谁也代替不了谁,只有根据实际情况搭配使用,才能发挥最大的作用,否则只能是东施效颦. 1 . o r ac 1 e的备份,包括no a r chi v e I og模式的备份(冷备份)、arch i velog模式的备份(热备份、rman备份)、逻辑备份(不分模式). 1.1.冷备份: ~ 1)关闭数据库 s hu t d o wn; -一2)备份数据文件、控制文件、重做日志文件 一-A、查找备份文件的位置 SELEC T * FROM VSDATAFIL E ; —査数据文件 s el e ct * f r om v$cont r o 1 f il e ; —查控制文件 s e le c t * f r om vSlogf i 1 e; —査日志文件 ~ B、备份数据文件、控制文件、重做日志文件 $ copy D:\oracle\o r a data\or a 9 \ *. dbf d: \ b a k \ *. *; $ cop y D:\ora cle \ oradat a \ora9 \ *? c t 1 d : \ b a k\*? *: $ copy D:\oracle \o r adata\o r a9\*? I og d:\bak\*? *; 1.2.热备份: ~ 1)查询备份的数据文件与哪一个表空间有关 SELECT V$TAF3LESPACE ? NAME, VS DATAFILE. NAME FROM V$TA B LES P ACE J OIN V$DATAF I LE USING(TS#); ~ 2)备份数据文件 a 1 t er tablespace 表空间BEGIN BACKUP; $ COPY数据文件存放路径

RMAN工具使用

RMAN工具使用 作者: 苏俊华 创建日期: 201-10-19 更新日期: 201-12-05 文档编号: 版本: 1.0 批准: 〈广东移动项目经理〉 〈HAND 项目经理〉 拷贝编号:____

文档控制 更新记录 审阅 分发 备注: 出于文档管理的目的,如果您收到了本文档的电子版本,请打印出来并在封面的相应位 置写上您的名字。 出于文档管理的目的,如果您收到了本文档的纸介质版本,请在封面写上您的名字。

目录 文档控制 (2) RMAN工具使用 (4) 1.1.1 RMAN查看信息 (4) 1.1.1.1 恢复目录相关视图 (4) 1.1.1.2 动态视图 (4) 1.1.1.3 list命令 (5) 1.1.2 配置RMAN (5) 1.1.3 RMAN管理和维护 (6) 1.1.3.1 同步命令 (6) 1.1.3.2 注销数据库 (6) 1.1.3.3 重新启动备份 (7) 1.1.3.4 备份数据命令 (7) 1.1.3.5 脚本及自动运行 (7) 1.1.3.6 查看备份状态 (8) 1.1.3.7 删除过时的备份 (8) 1.1.4 RMAN备份与恢复 (10) 1.1.4.1 归档模式下的backup完全备份与恢复 (10) 1.1.4.1.1 整库备份与恢复 (10) 1.1.4.1.2 表空间备份与恢复 (10) 1.1.4.1.3 数据文件的备份与恢复 (11) 1.1.4.1.4 归档日志的备份与恢复 (11) 1.1.4.1.5 联机日志的备份与恢复 (11) 1.1.4.2 归档模式下的backup部分备份与恢复 (12) 1.1.4.2.1 SCN恢复 (12) 1.1.4.2.2 时间点恢复 (12) 已解决及未解决的问题 (13) 未解决的问题 (13) 已解决的问题 (13)

基于Rman的备份与恢复

基于Rman的测试 为了配合公司产品的功能测试,特完成此文档(公司产品相关测试部分已剔除)。本文档主要是介绍rman工具的基本使用,此处只做全库的备份,以及不完全恢复,数据库模式为归档模式。 1Rman工具的简单介绍 Rman全称Recover Manager是oracle提供的一款备份恢复数据库或数据库组件(表空间、数据文件、控制文件以及参数文件等)的工具。并且rman还可以对数据库的归档日志进行管理。 2 数据库备份与恢复 Rman提供两种备份模式,一种是将备份数据信息写入到本地的控制文件中,另一种是恢复目录方式:这种方式是将备份数据库信息写入到本地控制文件和catalog(恢复目录)中,oracle推荐使用第二种方式。Catalog一般创建在另外的一个数据库中,这样备份的数据库崩溃后不影响其恢复。使用第一种方式,如果数据库崩溃,而且没有控制文件的备份,这种情况下就没有办法进行恢复操作。这里使用恢复目录方式进行操作。 1)Catalog的创建 恢复目录所在数据库为rmandb,创建的恢复目录为tsp_rman,连接用户为rman/rman a)创建恢复目录 Create tablespace tsp_rman datafile ‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\SCHINATEST\rman01.DBF’ size 120m; b)创建用户 Create user rman identified by rman; c)授权

Grant connect, resource, recovery_catalog_owner to rman; 2)连接到Rman 使用以下命令进行rman工具的连接: 连接时需要sysdba系统权限 Rman sys/oracle@schinatest catalog rman/rman@rmandb 说明: Schinatest是准备备份的目标数据库,rmandb是恢复目录数据库 3)查看目标数据库的归档模式 以dba用户登录oracle,查看目标数据库的归档模式:此处是归档模式 SQL> archive log list; 图 3.1 查看归档模式 因为一般情况下,真正使用场景中的数据库都为归档模式,而且非归档模式下使用rman有一些限制,所以此处只做归档模式下的测试。如果数据库是非归档模式,需改成归档模式。 4)注册目标数据库 只有在恢复目录中注册的数据库才能进行备份与恢复操作,注册很简单,连接到rman工具后,使用register database命令进行注册即可 5)配置Rman的使用参数 使用show all命令显示rman的全部配置参数:

利用RMAN恢复数据库的全过程

利用RMAN恢复数据库的全过程 Posted on 2009-02-05 20:26 hhq80阅读(1290) 评论(0)编辑收藏所属分类: Oracle10g RMAN> set dbid=1205819526 正在执行命令: SET DBID RMAN> startup nomount; 已连接到目标数据库(未启动) 启动失败: ORA-01078: failure in processing system parameters ORA-01565: error in identifying file 'E:\oracle\product\10.2.0\db_1/dbs/spfileOR CL.ora' ORA-27041: unable to open file OSD-04002: ???????????? O/S-Error: (OS 2) ?????????????????????? 在没有参数文件的情况下启动Oracle 实例以检索spfile Oracle 实例已启动 系统全局区域总计159383552 字节 Fixed Size 1247828 字节 Variable Size 58721708 字节 Database Buffers 92274688 字节 Redo Buffers 7139328 字节 RMAN> restore spfile from 'E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BAC KUPSET\2009_02_05\O1_MF_NCSNF_TAG20090205T162829_4RO8TX8S_.BKP';启动restore 于05-2月-09 分配的通道: ORA_DISK_1 通道ORA_DISK_1: sid=37 devtype=DISK 通道ORA_DISK_1: 已找到的自动备份: E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ ORCL\BACKUPSET\2009_02_05\O1_MF_NCSNF_TAG20090205T162829_4RO8TX 8S_.BKP

相关文档
最新文档