RAMN备份与恢复(完全恢复)

RAMN备份与恢复(完全恢复)

这一部分主要是实验操作,主要从两方面来讲,一个是rman的完全恢复,另一个是不完全恢复。在这里再说明一点,我用的都是备份集而不是映像副本。映像副本会在用户自定义备份里面详细介绍。

 

1.         备份全库

       非常简单 backup database或者backup database plus archivelog delete input; (备份全库及控制文件、服务器参数文件与所有归档的重做日志,并删除旧的归档日志)

这里有一点说明一下,当你打开

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP  on;

 

new RMAN configuration parameters:

CONFIGURE CONTROLFILE AUTOBACKUP ON;

new RMAN configuration parameters are successfully stored

这时候,RMAN 会在BACKUP 命令后自动备份控制文件和当前服务器参数文件,或者在数据结构改变的时候。

Backup database plus archivelog

太长不截图了。这里由于我启动了闪回区功能,所以会把备份集自动放到该flash_recovery_area/目录下。当然你也可以手工指定要放置的地方以及备份文件的格式。

可以通过list backup ;查看已经做好的备份

 

RMAN> list backup ;

 

 

List of Backup Sets

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

 

BS Key  Size       Device Type Elapsed Time Completion Time

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

1       39.68M     DISK        00:00:06     20-NOV-10     

        BP Key: 1   Status: AVAILABLE  Compressed: NO  Tag: TAG20101120T055028

        Piece Name: /opt/ora10g/flash_recovery_area/INOMC/backupset/2010_11_20/o1_mf_annnn_TAG20101120T055028_6gfw95tg_.bkp

 

  List of Archived Logs in backup set 1

  Thrd Seq     Low SCN    Low Time  Next SCN   Next Time

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

  1    28      335048     14-OCT-10 359333     19-NOV-10

  1    29      359333     19-NOV-10 390539     20-NOV-10

  1    30      390539     20-NOV-10 396089     20-NOV-10

 

BS Key  Type LV Size       Device Type Elapsed Time Completion Time

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

2       Full    685.83M    DISK        00:01:36     20-NOV-10     

        BP Key: 2   Status: AVAILABLE  Compressed: NO  Tag: TAG20101120T055037

        Piece Name: /opt/ora10g/flash_recovery_area/INOMC/backupset/2010_11_20/o1_mf_nnndf_TAG20101120T055037_6gfw9gm5_.bkp

  List of Datafiles in backup set 2

  File LV Type Ckp SCN    Ckp Time  Name

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

  1       Full 396097     20-NOV-10 /opt/ora10g/oradata/inomc/system01.dbf

  2       Full 396097     20-NOV-10 /opt/ora10g/oradata/inomc/undotbs01.dbf

  3       Full 396097     20-NOV-10 /opt/ora10g/oradata/inomc/sysaux01.dbf

  4       Full 396097     20-NOV-10 /opt/ora10g/oradata/inomc/users01.dbf

  5       Full 396097     20-NOV-10 /opt/ora10g/datafile/text01-1.dbf

 

BS Key  Size       Device Type Elapsed Time Completion Time

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

3       10.50K     DISK        00:00:01     20-NOV-10     

        BP Key: 3   Status: AVAILABLE  Compressed: NO  Tag: TAG20101120T055224

        Piece Name: /opt/ora10g/flash_recovery_area/INOMC/backupset/2010_11_20/o1_mf_annnn_TAG20101120T055224_6gfwdsod_.bkp

 

  List of Archived Logs in backup set 3

  Thrd Seq     Low SCN    Low Time  Next SCN   Next Time

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

  1    31      396089     20-NOV-10 396144     20-NOV-10

 

BS Key  Type LV Size       Device Type Elapsed Time Completion Time

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

