rman 搭建,备份,恢复基础练习

一:Rman的搭建
二:Rman的备份
三:Rman的恢复
四:Rman的级别
五:Rman备份的删除
=========================================================================================================================
                                                                                                      一:Rman的搭建
=========================================================================================================================
========================================
les 09 oracle recover manager  ---rman
========================================
1:物理备份
2:只备份有数据的部分,不备份没有分配的exents    ----而如果用操作系统命令备份会将整个段(包括段里所有的区)都备份
3:可以增量备份
4:并行
5:可以检查块(如果有坏块能检测出来)
6:打包
7:支持磁带(带库)  (如果不用rman,想把数据备份到磁带上,需要先备份到磁盘上,然后在通过tar命令把磁盘上的数据导到磁带上)
8:可以不用知道结构和备份信息(如果用操作系统命令备份,需要知道结构和备份信息)


为什么有这么多优点?


rman备份是block级别的备份(rman是oracle生产的工具,所以oracle公司知道oracle数据库的block结构)
rman备份是服务器的备份,用oracle server进程可以知道block的格式

Rman在oracle8.0就已经存在;


                           Rman
                            |
                            |
                            |
目标DB(装数据)------------------------------&gt 恢复目录DB(装目标DB的结构,装目标DB的备份信息)
app_data                 |                   :app_data在/u01/app/oracle/oradata/db02
                             |                    
                             |
                             |
                   磁盘(磁带)(装备份信息)




不建议将目标DB和恢复目录DB放在同一个数据库里,同一个机器里;
可以将放在另一个库里
可以放在目标数据库的控制文件里(省钱),目标数据库只要能mount就能查看恢复目录信息;                     
数据在控制文件中保存的时间由参数 control_file_record_keep_time
SQL> show parameter control_file_record_keep_time


NAME     TYPE VALUE
------------------------------------ ----------- ----------
control_file_record_keep_time     integer 7       ----------------只能保存7天;




一周做一次全备
每天备一次增量备份


如果某一天数据库损坏了,需要用一周前的全备和一周以后每一天的增量备份;




SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options


11g Enterprise Edition  ------企业版oracle默认有Rman






连接:
Rman 连接目标数据库时数据库必须是启动的,因为是用oracle server进程连接的;控制文件必须是打开的


rman target sys/oracle nocatalog       -------------目标数据库的控制文件作为恢复目录数据库;


RMAN>list backup;


RMAN>report schema;   --------结构信息




filesperset 5 ---每5个文件打成一个包




run(要成功一起成功,要失败都失败,相当与一个事务)






恢复目录DB:结构信息
          备份信息


管道:手工分配(8.0,8i)  allocate channel 1 type disk[会启动一个server进程,配多个管道会多个进程共同完成,并行]
     自动分配(9i以后)   configure channel device type disk format '/db01/backup/%u';




恢复目录DB位置:1 目标数据库的控制文件里
             2 另一个数据库


=======================
1 目标数据库的控制文件里
=======================


RMAN> show all
2> ;


RMAN configuration parameters for database with db_unique_name DB02 are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/11.2.0/dbs/snapcf_db02.f'; # default


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> show all;


RMAN configuration parameters for database with db_unique_name DB02 are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;                               ------------冗余的改为两份
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/11.2.0/dbs/snapcf_db02.f'; # default






==================================================
les 17 Recovery Catalog Creation and Maintenance
==================================================


=========================
2 恢复目录数据库为另一个数据库
=========================


恢复目录数据库存储的文件


1 备份信息:数据文件和归档重做日志的备份
2 结构   :目标数据库的结构信息
3 常用的脚本


一个恢复目录数据库可以管多个数据库
目标数据库和恢复目录数据库可以互相做








                           Rman
                            |
       DB1   ------         |
                  |         |
目标DB(装数据)------------------------------&gt 恢复目录DB(装目标DB的结构,装目标DB的备份信息)
app_data          |      |                   :app_data在/u01/app/oracle/oradata/db02
        DB3  ------      |                    
                         |
                         |
                   磁盘(磁带)(装备份信息)






1:创建数据库 orcl(恢复目录数据库)
2:创建表空间Rmantbs
3:创建用户Rman
4:对用户授权
5:用Rman连接  RMAN>
6:创建表(存储目标数据库的信息)
7:注册
8:维护




2:Create tablespace rmantbs datafile '/u01/oracle/oradata/orcl/rmantbs01.dbf' size 200M;


3:create user rman identified by rman 
  default tablespace rmantbs 
  temporary tablespace temp;


4:grant connect,resource to rman;
grant recovery_catalog_owner to rman;


5:lsnrctl status
sqlplus
scott/tiger@orcl


6:
export ORACLE_HOME=db02


rman target sys/oracle catalog rman/rman@orcl


