博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

RMAN备份数据库与恢复数据库(整库)

Posted on 2015-10-12 17:45  徐正柱-  阅读(509)  评论(0编辑  收藏  举报
1	准备	2
1.1	检查数据库归档状态	2
1.2	RMAN登陆目标	2
2	备份全库	2
2.1	创建备份数据存储目录	2
2.2	RMAN备份全库	2
2.3	试验(备份后,改变数据)	5
2.4	试验(模拟删除控制文件)	7
3	恢复数据库	8
3.1	假定没有设置ORACLE_SID,设置ORACLE_SID启动一个伪实例	8
3.2	恢复SPFILE	9
3.3	恢复控制文件	9
3.4	恢复数据库	10
目录

 

1    准备

1.1  检查数据库归档状态

[oracle@TEST144239 /]$ sqlplus /nolog

 

SQL*Plus: Release 11.2.0.3.0 Production on Mon Oct 12   11:58:35 2015

 

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

 

SQL> conn sys/Sina.2015@study as sysdba

Connected.

SQL> archive log list;

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination              /data2/orcl/recover_log/archive_log

Oldest online log sequence     22

Next log sequence to archive   24

Current log sequence           24

1.2  RMAN登陆目标

[oracle@TEST144239 ~]$ rman target sys/Sina.2015@study

 

2    备份全库

2.1  创建备份数据存储目录(本次实验没有创建)

[oracle@TEST144239 /]$ mkdir   /data2/backup

2.2  RMAN备份全库

RMAN>  backup as compressed backupset database   plus archivelog;

 

Starting backup at 12-OCT-15

current   log archived

using   channel ORA_DISK_1

using   channel ORA_DISK_2

using   channel ORA_DISK_3

channel ORA_DISK_1: starting compressed archived log backup   set

channel   ORA_DISK_1: specifying archived log(s) in backup set

input   archived log thread=1 sequence=12 RECID=1 STAMP=892728339

input   archived log thread=1 sequence=13 RECID=2 STAMP=892736557

input   archived log thread=1 sequence=14 RECID=3 STAMP=892753270

input   archived log thread=1 sequence=15 RECID=4 STAMP=892768262

channel   ORA_DISK_1: starting piece 1 at 12-OCT-15

channel ORA_DISK_2: starting compressed archived log backup   set

channel   ORA_DISK_2: specifying archived log(s) in backup set

input   archived log thread=1 sequence=16 RECID=5 STAMP=892791995

input   archived log thread=1 sequence=17 RECID=6 STAMP=892803633

input   archived log thread=1 sequence=18 RECID=7 STAMP=892815402

input   archived log thread=1 sequence=19 RECID=8 STAMP=892828012

input   archived log thread=1 sequence=20 RECID=9 STAMP=892843267

channel   ORA_DISK_2: starting piece 1 at 12-OCT-15

channel ORA_DISK_3: starting compressed archived log backup   set

channel   ORA_DISK_3: specifying archived log(s) in backup set

input   archived log thread=1 sequence=21 RECID=10 STAMP=892857631

input   archived log thread=1 sequence=22 RECID=11 STAMP=892882839

input   archived log thread=1 sequence=23 RECID=12 STAMP=892891106

input   archived log thread=1 sequence=24 RECID=13 STAMP=892900945

input   archived log thread=1 sequence=25 RECID=14 STAMP=892901057

input   archived log thread=1 sequence=26 RECID=15 STAMP=892901228

input   archived log thread=1 sequence=27 RECID=16 STAMP=892901372

input   archived log thread=1 sequence=28 RECID=17 STAMP=892901532

channel   ORA_DISK_3: starting piece 1 at 12-OCT-15

channel   ORA_DISK_3: finished piece 1 at 12-OCT-15

piece   handle=/u01/app/oracle/fast_recovery_area/ORCL/backupset/2015_10_12/o1_mf_annnn_TAG20151012T145139_c1pp3xr2_.bkp   tag=TAG20151012T145139 comment=NONE

channel   ORA_DISK_3: backup set complete, elapsed time: 00:00:15

channel ORA_DISK_3: starting compressed archived log backup   set

channel   ORA_DISK_3: specifying archived log(s) in backup set

input   archived log thread=1 sequence=29 RECID=18 STAMP=892901677

input   archived log thread=1 sequence=30 RECID=19 STAMP=892909146

input   archived log thread=1 sequence=31 RECID=20 STAMP=892909170

input   archived log thread=1 sequence=32 RECID=21 STAMP=892909211

input   archived log thread=1 sequence=33 RECID=22 STAMP=892911098

channel   ORA_DISK_3: starting piece 1 at 12-OCT-15

channel   ORA_DISK_1: finished piece 1 at 12-OCT-15

piece   handle=/u01/app/oracle/fast_recovery_area/ORCL/backupset/2015_10_12/o1_mf_annnn_TAG20151012T145139_c1pp3wp6_.bkp   tag=TAG20151012T145139 comment=NONE

channel   ORA_DISK_1: backup set complete, elapsed time: 00:00:20

channel   ORA_DISK_2: finished piece 1 at 12-OCT-15

piece   handle=/u01/app/oracle/fast_recovery_area/ORCL/backupset/2015_10_12/o1_mf_annnn_TAG20151012T145139_c1pp3ww1_.bkp   tag=TAG20151012T145139 comment=NONE

channel   ORA_DISK_2: backup set complete, elapsed time: 00:00:22

channel   ORA_DISK_3: finished piece 1 at 12-OCT-15

piece   handle=/u01/app/oracle/fast_recovery_area/ORCL/backupset/2015_10_12/o1_mf_annnn_TAG20151012T145139_c1pp4hhj_.bkp   tag=TAG20151012T145139 comment=NONE

channel   ORA_DISK_3: backup set complete, elapsed time: 00:00:06

Finished backup at 12-OCT-15

 

Starting backup at 12-OCT-15

using   channel ORA_DISK_1

using   channel ORA_DISK_2

using   channel ORA_DISK_3

channel ORA_DISK_1: starting compressed full datafile backup   set

channel   ORA_DISK_1: specifying datafile(s) in backup set

input   datafile file number=00001 name=/data2/orcl/system01.dbf

input   datafile file number=00003 name=/data2/orcl/undotbs01.dbf

channel   ORA_DISK_1: starting piece 1 at 12-OCT-15

channel ORA_DISK_2: starting compressed full datafile backup   set

channel   ORA_DISK_2: specifying datafile(s) in backup set

input   datafile file number=00002 name=/data2/orcl/sysaux01.dbf

input   datafile file number=00004 name=/data2/orcl/users01.dbf

channel   ORA_DISK_2: starting piece 1 at 12-OCT-15

channel   ORA_DISK_2: finished piece 1 at 12-OCT-15

piece   handle=/u01/app/oracle/fast_recovery_area/ORCL/backupset/2015_10_12/o1_mf_nnndf_TAG20151012T145203_c1pp4phv_.bkp   tag=TAG20151012T145203 comment=NONE

channel   ORA_DISK_2: backup set complete, elapsed time: 00:00:55

channel   ORA_DISK_1: finished piece 1 at 12-OCT-15

piece   handle=/u01/app/oracle/fast_recovery_area/ORCL/backupset/2015_10_12/o1_mf_nnndf_TAG20151012T145203_c1pp4o7j_.bkp   tag=TAG20151012T145203 comment=NONE

channel   ORA_DISK_1: backup set complete, elapsed time: 00:01:16

Finished backup at 12-OCT-15

 

Starting backup at 12-OCT-15

current   log archived

using   channel ORA_DISK_1

using   channel ORA_DISK_2

using   channel ORA_DISK_3

channel ORA_DISK_1: starting compressed archived log backup   set

channel   ORA_DISK_1: specifying archived log(s) in backup set

input   archived log thread=1 sequence=34 RECID=23 STAMP=892911204

channel   ORA_DISK_1: starting piece 1 at 12-OCT-15

channel   ORA_DISK_1: finished piece 1 at 12-OCT-15

piece   handle=/u01/app/oracle/fast_recovery_area/ORCL/backupset/2015_10_12/o1_mf_annnn_TAG20151012T145325_c1pp76vh_.bkp   tag=TAG20151012T145325 comment=NONE

channel   ORA_DISK_1: backup set complete, elapsed time: 00:00:07

Finished backup at 12-OCT-15

 

Starting Control File and SPFILE   Autobackup at 12-OCT-15

piece   handle=/u01/app/oracle/fast_recovery_area/ORCL/autobackup/2015_10_12/o1_mf_s_892911216_c1pp7o9p_.bkp   comment=NONE

Finished Control File and SPFILE   Autobackup at 12-OCT-15

 

 

2.3  试验(备份后,改变数据)

SQL> select sal from scott .emp;

         SAL

----------

         800

        1600

        1250

        2975

        1250

        2850

        2450

        3000

        5000

        1500

        1100

 

         SAL

----------

         950

        3000

        1300

 

14 rows selected.

SQL> update scott.emp set   sal=sal+10;

 

14 rows updated.

SQL> commit;

Commit complete.

 

SQL> alter system switch logfile;

System altered.

 

SQL> update scott.emp set   sal=sal+10;

14 rows updated.

 

SQL> commit;

Commit complete.

 

SQL> alter system switch logfile;

System altered.

 

SQL> update scott.emp set   sal=sal+10;

14 rows updated.

 

SQL> commit;

Commit complete.

 

SQL> alter system switch logfile;

System altered.

 

SQL> update scott.emp set   sal=sal+10;

14 rows updated.

 

SQL> commit;

Commit complete.

 

SQL> alter system switch logfile;

System altered.

 

SQL> select sal from scott.emp;

 

         SAL

----------

         840

        1640

        1290

        3015

        1290

        2890

        2490

        3040

        5040

        1540

        1140

 

         SAL

----------

         990

        3040

        1340

 

14 rows selected.

 

2.4  试验(模拟删除控制文件)

模拟数据库崩溃,删除控制文件,此时数据库还在继续运行,可能要过一会切换日志崩溃。这里我直接重启一下数据库

[oracle@TEST144239 orcl]$ cd   /data2/orcl

[oracle@TEST144239 orcl]$ ll

总用量 1666384

-rw-r----- 1 oracle oinstall   9748480 10月 12 15:15 control01.ctl

drwxr-xr-x 3 oracle oinstall      4096 10月 10 10:48 recover_log

-rw-r----- 1 oracle oinstall  52429312 10月 12 14:53 redo01.log

-rw-r----- 1 oracle oinstall  52429312 10月 12 15:08 redo02.log

-rw-r----- 1 oracle oinstall  52429312 10月 12 15:15 redo03.log

-rw-r----- 1 oracle oinstall   681582592 10月   12 15:14 sysaux01.dbf

-rw-r----- 1 oracle oinstall   754982912 10月   12 15:14 system01.dbf

-rw-r----- 1 oracle oinstall  30416896 10月 12 14:33 temp01.dbf

-rw-r----- 1 oracle oinstall  94380032 10月 12 15:15 undotbs01.dbf

-rw-r----- 1 oracle oinstall   5251072 10月 12 15:13 users01.dbf

[oracle@TEST144239 orcl]$ mv   control01.ctl control01.ctl.bak

[oracle@TEST144239 orcl]$ ll

总用量 1666384

-rw-r----- 1 oracle oinstall   9748480 10月 12 15:15 control01.ctl.bak

drwxr-xr-x 3 oracle oinstall      4096 10月 10 10:48 recover_log

-rw-r----- 1 oracle oinstall  52429312 10月 12 14:53 redo01.log

-rw-r----- 1 oracle oinstall  52429312 10月 12 15:08 redo02.log

-rw-r----- 1 oracle oinstall  52429312 10月 12 15:15 redo03.log

-rw-r----- 1 oracle oinstall   681582592 10月   12 15:15 sysaux01.dbf

-rw-r----- 1 oracle oinstall   754982912 10月   12 15:14 system01.dbf

-rw-r----- 1 oracle oinstall  30416896 10月 12 14:33 temp01.dbf

-rw-r----- 1 oracle oinstall  94380032 10月 12 15:15 undotbs01.dbf

-rw-r----- 1 oracle oinstall   5251072 10月 12 15:13 users01.dbf

SQL> startup force

ORACLE instance started.

 

Total System Global Area 1937457152   bytes

Fixed Size                  2229584 bytes

Variable Size            1241516720 bytes

Database Buffers          687865856 bytes

Redo Buffers                5844992 bytes

ORA-00205:   error in identifying control file, check alert log for more info

查看告警信息了,无法启动!

 

3    恢复数据库

3.1  假定没有设置Oracle_SID,设置Oracle_SID启动一个伪实例

$ORACLE_SID查看原来的SID。这里是假设原来$ORACLE_SID没设置的情况下:

[oracle@TEST144239 ~]$ export ORACLE_SID=test

[oracle@TEST144239 ~]$ echo $ORACLE_SID

test

[oracle@TEST144239 ~]$ rman target /

 

Recovery Manager: Release 11.2.0.3.0 - Production on Mon   Oct 12 15:45:22 2015

 

Copyright (c) 1982, 2011, Oracle and/or its   affiliates.  All rights reserved.

 

connected to target database (not started)

 

RMAN> startup nomount

 

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

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

 

starting Oracle instance without parameter file for   retrieval of spfile

 

Oracle instance started

Total System Global Area     158662656 bytes

Fixed Size                     2226456 bytes

Variable Size                130025192 bytes

Database Buffers              20971520 bytes

Redo Buffers                   5439488 bytes

 

此时查看下[oracle@TEST144239 orcl]$ cd   /u01/app/oracle/product/11.2.0/db_1/dbs/ 中产生的文件:

[oracle@TEST144239 dbs]$ ll

总用量 9540

-rw-rw---- 1 oracle oinstall    1544 10月 12 15:18 hc_orcl.dat

-rw-r--r-- 1 oracle oinstall    2851 5月    15 2009 init.ora

-rw-r----- 1 oracle oinstall       0 10月 12 15:45 lkinsttest

-rw-r----- 1 oracle oinstall      24 10月    9 11:53 lkORCL

-rw-r----- 1 oracle oinstall    1536 10月    9 12:02 orapworcl

-rw-r----- 1 oracle oinstall 9748480 10月 12 14:53 snapcf_orcl.f

-rw-r----- 1 oracle oinstall    2560 10月 12 09:18 spfileorcl.ora

 

3.2  恢复spfile

RMAN> restore spfile from '/u01/app/oracle/fast_recovery_area/ORCL/autobackup/2015_10_12/o1_mf_s_892911216_c1pp7o9p_.bkp';  

 

Starting restore at 12-OCT-15

using target database control file instead of recovery   catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=429 device type=DISK

 

channel ORA_DISK_1: restoring   spfile from AUTOBACKUP /u01/app/oracle/fast_recovery_area/ORCL/autobackup/2015_10_12/o1_mf_s_892911216_c1pp7o9p_.bkp

channel ORA_DISK_1: SPFILE restore from AUTOBACKUP   complete

Finished restore at 12-OCT-15

此时参数文件恢复完成,此时,在DBS目录下有一个以当前oracle_sid.ora为后缀的参数文件:

[oracle@TEST144239 dbs]$ ll

总用量 9548

-rw-rw---- 1 oracle oinstall    1544 10月 12 15:18 hc_orcl.dat

-rw-rw---- 1 oracle oinstall    1544 10月 12 15:47 hc_test.dat

-rw-r--r-- 1 oracle oinstall    2851 5月    15 2009 init.ora

-rw-r----- 1 oracle oinstall      24 10月    9 11:53 lkORCL

-rw-r----- 1 oracle oinstall    1536 10月    9 12:02 orapworcl

-rw-r----- 1 oracle oinstall 9748480 10月 12 14:53 snapcf_orcl.f

-rw-r----- 1 oracle oinstall    2560 10月 12 09:18 spfileorcl.ora

-rw-r----- 1 oracle oinstall    2560 10月 12 15:47 spfiletest.ora

 

 

3.3  恢复控制文件

停掉伪实例,还原原来的参数文件名,原来是ORACLE_SID=orcl

RMAN> shutdown immediate

Oracle instance shut down

[oracle@TEST144239 dbs]$ mv   spfiletest.ora spfileorcl.ora

[oracle@TEST144239 dbs]$ ll

总用量 9544

-rw-rw---- 1 oracle oinstall    1544 10月 12 15:18 hc_orcl.dat

-rw-rw---- 1 oracle oinstall    1544 10月 12 16:08 hc_test.dat

-rw-r--r-- 1 oracle oinstall    2851 5月    15 2009 init.ora

-rw-r----- 1 oracle oinstall      24 10月    9 11:53 lkORCL

-rw-r----- 1 oracle oinstall    1536 10月    9 12:02 orapworcl

-rw-r----- 1 oracle oinstall 9748480   10月   12 14:53 snapcf_orcl.f

-rw-r----- 1 oracle oinstall    2560 10月 12 15:47 spfileorcl.ora

恢复控制文件:

[oracle@TEST144239 ~]$ export ORACLE_SID=orcl

[oracle@TEST144239 ~]$ rman target /

 

Recovery Manager: Release 11.2.0.3.0 - Production on Mon   Oct 12 16:16:03 2015

 

Copyright (c) 1982, 2011, Oracle and/or its   affiliates.  All rights reserved.

 

connected to target database (not started)

 

RMAN> startup nomount

 

Oracle instance started

 

Total System Global Area      1937457152 bytes

 

Fixed Size                     2229584 bytes

Variable Size                 1241516720 bytes

Database Buffers             687865856 bytes

Redo Buffers                   5844992 bytes

RMAN> restore controlfile from '/u01/app/oracle/fast_recovery_area/ORCL/autobackup/2015_10_12/o1_mf_s_892911216_c1pp7o9p_.bkp';  

 

Starting restore at 12-OCT-15

using target database control file instead of recovery   catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=63 device type=DISK

 

channel ORA_DISK_1: restoring control file

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

output file name=/data2/orcl/control01.ctl

output file   name=/u01/app/oracle/fast_recovery_area/orcl/control02.ctl

Finished restore at 12-OCT-15

 

 

3.4  恢复数据库

RMAN> alter database mount;

 

database mounted

released channel: ORA_DISK_1

 

 

RMAN> run{

2>    restore database;

3>    recover database;

4>    };

 

Starting restore at 12-OCT-15

Starting implicit crosscheck backup at 12-OCT-15

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=63 device type=DISK

allocated channel: ORA_DISK_2

channel ORA_DISK_2: SID=129 device type=DISK

allocated channel: ORA_DISK_3

channel ORA_DISK_3: SID=193 device type=DISK

Crosschecked 7 objects

Crosschecked 50 objects

Finished implicit crosscheck backup at 12-OCT-15

 

Starting implicit crosscheck copy at 12-OCT-15

using channel ORA_DISK_1

using channel ORA_DISK_2

using channel ORA_DISK_3

Crosschecked 6 objects

Finished implicit crosscheck copy at 12-OCT-15

 

searching for all files in the recovery area

cataloging files...

cataloging done

 

List of Cataloged Files

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

File Name:   /u01/app/oracle/fast_recovery_area/ORCL/autobackup/2015_10_12/o1_mf_s_892911216_c1pp7o9p_.bkp

 

using channel ORA_DISK_1

using channel ORA_DISK_2

using channel ORA_DISK_3

 

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 00002 to   /data2/orcl/sysaux01.dbf

channel ORA_DISK_1: restoring datafile 00004 to   /data2/orcl/users01.dbf

channel ORA_DISK_1: reading from backup piece   /u01/app/oracle/fast_recovery_area/ORCL/backupset/2015_10_12/o1_mf_nnndf_TAG20151012T145203_c1pp4phv_.bkp

channel ORA_DISK_2: starting datafile backup set restore

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

channel ORA_DISK_2: restoring datafile 00001 to   /data2/orcl/system01.dbf

channel ORA_DISK_2: restoring datafile 00003 to   /data2/orcl/undotbs01.dbf

channel ORA_DISK_2: reading from backup piece   /u01/app/oracle/fast_recovery_area/ORCL/backupset/2015_10_12/o1_mf_nnndf_TAG20151012T145203_c1pp4o7j_.bkp

channel ORA_DISK_1: piece   handle=/u01/app/oracle/fast_recovery_area/ORCL/backupset/2015_10_12/o1_mf_nnndf_TAG20151012T145203_c1pp4phv_.bkp   tag=TAG20151012T145203

channel ORA_DISK_1: restored backup piece 1

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

channel ORA_DISK_2: piece   handle=/u01/app/oracle/fast_recovery_area/ORCL/backupset/2015_10_12/o1_mf_nnndf_TAG20151012T145203_c1pp4o7j_.bkp   tag=TAG20151012T145203

channel ORA_DISK_2: restored backup piece 1

channel ORA_DISK_2: restore complete, elapsed time:   00:01:25

Finished restore at 12-OCT-15

 

Starting recover at 12-OCT-15

using channel ORA_DISK_1

using channel ORA_DISK_2

using channel ORA_DISK_3

 

starting media recovery

 

archived log for thread 1 with sequence 34 is already on   disk as file /data2/orcl/redo01.log

archived log for thread 1 with sequence 35 is already on   disk as file /data2/orcl/redo02.log

archived log for thread 1 with sequence 36 is already on   disk as file /data2/orcl/redo03.log

archived log file name=/data2/orcl/redo01.log thread=1   sequence=34

archived log file name=/data2/orcl/redo02.log thread=1   sequence=35

archived log file name=/data2/orcl/redo03.log thread=1   sequence=36

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

Finished recover at 12-OCT-15

 

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

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

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

RMAN-00558: error encountered while parsing input commands

RMAN-01009: syntax error: found ";": expecting   one of: "advise, allocate, alter, backup, @, catalog, change, configure,   connect, convert, copy, create, crosscheck, delete, drop, duplicate, exit,   flashback, grant, host, import, list, mount, open, print, quit, recover,   register, release, repair, replace, report, reset, restore, resync, revoke,   run, send, set, show, shutdown, spool, sql, startup, switch, transport,   unregister, upgrade, validate, {, "

RMAN-01007: at line 0 column 3 file: standard input

 

[oracle@TEST144239 onlinelog]$   sqlplus / as sysdba

 

SQL*Plus: Release 11.2.0.3.0 Production on Mon Oct 12 16:31:51   2015

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

 

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0   - 64bit Production

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

 

SQL> select sal from scott.emp;

       SAL

----------

       840

      1640

      1290

      3015

      1290

      2890

      2490

      3040

      5040

      1540

      1140

 

       SAL

----------

       990

      3040

      1340

 

14 rows selected.

 

 

4    附

connect target /

RMAN> CONFIGURE RETENTION POLICY   TO REDUNDANCY 2;

 

new RMAN configuration parameters:

CONFIGURE RETENTION POLICY TO   REDUNDANCY 2;

new RMAN configuration parameters are   successfully stored

 

RMAN> run {

2> allocate channel d1 device type   disk;

backup

full

3> 4> 5> format   '/data2/backup/%d_%s_%p_%t.db'

6> tag dbfull

7> database;

8> sql 'alter system archive log   current';

9> backup archivelog all

10> format   '/data2/backup/%d_%s_%p_%t.arch'

11> tag dbarch;

12> backup spfile

13> format   '/data2/backup/%d_%s_%p_%t.spfile'

14> tag dbspfile;

15> backup

16> format   '/data2/backup/%d_%s_%p_%t.ctl'

17> tag dbctl

18> current controlfile;

19> release channel d1;

20> }

 

RMAN>crosscheck backup;

RMAN>delete noprompt expired backup;

RMAN>delete noprompt obsolete;