4       Full    6.80M      DISK        00:00:01     20-NOV-10      

        BP Key: 4   Status: AVAILABLE  Compressed: NO  Tag: TAG20101120T055227

        Piece Name: /opt/ora10g/flash_recovery_area/INOMC/autobackup/2010_11_20/o1_mf_s_735544347_6gfwdwnx_.bkp

  Control File Included: Ckp SCN: 396150       Ckp time: 20-NOV-10

  SPFILE Included: Modification time: 20-NOV-10

这里你还可以指定备份表空间

Backup tablespace text01;

数据文件,控制文件,参数文件等等……

这里再废话一下介绍一下增量备份的概念

差异备份Differential

简单一点说,0级备份是全备份,在星期天晚上做,然后在星期一、二做二级增量备份,星期一会做自星期天以来的增来备份,星期二因为是Differential备份机制,只会备份自星期一以来的增量的备份。然后是星期三的一级备份,因为前面都是二级备份,那么会备份在星期日以来的增量。

累积增量备份Cumulative

简单一点说,0级备份是全备份,在星期天晚上做,然后在星期一、二做二级增量备份,星期一会做自星期天以来的增来备份,星期二因为是Cumulative备份机制,他会备份自星期日以来的增量的备份。然后是星期三的一级备份,因为前面都是二级备份,那么会备份在星期日以来的增量。

2.         数据库恢复

       当数据文件出现介质失败时,需要使用restore命令转储备份,使用recovery命令进行恢复。除了system表空间之外,其它数据文件都可以在open状态下恢复。

由于一般情况下都是在数据库打开下,数据文件丢失,我们就会在数据打开的情况下模拟,参数文件、控制文件,system数据文件,普通数据文件丢失来恢复数据库。

                                                    i.              参数文件丢失

       a、先做个备份

[oracle@field dbs]$ cp spfileinomc.ora  spfileinomc.ora.bak

b、删除spfile

[oracle@field dbs]$ rm spfileinomc.ora

c、修改参数

alter system set rescource_limit=true ;

直接报错

                   alter system set resource_limit=true

*

ERROR at line 1:

ORA-01565: error in identifying file

'/opt/ora10g/product/10.2.0/db_1/dbs/spfileinomc.ora'

ORA-27037: unable to obtain file status

Linux Error: 2: No such file or directory

Additional information: 3

d、查看rman关于spifle的备份

RMAN> list backup of spfile;

 

 

List of Backup Sets

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

 

BS Key  Type LV Size       Device Type Elapsed Time Completion Time

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

4       Full    6.80M      DISK        00:00:01     20-NOV-10     

        BP Key: 4   Status: AVAILABLE  Compressed: NO  Tag: TAG20101120T055227

        Piece Name: /opt/ora10g/flash_recovery_area/INOMC/autobackup/2010_11_20/o1_mf_s_735544347_6gfwdwnx_.bkp

  SPFILE Included: Modification time: 20-NOV-10

 

RMAN>

e、恢复控制文件

 

RMAN> restore spfile to '/opt/ora10g/product/10.2.0/db_1/dbs/spfile.ora';

 

Starting restore at 20-NOV-10

using channel ORA_DISK_1

 

channel ORA_DISK_1: starting datafile backupset restore

channel ORA_DISK_1: restoring SPFILE

output filename=/opt/ora10g/product/10.2.0/db_1/dbs/spfile.ora

channel ORA_DISK_1: reading from backup piece /opt/ora10g/flash_recovery_area/INOMC/autobackup/2010_11_20/o1_mf_s_735544347_6gfwdwnx_.bkp

channel ORA_DISK_1: restored backup piece 1

piece handle=/opt/ora10g/flash_recovery_area/INOMC/autobackup/2010_11_20/o1_mf_s_735544347_6gfwdwnx_.bkp tag=TAG20101120T055227

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

Finished restore at 20-NOV-10

            好了,已经成功了。这样比较麻烦,如果在打开状态下丢失了直接                                create spfile from memory;就可以了,总之控制文件丢失不是什么大问                         题。

                                                  ii.              控制文件丢失

       a、查看控制文件的位置

    QL> show parameter control

 