RMAN>create catalog tablespace "RMANTBS";
=====
orcl
=====
SQL> select name from v$tablespace;


NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
USERS
TEMP
EXAMPLE
LX_CHEN
RMANTBS         ------------创建成功


8 rows selected.




7:
RMAN>register database;        --------将目标数据库的信息注册到catalog数据库里




catalog 数据库
select * from rc_database;
 






=============
具体步骤
=============
目标数据库:db02
catalog数据库:orcl


如何启动第二个数据库?
[oracle@chen oradata]$ cd $ORACLE_HOME/dbs


[oracle@chen dbs]$ vim initorcl.ora
#*.memory_target=771751936
*.memory_target=371751936


[oracle@chen dbs]$ export ORACLE_SID=orcl


[oracle@chen dbs]$ rlwrap sqlplus


SQL> select name from v$database;


NAME
---------
ORCL


[oracle@chen ~]$ lsnrctl


LSNRCTL> status
Services Summary...
Service "db02" has 1 instance(s).
  Instance "db02", status READY, has 1 handler(s) for this service...
Service "db02XDB" has 1 instance(s).
  Instance "db02", status READY, has 1 handler(s) for this service...
Service "orcl" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully








  =====
1:orcl
  =====
2:
SQL> create tablespace rmantbs datafile '/u01/app/oracle/oradata/orcl/rmantbs01.dbf' size 100M;


Tablespace created.


3:
SQL> create user rman identified by rman 
  2  default tablespace rmantbs
  3  temporary tablespace temp;


User created.


4:
SQL> grant connect,resource to rman;


Grant succeeded.


SQL> grant RECOVERY_CATALOG_OWNER to rman;


Grant succeeded.




5:[oracle@chen ~]$ rman target sys/oracle@db02 catalog rman/rman@orcl


Recovery Manager: Release 11.2.0.3.0 - Production on Tue Jun 24 08:49:14 2014


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


connected to target database: DB02 (DBID=1598433958)
connected to recovery catalog database


RMAN> 




6:
RMAN> create catalog tablespace "RMANTBS";


recovery catalog created




7:
RMAN> register database;


database registered in recovery catalog
starting full resync of recovery catalog
full resync complete


=====
orcl
=====
SQL> conn rman/rman


SQL> select * from tab;
.....
142 rows selected.