NAME                                 TYPE        VALUE

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

control_file_record_keep_time        integer     7

control_files                        string      /opt/ora10g/oradata/inomc/control01.ctl, /opt/ora10g/oradata/inomc/control02.ctl, /opt/ora10g/orada   

       b、删除其中一个

[oracle@field inomc]$ rm control01.ctl

c、创建表空间text02

SQL> create tablespace text02

  2  datafile '/opt/ora10g/oradata/inomc/text02.dbf'

  3  size 5m;

 

create tablespace text02

datafile '/opt/ora10g/oradata/inomc/text02.dbf'

size 5m

 

ORA-00210: cannot open the specified control file

ORA-00202: control file: '/opt/ora10g/oradata/inomc/control01.ctl'

ORA-27041: unable to open file

Linux Error: 2: No such file or directory

Additional information: 3

大家看到报错了

d、恢复控制文件

RMAN> restore controlfile to '/opt/ora10g/oradata/inomc/control01.ctl';

RMAN> restore controlfile to '/opt/ora10g/oradata/inomc/control01.ctl';

 

Starting restore at 20-NOV-10

using channel ORA_DISK_1

 

channel ORA_DISK_1: starting datafile backupset restore

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

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

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

RMAN-03002: failure of restore command at 11/20/2010 07:57:38

ORA-19607: /opt/ora10g/oradata/inomc/control01.ctl is an active control file

报错,因为我们要恢复的控制文件是 control01.ctl正在活动的。

e、修改参数文件中的控制文件参数

SQL> set system set control_files='/opt/ora10g/oradata/inomc/control02.ctl' scope=spfile;

Cannot SET SYSTEM

又失败,看来是不能在打开的状态下恢复控制文件了,只能关闭数据库,然后用老一套的办法恢复了。

f、关闭数据库

SQL> shutdown immediately

SP2-0717: illegal SHUTDOWN option

SQL> shutdown immediate

ORA-00210: cannot open the specified control file

ORA-00202: control file: '/opt/ora10g/oradata/inomc/control01.ctl'

ORA-27041: unable to open file

Linux Error: 2: No such file or directory

Additional information: 3

还是报错,数据库打开的状况下丢失数据文件真是麻烦啊

强行关闭

Shutdown abort

复制控制文件

[oracle@field inomc]$ cp control02.ctl control01.ctl

打开数据库

成功

这里我们可以假设一下,如果控制文件全部丢失,那么可以使用rman         恢复控制文件至一个newlocation,然后强行关闭数据库,再打开      nomount状态,修改控制文件参数,使用新的位置的控制文件打              开数据库。

                                                iii.              丢失system表空间的数据文件

       因为这个是系统表空间的数据文件,一丢失数据库就会报错

       看来书上胡说,我删除了system01.dbf这个数据文件后数据库并没有      立即关闭,而且关闭的时候又报错了只能abort了。

a、  启动到mount状态

SQL> startup mount

ORACLE instance started.

 

Total System Global Area  167772160 bytes

Fixed Size                  1218316 bytes

Variable Size              88082676 bytes

Database Buffers           75497472 bytes

Redo Buffers                2973696 bytes

Database mounted.

b、  使用rman恢复

       RMAN> restore database;

 

Starting restore at 20-NOV-10

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=155 devtype=DISK

 

channel ORA_DISK_1: starting datafile backupset restore

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

restoring datafile 00001 to /opt/ora10g/oradata/inomc/system01.dbf

restoring datafile 00002 to /opt/ora10g/oradata/inomc/undotbs01.dbf

restoring datafile 00003 to /opt/ora10g/oradata/inomc/sysaux01.dbf

restoring datafile 00004 to /opt/ora10g/oradata/inomc/users01.dbf

restoring datafile 00005 to /opt/ora10g/datafile/text01-1.dbf

channel ORA_DISK_1: reading from backup piece /opt/ora10g/flash_recovery_area/INOMC/backupset/2010_11_20/o1_mf_nnndf_TAG20101120T055037_6gfw9gm5_.bkp

channel ORA_DISK_1: restored backup piece 1

piece handle=/opt/ora10g/flash_recovery_area/INOMC/backupset/2010_11_20/o1_mf_nnndf_TAG20101120T055037_6gfw9gm5_.bkp tag=TAG20101120T055037

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

Finished restore at 20-NOV-10

 

                                   e、恢复数据库

RMAN> recover database;

 

Starting recover at 20-NOV-10

using channel ORA_DISK_1

 

starting media recovery

media recovery complete, elapsed time: 00:00:17

 

Finished recover at 20-NOV-10

 

RMAN>

f、打开数据库并检查

 

SQL> alter database open ;

 

Database altered.

 

SQL> desc lsy.students;

 Name                                      Null?    Type

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

 SNO                                       NOT NULL NUMBER(6)

 SNAME                                     NOT NULL CHAR(8)

 SEX                                                CHAR(8)

 AGE                                                NUMBER(3)

 BPLACE                                             CHAR(20)

 

SQL>

好了,搞定

                                                 iv.              普通数据文件丢失

       普通数据文件丢失就更不会是数据库关闭了,他只会让有关于那个数据文件的查询失败。

       a、删除text01表空间的数据文件text01.dbf

    SQL> select name from v$datafile where FILE#=5;

 

NAME

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

/opt/ora10g/datafile/text01-1.dbf

[oracle@field datafile]$ rm text01-1.dbf

c、  在该数据文件上插入表数据

SQL> insert into STUDENTS (Sno,Sname,sex,age,bplace) values ('95029','赵新  ','',20,'新疆') ;

 

insert into STUDENTS (Sno,Sname,sex,age,bplace) values ('95029','赵新  ','',20,'新疆')

 

ORA-01116: error in opening database file 5

ORA-01110: data file 5: '/opt/ora10g/datafile/text01-1.dbf'

ORA-27041: unable to open file

Linux Error: 2: No such file or directory

Additional information: 3

当然,报错了

d、在打开的情况下恢复,并且假设磁盘损坏,需要转储到其它的磁 

SQL> alter database datafile 5 offline;

Database altered.

e、  检查数据文件副本状态

RMAN> crosscheck copy;

 

released channel: ORA_DISK_1

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=158 devtype=DISK

validation failed for datafile copy

datafile copy filename=/opt/ora10g/oradata/inomc/text01.dbf recid=9 stamp=735557203

validation succeeded for archived log

archive log filename=/opt/ora10g/flash_recovery_area/INOMC/archivelog/2010_11_19/o1_mf_1_28_6gd6tz5y_.arc recid=1 stamp=735489504

validation succeeded for archived log

archive log filename=/opt/ora10g/flash_recovery_area/INOMC/archivelog/2010_11_20/o1_mf_1_29_6gfmlm2l_.arc recid=2 stamp=735535317

validation succeeded for archived log

archive log filename=/opt/ora10g/flash_recovery_area/INOMC/archivelog/2010_11_20/o1_mf_1_30_6gfw930l_.arc recid=3 stamp=735544227

validation succeeded for archived log

archive log filename=/opt/ora10g/flash_recovery_area/INOMC/archivelog/2010_11_20/o1_mf_1_31_6gfwdqy8_.arc recid=4 stamp=735544344

validation succeeded for archived log

archive log filename=/opt/ora10g/flash_recovery_area/INOMC/archivelog/2010_11_20/o1_mf_1_32_6gg4x8x4_.arc recid=5 stamp=735553065

validation succeeded for archived log

archive log filename=/opt/ora10g/flash_recovery_area/INOMC/archivelog/2010_11_20/o1_mf_1_33_6gg61c97_.arc recid=6 stamp=735554219

Crosschecked 7 objects