=====
db02
=====
create script Level0Backup {
backup
incremental level 0
format ‘/u01/db01/backup/%d_%s_%p’
filesperset 5
(database include current controlfile);
sql ‘alter system archive log current’;


=====
orcl 
=====
conn rman/man
SQL> select * from rc_stored_script;














=========================================================================================================================
                                                                  二:less 11 RMAN Backups
=========================================================================================================================
1:Image copy
2:Backup set   ---可以直接写入磁盘或磁带
               ---数据文件可以增量备份,也可以全备
               ---不备份没有使用的块


Backup Piece:
A backup piece is a file in a backup set.
A backup piece can contain blocks from more than one datafile.


Backup Piece Size
Backup piece size can be limited as follows:


==============
1:Image copy
==============
备份:1 备份数据文件
     2 备份归档日志
     3 备份控制文件
https://localhost:1158/em


======
db02
======
SQL> set linesize 100
SQL> col file_name for a50
SQL> select file_name,file_id from dba_data_files;


FILE_NAME      FILE_ID
-------------------------------------------------- ----------
/u01/app/oracle/oradata/db02/users01.dbf    4
/u01/app/oracle/oradata/db02/undotbs01.dbf    3
/u01/app/oracle/oradata/db02/sysaux01.dbf    2
/u01/app/oracle/oradata/db02/system01.dbf    1
/u01/app/oracle/oradata/db02/lx_db02.dbf    5










一:备份数据文件
[oracle@chen ~]$ rman target sys/oracle@db02 catalog rman/rman@orcl


RMAN> run{
2> allocate channel d1 type disk;              -------在磁盘上创建一个管道   
3> copy datafile 5 to '/u01/app/oracle/oradata/bak/lx_dd01.dbf';
4> }


RMAN> list copy;


specification does not match any control file copy in the repository
specification does not match any archived log in the repository
List of Datafile Copies
=======================


Key     File S Completion Time Ckp SCN    Ckp Time       
------- ---- - --------------- ---------- ---------------
2       5    A 23-JUN-14       1020184    23-JUN-14      
        Name: /u01/app/oracle/oradata/bak/lx_dd01.dbf
        Tag: TAG20140623T174948


[oracle@chen bak]$ ls
db_32_1.bus01  db_35_1.bus01  db_37_1.bus01
db_33_1.bus01  db_36_1.bus01  lx_dd01.dbf


RMAN>report schema;


二:备份归档文件


run{
   allocate channel d1 type disk;    -------在磁盘上创建一个管道
   copy archivelog '/u01/oracle/oradata/db02/archive2/app/db02_111.arc' to '/u01/....../bak/...arc';


RMAN> run
2> {
3> allocate channel d1 type disk;
4> copy archivelog '/home/oracle/db02_archive1/db02_1851001130_11.arc' to '/u01/app/oracle/oradata/db_archive01.arc';
5> }




三:备份控制文件


RMAN> run{
2> allocate channel d1 type disk;
3> copy current controlfile to '/u01/app/oracle/oradata/bak/control01.ctl';
4> }


RMAN> list copy of controlfile;


List of Control File Copies
===========================


Key     S Completion Time Ckp SCN    Ckp Time       
------- - --------------- ---------- ---------------
3       A 23-JUN-14       1020865    23-JUN-14      
        Name: /u01/app/oracle/oradata/bak/control01.ctl
        Tag: TAG20140623T180435


[oracle@chen bak]$ ls
control01.ctl  db_33_1.bus01  db_36_1.bus01  lx_dd01.dbf
db_32_1.bus01  db_35_1.bus01  db_37_1.bus01




三个拷贝一起执行


run{
    allocate channel d1 type disk;
    allocate channel d2 type disk;
    allocate channel d3 type disk;


copy datafile 4 to /u01/oracle/oradata/bak/app_data01.dbf',
     archivelog '/u01/oracle/oradata/db02/archive2/db02_111.arc' to '/u01/....../bak/...arc',
     current controlfile to '/u01/oracle/oradata/bak/control.ctl';


RMAN> run{
2> allocate channel d1 type disk;
3> allocate channel d2 type disk;
4> copy datafile 5 to '/u01/app/oracle/oradata/bak/lx_02.dbf';
5> copy current controlfile to '/u01/app/oracle/oradata/bak/control2.ctl';
6> }


RMAN> list copy of controlfile;


List of Control File Copies
===========================


Key     S Completion Time Ckp SCN    Ckp Time       
------- - --------------- ---------- ---------------
5       A 23-JUN-14       1021404    23-JUN-14      
        Name: /u01/app/oracle/oradata/bak/control2.ctl
        Tag: TAG20140623T181334


3       A 23-JUN-14       1020865    23-JUN-14      
        Name: /u01/app/oracle/oradata/bak/control01.ctl
        Tag: TAG20140623T180435




数据文件少时(20个文件一下)用image copy;












====================
二:backup set 备份集
====================
                  可以将文件打包,多个文件打包成一个文件,易于管理,操作系统备份办不到;
                  只备份有数据的地方,不备份没有分配的extents;   ---(因为他是基于block的备份)
                  可以将数据备份到磁带上;
                  资源限制;(I/O限制)---备份时可以调节所占的I/O


备份集是一个逻辑的概念;
备份出来的数据称为备份片:piece








datafile级别的     :


tablespace级别的   :


database级别的     :


run{
    allocate channel d1 type disk;
    backup datafile 4 format '/u01/app/oracle/oradata/bak/db02_%s_%p.chen';
    backup datafile 5 format '/u01/app/oracle/oradata/bak/db02_%s_%p.chen';
    backup datafile 6 format '/u01/app/oracle/oradata/bak/db02_%s_%p.chen';


上一条命令可以简写:


run{
    allocate channel d1 type disk format '/u01/app/oracle/oradata/bak/db02_%s_%p.chen';
    backup datafile 4;
    backup datafile 5;
    backup datafile 6;






1:备份数据文件   --------只备份有数据的地方,速度快


RMAN> run{
2> allocate channel d1 type disk format '/u01/app/oracle/oradata/bak/db02_%s_%p.chen';
3> backup datafile 5;
4> }


RMAN> list backup;




List of Backup Sets
===================




BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
32      Full    1.07M      DISK        00:00:01     23-JUN-14      
        BP Key: 32   Status: AVAILABLE  Compressed: NO  Tag: TAG20140623T184232
        Piece Name: /u01/app/oracle/oradata/bak/db02_43_1.chen
  List of Datafiles in backup set 32
  File LV Type Ckp SCN    Ckp Time  Name
  ---- -- ---- ---------- --------- ----
  5       Full 1022221    23-JUN-14 /u01/app/oracle/oradata/db02/lx_db02.dbf








备份表空间
SQL> select segment_name,tablespace_name from user_segments;


SEGMENT_NAME   TABLESPACE_NAME
-------------------------------------------------- ------------------------------
DEPT   USERS
EMP   USERS
SALGRADE   USERS
LX_TAB   LX_DB02
T1   LX_DB02
T2   LX_DB02
T3   LX_DB02
T4   LX_DB02
PK_DEPT   USERS
PK_EMP   USERS


10 rows selected.


run{
allocate channel d1 type disk format '/u01/oracle/oradata/bak/tbs_%s_%p.bus';
backup tablespace app_data filesperset 3;   -------每三个文件形成一个文件集




RMAN> run{
2> allocate channel d1 type disk format '/u01/app/oracle/oradata/bak/ccc_%s_%p.cccs';
3> backup tablespace lx_db02 filesperset 3;
4> }










RMAN> list backup of datafile 4;                       ------查看datafile4的备份信息,相当与过滤条件where;
RMAN> list backup of tablespace app_data;
















[oracle@chen admin]$ rlwrap rman target sys/oracle@orcl nocatalog                ---------用目标数据库的控制文件做为目标文件的回复目录数据库


Recovery Manager: Release 11.2.0.3.0 - Production on Mon Jun 23 12:15:49 2014


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


connected to target database: ORCL (DBID=1378775808)
using target database control file instead of recovery catalog


RMAN> 








====================
备份数据库   ----全备份
====================


database 约等于 datafile


---------------备份数据文件包括当前的控制文件
RMAN> run{
2> allocate channel d1 type disk format '/u01/app/oracle/oradata/bak/db_%s_%p.aaa';
3> backup database include current controlfile filesperset 3;
4> }


[oracle@chen bak]$ ls
ccc_44_1.cccs  db02_43_1.chen  db_45_1.aaa  db_46_1.aaa  db_47_1.aaa










RMAN> list backup of controlfile;


List of Backup Sets
===================




BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
36      Full    9.33M      DISK        00:00:01     23-JUN-14      
        BP Key: 36   Status: AVAILABLE  Compressed: NO  Tag: TAG20140623T185719
        Piece Name: /u01/app/oracle/oradata/bak/db_47_1.aaa
  Control File Included: Ckp SCN: 1022770      Ckp time: 23-JUN-14


RMAN> list backup;


rman能够备份的有:数据文件,控制文件,归档文件


























============
备份控制文件:
============
RMAN> run{
2> allocate channel d1 type disk format '/u01/app/oracle/oradata/bak/db_%s_%p.qqq';
3> backup current controlfile;
4> }




自动备份控制文件:


RMAN> show all;


CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default    -----默认是关闭的


RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;


new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
new RMAN configuration parameters are successfully stored




RMAN> show all;


CONFIGURE CONTROLFILE AUTOBACKUP ON;








============
归档文件的备份
============
RMAN> list copy;    ---查看归档模式       只有备份以后的归档对我们才有用,备份之前的归档对我们没有用,需要删除;


specification does not match any datafile copy in the repository
specification does not match any control file copy in the repository
List of Archived Log Copies for database with db_unique_name DB02
=====================================================================


Key     Thrd Seq     S Low Time 
------- ---- ------- - ---------
2       1    2       A 23-JUN-14
        Name: /home/oracle/db02_archive2/db02_1851001130_2.arc


1       1    2       A 23-JUN-14
        Name: /home/oracle/db02_archive1/db02_1851001130_2.arc




RMAN> run{
2> allocate channel d1 type disk format '/u01/app/oracle/oradata/bak/db_%s_%p.ooooo';
3> backup archivelog all;
4> }


RMAN> list backup;












=========================================================================================================================
                                                                三:Rman的恢复
=========================================================================================================================
Rman 恢复
1:完全恢复---datafile
            tablespace
            database
            更改恢复目录


2:不完全恢复--基于时间点的恢复
           --基于取消的恢复


===============================
1:完全恢复
===============================




恢复:noarchive 破坏一个文件,或者一个表空间,或者整个数据库 恢复时都需要恢复整个数据库;
     archive   完全恢复 :破坏一个文件(system)
                            一个文件(非 system)
                            表空间
                            数据库database     ---恢复database,tablespace,datafile






run{
   allocate channel d1 type disk;
   restore datafile 4;                 --------相当与解压文件集,数据到T1时刻,其他文件在T2时刻,需要由归档或日志补齐
   recover datafile 4;
                                           


案例场景: datafile文件级别的恢复
        1 备份 ---&gt1200
        2 update---&gt1300
        3 破坏
        4 恢复


=====
db02
=====
conn scott/tiger
update emp set sal=1300 where empno=7369;
commit;


conn sys/oracle as sysdba


shutdown immediate;


oracle@chen db02]$ rm -rf users01.dbf


startup 


select * from v$recover_file;


rman target sys/oracle catalog rman/rman@orcl     -------catalog数据库必须open,因为写入表空间了


RMAN>run{
   allocate channel d1 type disk;
   restore datafile 4;                 --------相当与解压文件集,数据到T1时刻,其他文件在T2时刻,需要由归档或日志补齐
   recover datafile 4;
}


RMAN>alter database open;


sqlplus


scott/tiger


select empno,ename,sal from emp;






========
具体步骤
========
1:备份
SQL> select name from v$database;


NAME
---------
DB02


SQL> select * from t1 where empno=7369;


     EMPNO ENAME     SAL
---------- ---------- ----------
      7369 SMITH     800


SQL> update t1 set sal=1000 where empno=7369;


1 row updated.


SQL> commit;


SQL> select segment_name,tablespace_name from user_segments;


SEGMENT_NAME   TABLESPACE_NAME
-------------------------------------------------- ------------------------------
DEPT   USERS
EMP   USERS
LX_TAB   LX_DB02
PK_DEPT   USERS
PK_EMP   USERS
SALGRADE   USERS
T1   LX_DB02


7 rows selected.




[oracle@chen ~]$ rlwrap rman target sys/oracle catalog rman/rman@orcl


Recovery Manager: Release 11.2.0.3.0 - Production on Tue Jun 24 10:15:01 2014


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


connected to target database: DB02 (DBID=1598433958)
connected to recovery catalog database


RMAN> run{
2> allocate channel d1 type disk format '/u01/app/oracle/oradata/bak/kkk_%s_%p.chen';
3> backup database filesperset 3;
4> }


2:
SQL> conn scott/tiger
Connected.
SQL> update t1 set sal=1300 where empno=7369;


1 row updated.


SQL> commit;


Commit complete.


3:破坏
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.


[oracle@chen db02]$ mv lx_db02.dbf lx_db02.dbf.bak


4:恢复
SQL> startup
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.


Total System Global Area  371617792 bytes
Fixed Size    2228504 bytes
Variable Size  251662056 bytes
Database Buffers  113246208 bytes
Redo Buffers    4481024 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 5 - see DBWR trace file
ORA-01110: data file 5: '/u01/app/oracle/oradata/db02/lx_db02.dbf'


[oracle@chen ~]$ rlwrap rman target sys/oracle catalog rman/rman@orcl


RMAN> run{
2> allocate channel d1 type disk;
3> restore datafile 5;
4> recover datafile 5;
5> }


RMAN> alter database open;


database opened


[oracle@chen ~]$ rlwrap sqlplus


SQL> select name from v$database;


NAME
---------
DB02


SQL> conn scott/tiger
Connected.


SQL> select * from t1 where empno=7369;


     EMPNO ENAME     SAL
---------- ---------- ----------
      7369 SMITH    1300






















二:表空间级别的恢复


run{
    allocate channel d1 type disk;
    restore tablespace app_data;                  ----数据恢复到t1
    recover tablespace app_data;                  ----通过归档将数据由t1推到t2
}




案例场景: datafile文件级别的恢复
        1 备份 ---&gt1200
        2 update---&gt1300
        3 破坏
        4 恢复




alter tablespace app_data offline;


rm -rf app_data01.dbf


alter tablespace app_data online; --失败


RMAN>run{
    allocate channel d1 type disk;
    restore tablespace app_data;                  ----数据恢复到t1
    recover tablespace app_data;                  ----通过归档将数据由t1推到t2
}
  


alter tablespace app_data online;


select empno,ename,sal from scott.emp;




==========
具体步骤
==========
1:备份
之前已经有一个全备了


2:1300


3:破坏
SQL> select name from v$tablespace;


NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
USERS
TEMP
LX_DB02


6 rows selected.


SQL> alter tablespace lx_db02 offline;


Tablespace altered.


[oracle@chen db02]$ mv lx_db02.dbf lx_db02.dbf.bak


SQL> alter tablespace lx_db02 online;
alter tablespace lx_db02 online
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 5 - see DBWR trace file
ORA-01110: data file 5: '/u01/app/oracle/oradata/db02/lx_db02.dbf'


4:恢复
[oracle@chen ~]$ rlwrap rman target sys/oracle catalog rman/rman@orcl


RMAN> run{
2> allocate channel d1 type disk;
3> restore tablespace lx_db02;
4> recover tablespace lx_db02;
5> }


SQL> alter tablespace lx_db02 online;


Tablespace altered.


SQL> select * from scott.t1 where empno=7369;


     EMPNO ENAME     SAL
---------- ---------- ----------
      7369 SMITH    1300






==================
更改恢复目录
==================




如果目标数据库的恢复目录所在的磁盘损坏,数据不能恢复到指定目录,如何解决?
将指定目录转到其他的目录下;
run{
allocate channel d1 type disk;
set newname for datafile 4 to '/u01/oracle/oradata/db02/tbs/app_data01.dbf'; 
restore tablespace app_data;
switch datafile 4;                                ----------------------------------如果有多个文件可以写成switch datafile all;
recover tablespace app_data;




alter tablespace app_data offline;


rm -rf app_data01.dbf


alter tablesapce app_data online;  ---失败


rman>run{
allocate channel d1 type disk;
set newname for datafile 4 to '/u01/oracle/oradata/db02/tbs/app_data01.dbf';               ---目录tbs应该提前创建
restore tablespace app_data;
switch datafile 4;
recover tablespace app_data;
}


sql>altert tablespace app_data online;


select * from emp where empno=7369;


=========
具体步骤
=========
[oracle@chen oradata]$ mkdir tbs


[oracle@chen oradata]$ ls
bak  db02  orcl  tbs


1:破坏
SQL> alter tablespace lx_db02 offline;


Tablespace altered.


[oracle@chen db02]$ mv lx_db02.dbf lx_db02.dbf.bak


SQL> alter tablespace lx_db02 online;
alter tablespace lx_db02 online
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 5 - see DBWR trace file
ORA-01110: data file 5: '/u01/app/oracle/oradata/db02/lx_db02.dbf'


2:恢复
[oracle@chen ~]$ rlwrap rman target sys/oracle catalog rman/rman@orcl


RMAN> run{
2> allocate channel d1 type disk;
3> set newname for datafile 5 to '/u01/app/oracle/oradata/tbs/lx_dbccc.dbf';
4> restore tablespace lx_db02;
5> switch datafile 5;                    --------更改控制文件的结构
6> recover tablespace lx_db02;
7> }




SQL> alter tablespace lx_db02 online;


Tablespace altered.


SQL> select * from scott.t1 where empno=7369;


     EMPNO ENAME     SAL
---------- ---------- ----------
      7369 SMITH    1300














==========
全部恢复
==========


所以的数据文件都坏了?
全部恢复


run{
   allocate channel d1 type disk;
   restore database;                ---------将打包的数据分发出来
   recover database;                ---------利用归档改数据
}




shutdown immediate;


rm -rf *.dbf


startup


exit


rman target sys/oracle catalog rman/rman@orcl


RMAN>run{
   allocate channel d1 type disk;
   restore database;                ---------将打包的数据分发出来
   recover database;                ---------利用归档改数据
}




alter database open;


select empno,ename,sal from scott.emp where empno=7369;






===============
Rman不完全恢复
===============




Rman
不完全恢复:基于时间点的恢复   (用户误操作)       --------预防:1对用户做培训 2对用户权限做限制
          基于取消的恢复    (归档或当前日志被破坏)
          基于备份的控制文件 (相当与基于时间点的恢复)


Incomplete Recovery of a Database Using RMAN


1 Mount the database.
2 Allocate multiple channels for parallelization.
3 Restore all datafiles.
4 Recover the database by using UNTIL TIME, UNTIL SEQUENCE, or UNTIL SCN.
5 Open the database by using RESETLOGS.
6 Perform a whole database backup.




=============
les 15
=============
一个管道就是一个server进程,多个管道并行工作速度快


Incomplete Recovery of a Database Using RMAN


1. Mount the database.
2. Allocate multiple channels for parallelization.
3. Restore all datafiles.
4. Recover the database by using UNTIL TIME, UNTIL SEQUENCE, or UNTIL SCN.
5. Open the database by using RESETLOGS.
6. Perform a whole database backup.






==============
1:基于时间点
==============
1:
SQL> select sysdate from dual;


SYSDATE
-------------------
2014-06-24 11:55:03


2:误删除
SQL> conn scott/tiger
Connected.


Session altered.


SQL> drop table t1 purge;


Table dropped.


SQL> select * from t1;
select * from t1
              *
ERROR at line 1:
ORA-00942: table or view does not exist


3:恢复
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.


4:
SQL> startup mount


5:
[oracle@chen ~]$ rlwrap rman target sys/oracle catalog rman/rman@orcl


connected to target database: DB02 (DBID=1598433958, not open)
connected to recovery catalog database


RMAN> run{
2> allocate channel c1 type disk;
3> allocate channel c2 type disk;
4> set until time = '2014-06-24 11:55:03';
5> restore database;
6> recover database;
7> }


6:
SQL> alter database open resetlogs;


Database altered.


SQL> select * from scott.t1;


=======
老师案例
=======
2014-06-24:12:04:06    7369----1300
update sghr.emp set sal=1400 where empno=7369;
commit;
drop table sghr.emp purge;




shutdown immediate


备份  -----用OS命令做一个全备(保留现场)


startup mount  -----用rman必须mount


RMAN>run{
allocate channel d1 type disk;
set until time = '2014-06-24:12:04:06';
restore database;
recover database;
alter database open resetlogs;
}


RMAN>reset database;


sqlplus
select * from all_users;
select empno,ename,sal from sghr.emp;






2:基于取消
RMAN> list copy;


specification does not match any datafile copy in the repository
specification does not match any control file copy in the repository
List of Archived Log Copies for database with db_unique_name DB02
=====================================================================


Key     Thrd Seq     S Low Time 
------- ---- ------- - ---------
163     1    14      A 23-JUN-14
        Name: /home/oracle/db02_archive1/db02_1851001130_14.arc


164     1    14      A 23-JUN-14
        Name: /home/oracle/db02_archive2/db02_1851001130_14.arc


584     1    15      A 24-JUN-14
        Name: /u01/app/oracle/fast_recovery_area/DB02/archivelog/2014_06_24/o1_mf_1_15_9tlfr2rg_.arc


608     1    16      A 24-JUN-14
        Name: /u01/app/oracle/fast_recovery_area/DB02/archivelog/2014_06_24/o1_mf_1_16_9tlk3cvg_.arc




SQL> select * from emp001 where empno=7369;


     EMPNO ENAME     SAL
---------- ---------- ----------
      7369 SMITH     800




SQL> alter system switch logfile;


System altered.


RMAN> list copy;


specification does not match any datafile copy in the repository
specification does not match any control file copy in the repository
List of Archived Log Copies for database with db_unique_name DB02
=====================================================================


Key     Thrd Seq     S Low Time 
------- ---- ------- - ---------
163     1    14      A 23-JUN-14
        Name: /home/oracle/db02_archive1/db02_1851001130_14.arc


164     1    14      A 23-JUN-14
        Name: /home/oracle/db02_archive2/db02_1851001130_14.arc


584     1    15      A 24-JUN-14
        Name: /u01/app/oracle/fast_recovery_area/DB02/archivelog/2014_06_24/o1_mf_1_15_9tlfr2rg_.arc


608     1    16      A 24-JUN-14
        Name: /u01/app/oracle/fast_recovery_area/DB02/archivelog/2014_06_24/o1_mf_1_16_9tlk3cvg_.arc


720     1    1       A 24-JUN-14
        Name: /u01/app/oracle/fast_recovery_area/DB02/archivelog/2014_06_24/o1_mf_1_1_9tlly347_.arc




SQL> conn scott/tiger
Connected.


Session altered.


SQL> drop table emp001 purge;


Table dropped.


SQL> select * from emp001;
select * from emp001
              *
ERROR at line 1:
ORA-00942: table or view does not exist


SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.


[oracle@chen oradata]$ cd /u01/app/oracle/fast_recovery_area/DB02/archivelog/2014_06_24/


[oracle@chen 2014_06_24]$ rm -rf o1_mf_1_1_9tlly347_.arc


SQL> startup mount
ORACLE instance started.


Total System Global Area  371617792 bytes
Fixed Size    2228504 bytes
Variable Size  251662056 bytes
Database Buffers  113246208 bytes
Redo Buffers    4481024 bytes
Database mounted.




















=========================================================================================================================
                                                               四:Rman的级别
=========================================================================================================================
备份级别:0,1,2,3,4
Making Incremental Backups:同一级别和级别比他低的增量备份;
Cumulative Incremental Backup(累计增量备份):同一级别和级别比他低的累计备份;


完全备份:所有的block都备份出来


增量备份:备份上一次改变的block






     t0     t1       t2     t3     t4     t5     t6      t7
-----|------|--------|------|------|------|------|--------|-----&gt
     0      2        2      2      1      2      0        0
    全备  增量备份 




     t0     t1       t2     t3     t4     t5     t6      t7
-----|------|--------|------|------|------|------|--------|-----&gt      -----占用存储空间少,备份快,但恢复慢
     0      1        1      1      1      1      1        0
    全备  增量备份 
         每天的备份




cumulative累积   同一级别和比他级别低的累计备份


     t0     t1       t2     t3     t4     t5     t6      t7
-----|------|--------|------|------|------|------|--------|-----&gt      
     0      1c       1c     1c     1c     1c     1c       0












例如:
一个月进行一次级别0的备份
每周进行一次级别1的备份
每天进行一次级别2的备份
每小时进行一次级别3的备份
每分钟进行一次级别4的备份




差异型的增量备份
累积型的增量备份




=======
级别零:
=======
run{
   allocate channel d1 type disk format '/u01/app/oracle/oradata/bak/db_%s_%p.bus01';
   backup incremental level 0 database filesperset 3;
}


[oracle@chen bak]$ ls
db_18_1.bus  db_24_1.chen  db_29_1.bus01  db_s%_1.chen
db_19_1.bus  db_25_1.chen  db_30_1.bus01  lx_chen00.dbf
db_20_1.bus  db_26_1.chen  db_31_1.bus01




SQL> conn scott/tiger
Connected.
SQL> select * from tab;


TNAME       TABTYPE CLUSTERID
------------------------------ ------- ----------
BONUS       TABLE
DEPT       TABLE
EMP       TABLE
LX_TAB       TABLE
SALGRADE       TABLE


SQL> update lx_tab set sal=1000 where empno=7369;   ---改变一个数,看是否能增量备份


1 row updated.




run{
   allocate channel d1 type disk format '/u01/app/oracle/oradata/bak/db_%s_%p.bus01';
   backup incremental level 0 database filesperset 3;
}


[oracle@chen bak]$ ll
总用量 3082264
-rw-r-----. 1 oracle oinstall 626016256 6月  23 15:34 db_29_1.bus01
-rw-r-----. 1 oracle oinstall 394330112 6月  23 15:34 db_30_1.bus01
-rw-r-----. 1 oracle oinstall   9797632 6月  23 15:35 db_31_1.bus01
-rw-r-----. 1 oracle oinstall 626016256 6月  23 15:37 db_32_1.bus01
-rw-r-----. 1 oracle oinstall 394330112 6月  23 15:37 db_33_1.bus01
-rw-r-----. 1 oracle oinstall   9797632 6月  23 15:37 db_34_1.bus01
-rw-r-----. 1 oracle oinstall     10240 6月  23 14:45 db_s%_1.chen
-rw-r-----. 1 oracle oinstall   5251072 6月  23 15:09 lx_chen00.dbf




说明级别0的并不是增量备份而是全备份;




=======
级别一:
=======


SQL> conn scott/tiger
Connected.
SQL> update lx_tab set sal=1200 where empno=7369;


1 row updated.


SQL> commit;


Commit complete.




run{
   allocate channel d1 type disk format '/u01/app/oracle/oradata/bak/db_%s_%p.bus01';
   backup incremental level 1 database filesperset 3;
}




[oracle@chen bak]$ ll
总用量 3092328
-rw-r-----. 1 oracle oinstall 626016256 6月  23 15:34 db_29_1.bus01
-rw-r-----. 1 oracle oinstall 394330112 6月  23 15:34 db_30_1.bus01
-rw-r-----. 1 oracle oinstall   9797632 6月  23 15:35 db_31_1.bus01


-rw-r-----. 1 oracle oinstall 626016256 6月  23 15:37 db_32_1.bus01
-rw-r-----. 1 oracle oinstall 394330112 6月  23 15:37 db_33_1.bus01
-rw-r-----. 1 oracle oinstall   9797632 6月  23 15:37 db_34_1.bus01


-rw-r-----. 1 oracle oinstall    188416 6月  23 15:47 db_35_1.bus01   ---增量备份
-rw-r-----. 1 oracle oinstall    319488 6月  23 15:47 db_36_1.bus01
-rw-r-----. 1 oracle oinstall   9797632 6月  23 15:47 db_37_1.bus01










=========================================================================================================================
                                                                五:Rman备份的删除
=========================================================================================================================
删除   ------------image copy
===========
[oracle@chen oradata]$ ls
bak  db02  db_archive01.arc  orcl


[oracle@chen oradata]$ rm -rf db_archive01.arc 


RMAN> crosscheck copy;


validation failed for archived log
archived log file name=/u01/app/oracle/oradata/db_archive01.arc RECID=21 STAMP=851018388


validation succeeded for archived log
archived log file name=/home/oracle/db02_archive1/db02_1851001130_11.arc RECID=19 STAMP=851018141


RMAN> delete expired copy;


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


Key     Thrd Seq     S Low Time 
------- ---- ------- - ---------
21      1    11      X 23-JUN-14
        Name: /u01/app/oracle/oradata/db_archive01.arc




Do you really want to delete the above objects (enter YES or NO)? yes
deleted archived log
archived log file name=/u01/app/oracle/oradata/db_archive01.arc RECID=21 STAMP=851018388
Deleted 1 EXPIRED objects




=========
删除    ---------backup set
=========
[oracle@chen bak]$ ls
control01.ctl  db_32_1.bus01  db_35_1.bus01  db_37_1.bus01  lx_dd01.dbf
control2.ctl   db_33_1.bus01  db_36_1.bus01  lx_02.dbf


[oracle@chen bak]$ rm -rf *


RMAN> list backup;


RMAN> crosscheck backup;   ---检查保留策略


using channel ORA_DISK_1
crosschecked backup piece: found to be 'EXPIRED'
backup piece handle=/u01/app/oracle/oradata/bak/db_32_1.bus01 RECID=26 STAMP=851009829
crosschecked backup piece: found to be 'EXPIRED'
backup piece handle=/u01/app/oracle/oradata/bak/db_33_1.bus01 RECID=27 STAMP=851009844
......


RMAN> delete expired backup;


RMAN> list backup;


specification does not match any backup in the repository




删除陈旧的备份
RMAN> delete obsolete;


删除过期的(如:用操作系统命令删除的备份就会变成过期的)
RMAN> delete expired backup;  






查看坏块的信息


SQL> desc v$copy_corruption        映像集




SQL> desc v$backup_corruption      备份集












































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

转载于:http://blog.itpub.net/29785807/viewspace-1259964/

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值