这里居然要数据文件副本状态,否则的话你恢复的时候就会强行把文件恢复到原来的目录下,如果该目录不存在就会报错,即使你newname过也没有用,至于为什么,看这里http://blog.sina.com.cn/s/blog_4ed6a1de01000fcm.html

RMAN> restore datafile 5;

 

Starting restore at 20-NOV-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 00005 to /opt/ora10g/datafile/text01-1.dbf

channel ORA_DISK_1: reading from backup piece /opt/ora10g/flash_recovery_area/INOMC/backupset/2010_11_20/o1_mf_nnndf_TAG20101120T055037_6gfw9gm5_.bkp

ORA-19870: error reading backup piece /opt/ora10g/flash_recovery_area/INOMC/backupset/2010_11_20/o1_mf_nnndf_TAG20101120T055037_6gfw9gm5_.bkp

ORA-19504: failed to create file "/opt/ora10g/datafile/text01-1.dbf"

ORA-27040: file create error, unable to create file

Linux Error: 2: No such file or directory

failover to previous backup

f、   删除已经expired的数据文件副本信息

      

RMAN> delete noprompt expired copy;

 

released channel: ORA_DISK_1

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=158 devtype=DISK

specification does not match any archive log in the recovery catalog

 

List of Datafile Copies

Key     File S Completion Time Ckp SCN    Ckp Time        Name

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

9       5    X 20-NOV-10       396097     20-NOV-10       /opt/ora10g/oradata/inomc/text01.dbf

deleted datafile copy

datafile copy filename=/opt/ora10g/oradata/inomc/text01.dbf recid=9 stamp=735557203

Deleted 1 EXPIRED objects

g、恢复数局文件,这里有一点这里几条命令最好都放在run里面一起执行,我试过单独执行switch datafile 5;报错。

RMAN> run

2> {

3> set newname for datafile 5 to '/opt/ora10g/oradata/inomc/text01-1.dbf';

4> restore datafile 5;

5> switch datafile 5;                          

6> recover datafile 5;

7> }

 

executing command: SET NEWNAME

 

Starting restore at 20-NOV-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 00005 to /opt/ora10g/oradata/inomc/text01-1.dbf

channel ORA_DISK_1: reading from backup piece /opt/ora10g/flash_recovery_area/INOMC/backupset/2010_11_20/o1_mf_nnndf_TAG20101120T055037_6gfw9gm5_.bkp

channel ORA_DISK_1: restored backup piece 1

piece handle=/opt/ora10g/flash_recovery_area/INOMC/backupset/2010_11_20/o1_mf_nnndf_TAG20101120T055037_6gfw9gm5_.bkp tag=TAG20101120T055037

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

Finished restore at 20-NOV-10

 

datafile 5 switched to datafile copy

input datafile copy recid=11 stamp=735557684 filename=/opt/ora10g/oradata/inomc/text01-1.dbf

 

Starting recover at 20-NOV-10

using channel ORA_DISK_1

 

starting media recovery

 

archive log thread 1 sequence 31 is already on disk as file /opt/ora10g/flash_recovery_area/INOMC/archivelog/2010_11_20/o1_mf_1_31_6gfwdqy8_.arc

archive log thread 1 sequence 32 is already on disk as file /opt/ora10g/flash_recovery_area/INOMC/archivelog/2010_11_20/o1_mf_1_32_6gg4x8x4_.arc

archive log thread 1 sequence 33 is already on disk as file /opt/ora10g/flash_recovery_area/INOMC/archivelog/2010_11_20/o1_mf_1_33_6gg61c97_.arc

archive log filename=/opt/ora10g/flash_recovery_area/INOMC/archivelog/2010_11_20/o1_mf_1_31_6gfwdqy8_.arc thread=1 sequence=31

media recovery complete, elapsed time: 00:00:01

Finished recover at 20-NOV-10

 

RMAN>

g、  是数据文件上线

       SQL> alter database datafile 5 online;

Database altered.

实验完毕

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23493401/viewspace-678831/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23493401/viewspace-678831/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值