备份与恢复经典案例合集(二)

第七章:RMAN

1、rman的定义和功能:
      1) Recovery Manager
      2)通过oracle 提供的包,建立备份和恢复的server process,在oracle server 上做备份和恢复
      3)rman 备份 database、tablespace、datafile、controlfile、spfile、archivelog
      4)支持归档和非归档
      5)在归档模式下支持一致性备份(冷备份)和非一致性备份(热备份)
      6)非归档只支持一致性备份
      
2、rman的优点:
       1)只备份数据文件中已经使用过的block(备份segment高水位线以下的block),节省空间
       2)备份时自动检查数据文件是否有坏块,并可以标记坏块,跳过坏块
       3)可以实现增量备份
       4)备份和恢复都是用rman的命令来完成

3、rman的架构:

    1)target  database:需要做备份的生产库
    
    2)存储设备:disk 、tape (sbt 磁带机)存放备份文件的设备
    
    3)channel :目标库和存储设备之间备份通道(服务进程)默认最少启动一个channel,可同时启动多个channel ,并行操作,加快备份和恢复的速度
    
    4)server process:用于备份和恢复
    
    5)rman备份的元数据:记录备份的信息(一般放在目标库的controlfile 里)
    
    6)catalog database :集中管理、存放备份的元数据,还可以存储备份脚本
    
    7} MML:media manage layer 介质管理层:用于管理磁带机的库文件或驱动

4、rman 链接目标库 
          1) $ORACLE_SID 和目标库一致
[oracle@work ~]$ env |grep SID
ORACLE_SID=prod
[oracle@work ~]$ rman target /

Recovery Manager: Release 10.2.0.1.0 - Production on Thu Aug 18 05:06:08 2011

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

connected to target database: PROD (DBID=170319990)

RMAN> 
[oracle@work ~]$ rman

Recovery Manager: Release 10.2.0.1.0 - Production on Thu Aug 18 05:10:11 2011

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

RMAN> connect target /                                                                                                                  

connected to target database: PROD (DBID=170319990)

RMAN>

2)远程连接
1)在target database 启动listeners ,在client配置tnsnames
C:\Documents and Settings\liqx>rman target sys/oracle@prod

恢复管理器: Release 10.2.0.1.0 - Production on 星期四 8月 18 09:51:24 2011

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

连接到目标数据库: PROD (DBID=170319990)

RMAN>

5、查看rman的默认配置,修改rman的配置信息
    1)查看rman的默认配置
    
RMAN> show all;                                                                                                                         

using target database control file instead of recovery catalog
RMAN configuration parameters 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 ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/10.2.0/db_1/dbs/snapcf_prod.f'; # default

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP  on;                                                                                             

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

------off:默认情况下,在备份system 表空间时,会备份控制文件和spfile
      on: 在做任何文件的备份时,会自动备份控制文件和spfile,并且数据库的物理结构发生变化时,也自动备份controlfile。
      
      
 2)format 指明备份文件的路径和文件名
 RMAN备份文件格式
备份文件可以自定义各种各样的格式,如下:

%c 备份片的拷贝数
%D 位于该月中的第几天 (DD)
%M 位于该年中的第几月 (MM)
%F 一个基于DBID 唯一的名称,这个格式的形式为c-IIIIIIIIII-YYYYMMDD-QQ,
%d 数据库名称其中IIIIIIIIII 为该数据库的DBID,YYYYMMDD 为日期,QQ 是一个1-256 的序列
%n 数据库名称,向右填补到最大八个字符
%u 一个八个字符的名称代表备份集与创建时间
%p 该备份集中的备份片号,从1 开始到创建的文件数
%U 一个唯一的文件名,代表%u_%p_%c
%s 备份集的号
%t 备份集时间戳
%T 年月日格式(YYYYMMDD)

6、rman备份的分类:
     1)backupset:只备份datafile里已经使用过的块( segment HWM以下)、可以实现增量备份(可以备份到disk和tape)。如果只启用一个channel,默认会把所有备份的datafile放入到一个backupset里
     ,并且生成一个备份片(backup piece,在OS下看到的备份文件)
       恢复时速度慢,需要从备份集里先释放数据文件
       
     2)backup piece :由backupset 生成的备份文件,保存在os下
     
     3) copy(immage 镜像):实际上和手工cp 是类似的,备份datafile 所有的数据块,不能实现增量备份(但可以作为增量备份的0级备份),只能备份到disk ,不能备份到tape,
        恢复时速度快 ,不需要做restore。    

6、rman的命令格式:
    1)交互式
RMAN> shutdown immediate;                                                                                                               

database closed
database dismounted
Oracle instance shut down

RMAN> startup force mount;                                                                                                              

Oracle instance started
database mounted

Total System Global Area     314572800 bytes

Fixed Size                     1219184 bytes
Variable Size                 67110288 bytes
Database Buffers             243269632 bytes
Redo Buffers                   2973696 bytes

RMAN> alter database open;                                                                                                              

database opened

RMAN> sql 'alter system switch logfile';                                                                                                

sql statement: alter system switch logfile

RMAN> sql 'select * from scott.emp';                                                                                                    

sql statement: select * from scott.emp
---------对select 不显示结果

RMAN> backup datafile 2 format '/disk1/rman/prod/%d_%s_%t.bak';                                                                         

Starting backup at 18-AUG-11
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=139 devtype=DISK
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00002 name=/u01/app/oracle/oradata/prod/users01.dbf
channel ORA_DISK_1: starting piece 1 at 18-AUG-11
channel ORA_DISK_1: finished piece 1 at 18-AUG-11
piece handle=/disk1/rman/prod/PROD_2_759476271.bak tag=TAG20110818T053751 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
Finished backup at 18-AUG-11

RMAN> list backup;                                                                                                                      


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

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
1       Full    464.00K    DISK        00:00:03     18-AUG-11      
        BP Key: 1   Status: AVAILABLE  Compressed: NO  Tag: TAG20110818T053751
        Piece Name: /disk1/rman/prod/PROD_2_759476271.bak
  List of Datafiles in backup set 1
  File LV Type Ckp SCN    Ckp Time  Name
  ---- -- ---- ---------- --------- ----
  2       Full 1316126    18-AUG-11 /u01/app/oracle/oradata/prod/users01.dbf
  
  -----备份片的大小为464k ,只包含已经使用的block

RMAN> 
    2)批处理
RMAN> run {                                                                                                                              
2> shutdown immediate;                                                                                                                   
3> startup mount;                                                                                                                        
4> allocate channel c1 type disk;                                                                                                        
5> allocate channel c2 type disk;                                                                                                        
6> backup database format '/disk1/rman/prod/%d_%s.bak';                                                                                  
7> alter database open;                                                                                                                  
8> }                                                                                                                                    

   

第八章: rman 备份

1、rman备份分类:
    1)归档:可以做一致性和非一致性备份
    2)非归档:一致性备份
2、rman备份的分类:
    1)backupset  
  -------一致性备份
---查看数据库的物理结构  
  RMAN> report schema;

using target database control file instead of recovery catalog
Report of database schema

List of Permanent Datafiles
===========================
File Size(MB) Tablespace           RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1    325      SYSTEM               ***     /u01/app/oracle/oradata/test2/system01.dbf
2    200      RTBS                 ***     /u01/app/oracle/oradata/test2/rbs01.dbf
3    225      SYSAUX               ***     /u01/app/oracle/oradata/test2/sysaux01.dbf
4    100      USERS                ***     /u01/app/oracle/oradata/test2/users01.dbf
5    10       TEST1                ***     /u01/app/oracle/oradata/test2/test1.dbf
8    11       SMALLUNDO            ***     /u01/app/oracle/oradata/test2/smallundo01.dbf
10   100      INDX                 ***     /u01/app/oracle/oradata/test2/indx01.dbf

List of Temporary Files
=======================
File Size(MB) Tablespace           Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1    100      TEMP                 100         /u01/app/oracle/oradata/test2/temp01.dbf
2    4        TMP1                 4           /u01/app/oracle/oradata/test2/tmp1.dbf

RMAN> report need backup;

RMAN retention policy will be applied to the command
RMAN retention policy is set to redundancy 1
Report of files with less than 1 redundant backups
File #bkps Name
---- ----- -----------------------------------------------------
1    0     /u01/app/oracle/oradata/test2/system01.dbf
2    0     /u01/app/oracle/oradata/test2/rbs01.dbf
3    0     /u01/app/oracle/oradata/test2/sysaux01.dbf
4    0     /u01/app/oracle/oradata/test2/users01.dbf
5    0     /u01/app/oracle/oradata/test2/test1.dbf
8    0     /u01/app/oracle/oradata/test2/smallundo01.dbf
10   0     /u01/app/oracle/oradata/test2/indx01.dbf

RMAN> 
  RMAN> run {                                                                                                                              
2> shutdown immediate;                                                                                                                   
3> startup mount;                                                                                                                        
4> allocate channel c1 type disk;                                                                                                        
5> allocate channel c2 type disk;                                                                                                        
6> backup database format '/disk1/rman/prod/%d_%s.bak';                                                                                  
7> alter database open;                                                                                                                  
8> }       
  ---------非一致性备份
  RMAN> backup database format='/disk1/rman/prod/prod_%s.bak' filesperset 3;      
  RMAN> backup tablespace users format '/disk1/rman/prod/users_%s.bak' tag=userbak;
  RMAN> backup datafile 2,3,5   format '/disk1/rman/prod/%d_%s.bak';
  
  -------备份归档日志
  
  ------查出第一个归档日志的的first scn 
  
  11:03:49 SQL> select name, SEQUENCE#,FIRST_CHANGE#,NEXT_CHANGE# from v$archived_log 
11:04:05   2   where lower(name) like '%arch_1_1_783951639.log%';

NAME                                                SEQUENCE# FIRST_CHANGE# NEXT_CHANGE#
-------------------------------------------------- ---------- ------------- ------------
/disk4/arch/testdb/arch_1_1_783951639.log                   1        834562       843469
  
 
RMAN>  backup archivelog from  scn=834562;
  
    2)snapshot 镜像
    
  RMAN> copy datafile 2 to '/disk1/rman/prod/users_%s.bak'; 
  RMAN> backup as copy tablespace users format='/disk1/rman/prod/%d_users_%s.bak';
  
  [oracle@work ~]$ ls -lth /disk1/rman/prod
total 101M
-rw-r-----  1 oracle oinstall 101M Aug 18 06:12 users_15.bak
[oracle@work ~]$ 
-------生成的备份文件的大小和原datafile大小相同
 

3、增量备份:只备份发生变化的block(rman通过在备份时记录datablock的scn,下次备份时通过比较上次备份的数据块上的scn来确定数据块是否发生变化)
     1)差异增量备份(Differential incremental backup):下次备份时比较上次以来同级别或低级别的备份,为备份基础
     -----0级备份
     RMAN> backup incremental level 0 format '/disk1/rman/prod/users_0_%s.bak' tablespace users;
     RMAN> list backup;                                                                                                                      


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

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
16      Incr 0  464.00K    DISK        00:00:01     18-AUG-11      
        BP Key: 16   Status: AVAILABLE  Compressed: NO  Tag: TAG20110818T064000
        Piece Name: /disk1/rman/prod/users_0_19.bak
  List of Datafiles in backup set 16
  File LV Type Ckp SCN    Ckp Time  Name
  ---- -- ---- ---------- --------- ----
  2    0  Incr 1319567    18-AUG-11 /u01/app/oracle/oradata/prod/users01.dbf
     ------2级备份
     RMAN> backup incremental level 2 format '/disk1/rman/prod/users_2_%s.bak' tablespace users;
  BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
18      Incr 2  112.00K    DISK        00:00:01     18-AUG-11      
        BP Key: 18   Status: AVAILABLE  Compressed: NO  Tag: TAG20110818T064135
        Piece Name: /disk1/rman/prod/users_2_21.bak
  List of Datafiles in backup set 18
  File LV Type Ckp SCN    Ckp Time  Name
  ---- -- ---- ---------- --------- ----
  2    2  Incr 1319644    18-AUG-11 /u01/app/oracle/oradata/prod/users01.dbf
  ------1级备份
  RMAN> backup incremental level 1 format '/disk1/rman/prod/users_1_%s.bak' tablespace users; 
  BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
22      Incr 1  176.00K    DISK        00:00:01     18-AUG-11      
        BP Key: 22   Status: AVAILABLE  Compressed: NO  Tag: TAG20110818T064323
        Piece Name: /disk1/rman/prod/users_1_25.bak
  List of Datafiles in backup set 22
  File LV Type Ckp SCN    Ckp Time  Name
  ---- -- ---- ---------- --------- ----
  2    1  Incr 1319760    18-AUG-11 /u01/app/oracle/oradata/prod/users01.dbf
  
     
     
     2)累积增量备份的区别:只比较比自己级别低的作为备份基础
     -------2级备份
     RMAN> backup incremental level 2 cumulative format '/disk1/rman/prod/users_2cu_%s.bak' tablespace users;
     -----1级备份
     RMAN> backup incremental level 1 cumulative format '/disk1/rman/prod/users_1cu_%s.bak' tablespace users; 
    

4、自动备份controlfile 和 spfile

我们可以用RMAN进行数据库、表空间和数据文件的增量备份。 
如果数据库运行在归档模式,在数据库OPEN状态我们可以进行增量备份;如果数据库处于非归档方式,在数据库CLOSE状态我们也可以进行增量备份。增量备份只备份上次备份以来变化过的数据块。
每个数据块都包含一个system change number (SCN),记录着该数据块的最后改变。在进行增量备份的时候,RMAN将每个数据块的SCN和父级增量备份的CHECKPOINT SCN进行比较,如果该数据块的SCN大于等于父级的CHECKPOINT SCN,RMAN将备份该数据块。
为了提高数据库增量备份的性能,我们可以指定变化跟踪文件来监控数据块的改变:


SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE 'd:/rman_change.f'   REUSE;

SQL> ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;
可以通过以下命令查询:

SQL> SELECT FILENAME,STATUS from V$BLOCK_CHANGE_TRACKING
移动跟踪文件:

SQL>SELECT filename from V$BLOCK_CHANGE_TRACKING;
SQL>SHUTDOWN IMMEDIATE;
SQL>HOST COPY OLDFILE NEWFILE
SQL>STARTUP MOUNT;
SQL>ALTER DATABASE RENAME FILE ‘OLDFILE' TO ‘NEWFILE’; 
SQL>ALTER DATABASE OPEN;
如果不能关闭数据库,必须禁用跟踪文件然后移动跟踪文件:

ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;
ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE 'new_location';
增量备份分为两种:差异增量备份和累积增量备份。缺省的增量备份是差异增量备份。
差异增量备份:备份同级或者上级(如果有同级备份,先找同级)备份(差异或者累积)以来变化的数据块。如果找不到同级或者上级(知道LEVEL0),如果ORACLE版本>=10.0.0,RMAN将COPY从数据文件创建开始所有的数据块作为LEVEL1备份;如果ORACLE版本<10.0.0,RMAN将生成LEVEL0备份。


第九章:rman 完全恢复

1、recover 恢复:
   1)归档 :完全恢复和不完全恢复
   2)非归档:只能恢复到最后一次备份状态

2、完全恢复:


----先对数据库做冷备
RMAN> list backup;                                                                                                                      


RMAN> run {                                                                                                                              
2> shutdown immediate;                                                                                                                   
3> startup mount;                                                                                                                        
4> backup database format '/disk1/rman/prod/%d_%s.bak';                                                                                  
5> alter database open;                                                                                                                  
6> }      

RMAN> list backup;                                                                                                                      


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

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
28      Full    589.39M    DISK        00:00:50     18-AUG-11      
        BP Key: 28   Status: AVAILABLE  Compressed: NO  Tag: TAG20110818T071905
        Piece Name: /disk1/rman/prod/PROD_31.bak
  List of Datafiles in backup set 28
  File LV Type Ckp SCN    Ckp Time  Name
  ---- -- ---- ---------- --------- ----
  1       Full 1321672    18-AUG-11 /u01/app/oracle/oradata/prod/system01.dbf
  2       Full 1321672    18-AUG-11 /u01/app/oracle/oradata/prod/users01.dbf
  3       Full 1321672    18-AUG-11 /u01/app/oracle/oradata/prod/sysaux01.dbf
  4       Full 1321672    18-AUG-11 /u01/app/oracle/oradata/prod/index01.dbf
  5       Full 1321672    18-AUG-11 /u01/app/oracle/oradata/prod/example01.dbf
  6       Full 1321672    18-AUG-11 /u01/app/oracle/oradata/prod/test01.dbf
  7       Full 1321672    18-AUG-11 /u01/app/oracle/oradata/prod/undo_tbs01.dbf
  8       Full 1321672    18-AUG-11 /u01/app/oracle/oradata/prod/test02.dbf
  9       Full 1321672    18-AUG-11 /u01/app/oracle/oradata/prod/cuug01.dbf

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
29      Full    6.89M      DISK        00:00:01     18-AUG-11      
        BP Key: 29   Status: AVAILABLE  Compressed: NO  Tag: TAG20110818T072001
        Piece Name: /disk1/recovery/prod/PROD/autobackup/2011_08_18/o1_mf_s_759482322_74sxc274_.bkp
  Control File Included: Ckp SCN: 1321672      Ckp time: 18-AUG-11
  SPFILE Included: Modification time: 18-AUG-11
   

案例1:数据库大部分datafile丢失(recover database,必须在mount下)
  
1)测试环境
07:21:12 SQL> conn scott/tiger                                                                                                           
Connected.
07:21:16 SQL> 
07:21:16 SQL> select * from tab;                                                                                                        

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
DEPT                           TABLE
EMP                            TABLE
BONUS                          TABLE
SALGRADE                       TABLE
SYS_TEMP_FBT                   TABLE
TEST                           TABLE
EMP1                           TABLE

7 rows selected.

07:21:20 SQL> select * from test;                                                                                                       

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-DEC-80        800                    20
      7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30
      7369 SMITH      CLERK           7902 17-DEC-80        800                    20
      7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30
      7521 WARD       SALESMAN        7698 22-FEB-81       1250        500         30
      7566 JONES      MANAGER         7839 02-APR-81       2975                    20
      7654 MARTIN     SALESMAN        7698 28-SEP-81       1250       1400         30
      7698 BLAKE      MANAGER         7839 01-MAY-81       2850                    30
      7782 CLARK      MANAGER         7839 09-JUN-81       2450                    10
      7788 SCOTT      ANALYST         7566 19-APR-87       3000                    20
      7839 KING       PRESIDENT            17-NOV-81       5000                    10
      7844 TURNER     SALESMAN        7698 08-SEP-81       1500          0         30
      7876 ADAMS      CLERK           7788 23-MAY-87       1100                    20
      7900 JAMES      CLERK           7698 03-DEC-81        950                    30
      7902 FORD       ANALYST         7566 03-DEC-81       3000                    20
      7934 MILLER     CLERK           7782 23-JAN-82       1300                    10

16 rows selected.

07:21:27 SQL> insert into test select * from test;                                                                                      

16 rows created.

07:21:43 SQL> commit;                                                                                                                   

Commit complete.

07:21:45 SQL> select count(*) from test;                                                                                                

  COUNT(*)
----------
        32

07:21:50 SQL> conn /as sysdba                                                                                                            
Connected.
07:21:56 SQL>

07:22:03 SQL> select * from v$log;                                                                                                      

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
         1          1          8   52428800          1 NO  CURRENT                1321561 18-AUG-11
         2          1          7   52428800          1 YES INACTIVE               1321559 18-AUG-11
         3          1          6   52428800          1 YES INACTIVE               1316062 18-AUG-11

07:22:09 SQL> alter system switch logfile;                                                                                              

System altered.

07:22:15 SQL> 
07:22:15 SQL> shutdown abort                                                                                                             
ORACLE instance shut down.
07:23:03 SQL> !                                                                                                                          
[oracle@work ~]$ rm /u01/app/oracle/oradata/prod/*.dbf

2)启动database
[oracle@work ~]$ !sql
sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Thu Aug 18 07:23:17 2011

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

Connected to an idle instance.

07:23:17 SQL> 
07:23:17 SQL> startup                                                                                                                    
ORACLE instance started.

Total System Global Area  314572800 bytes
Fixed Size                  1219184 bytes
Variable Size              79693200 bytes
Database Buffers          230686720 bytes
Redo Buffers                2973696 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
ORA-01110: data file 1: '/u01/app/oracle/oradata/prod/system01.dbf'


07:23:25 SQL> select file#,error from v$recover_file;                                                                                   

     FILE# ERROR
---------- -----------------------------------------------------------------
         1 FILE NOT FOUND
         2 FILE NOT FOUND
         3 FILE NOT FOUND
         4 FILE NOT FOUND
         5 FILE NOT FOUND
         6 FILE NOT FOUND
         7 FILE NOT FOUND
         8 FILE NOT FOUND
         9 FILE NOT FOUND

9 rows selected.

07:23:38 SQL>   
  
 3)利用rman 恢复database
 [oracle@work ~]$ rman target /

Recovery Manager: Release 10.2.0.1.0 - Production on Thu Aug 18 07:24:09 2011

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

connected to target database: PROD (DBID=170319990, not open)

RMAN> run {                                                                                                                              
2> startup force mount;                                                                                                                  
3> allocate channel c1 type disk;                                                                                                        
4> allocate channel c2 type disk;                                                                                                        
5> restore database;                                                                                                                     
6> recover database;                                                                                                                     
7> alter database open;                                                                                                                  
8> }                 
Oracle instance started
database mounted

Total System Global Area     314572800 bytes

Fixed Size                     1219184 bytes
Variable Size                 79693200 bytes
Database Buffers             230686720 bytes
Redo Buffers                   2973696 bytes

using target database control file instead of recovery catalog
allocated channel: c1
channel c1: sid=157 devtype=DISK

allocated channel: c2
channel c2: sid=154 devtype=DISK

Starting restore at 18-AUG-11

channel c1: starting datafile backupset restore
channel c1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to /u01/app/oracle/oradata/prod/system01.dbf
restoring datafile 00002 to /u01/app/oracle/oradata/prod/users01.dbf
restoring datafile 00003 to /u01/app/oracle/oradata/prod/sysaux01.dbf
restoring datafile 00004 to /u01/app/oracle/oradata/prod/index01.dbf
restoring datafile 00005 to /u01/app/oracle/oradata/prod/example01.dbf
restoring datafile 00006 to /u01/app/oracle/oradata/prod/test01.dbf
restoring datafile 00007 to /u01/app/oracle/oradata/prod/undo_tbs01.dbf
restoring datafile 00008 to /u01/app/oracle/oradata/prod/test02.dbf
restoring datafile 00009 to /u01/app/oracle/oradata/prod/cuug01.dbf
channel c1: reading from backup piece /disk1/rman/prod/PROD_31.bak
channel c1: restored backup piece 1
piece handle=/disk1/rman/prod/PROD_31.bak tag=TAG20110818T071905
channel c1: restore complete, elapsed time: 00:00:57
Finished restore at 18-AUG-11

Starting recover at 18-AUG-11

starting media recovery
media recovery complete, elapsed time: 00:00:03

Finished recover at 18-AUG-11

database opened
released channel: c1
released channel: c2

RMAN>

告警日志信息:
Full restore complete of datafile 6 /u01/app/oracle/oradata/prod/test01.dbf.  Elapsed time: 0:00:01 
  checkpoint is 1321672
Full restore complete of datafile 8 /u01/app/oracle/oradata/prod/test02.dbf.  Elapsed time: 0:00:02 
  checkpoint is 1321672
Full restore complete of datafile 9 /u01/app/oracle/oradata/prod/cuug01.dbf.  Elapsed time: 0:00:01 
  checkpoint is 1321672
Thu Aug 18 07:25:40 2011
Full restore complete of datafile 2 /u01/app/oracle/oradata/prod/users01.dbf.  Elapsed time: 0:00:16 
  checkpoint is 1321672
Full restore complete of datafile 4 /u01/app/oracle/oradata/prod/index01.dbf.  Elapsed time: 0:00:18 
  checkpoint is 1321672
Full restore complete of datafile 5 /u01/app/oracle/oradata/prod/example01.dbf.  Elapsed time: 0:00:20 
  checkpoint is 1321672
Full restore complete of datafile 7 /u01/app/oracle/oradata/prod/undo_tbs01.dbf.  Elapsed time: 0:00:21 
  checkpoint is 1321672
Thu Aug 18 07:26:00 2011
Full restore complete of datafile 3 /u01/app/oracle/oradata/prod/sysaux01.dbf.  Elapsed time: 0:00:35 
  checkpoint is 1321672
Thu Aug 18 07:26:12 2011
Full restore complete of datafile 1 /u01/app/oracle/oradata/prod/system01.dbf.  Elapsed time: 0:00:47 
  checkpoint is 1321672
Thu Aug 18 07:26:20 2011
alter database recover datafile list clear
Thu Aug 18 07:26:20 2011
Completed: alter database recover datafile list clear
Thu Aug 18 07:26:21 2011
alter database recover datafile list
 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9
Completed: alter database recover datafile list
 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9
Thu Aug 18 07:26:21 2011
alter database recover if needed
 start
Media Recovery Start
Thu Aug 18 07:26:21 2011
Recovery of Online Redo Log: Thread 1 Group 1 Seq 8 Reading mem 0
  Mem# 0 errs 0: /u01/app/oracle/oradata/prod/redo01.log
Thu Aug 18 07:26:22 2011
Recovery of Online Redo Log: Thread 1 Group 3 Seq 9 Reading mem 0
  Mem# 0 errs 0: /u01/app/oracle/oradata/prod/redo03.log
Thu Aug 18 07:26:22 2011
Media Recovery Complete (prod)

4)验证:

07:28:10 SQL> select count(*) from scott.test;                                                                                          

  COUNT(*)
----------
        32


案例2:
--------部分数据文件丢失,恢复数据文件(mount 或 open)
  
1)测试环境
07:30:40 SQL> create table test (id int) tablespace test;                                                                               

Table created.

07:30:52 SQL> conn /as sysdba                                                                                                            
Connected.
07:30:57 SQL> 
07:30:57 SQL> insert into scott.test values (1);                                                                                        

1 row created.

07:31:02 SQL> commit;                                                                                                                   

Commit complete.

07:31:04 SQL> alter system archive log current;                                                                                         

System altered.

07:31:10 SQL> insert into scott.test values (2);                                                                                        

1 row created.

07:31:13 SQL> commit;                                                                                                                   

Commit complete.

07:31:15 SQL> alter system archive log current;                                                                                         

System altered.

07:31:16 SQL> insert into scott.test values (3);                                                                                        

1 row created.

07:31:19 SQL> commit;                                                                                                                   

Commit complete.

07:31:20 SQL> alter system archive log current;                                                                                         

System altered.

07:31:24 SQL> insert into scott.test values (4);                                                                                        

1 row created.

07:31:26 SQL> insert into scott.test values (5);                                                                                        

1 row created.

07:31:28 SQL> commit;                                                                                                                   

Commit complete.

07:31:30 SQL> select * from scott.test;                                                                                                 

        ID
----------
         1
         2
         3
         4
         5

07:31:34 SQL>

07:31:34 SQL> shutdown abort                                                                                                             
ORACLE instance shut down.
07:33:23 SQL> exit                                                                                                                       
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
[oracle@work ~]$ rm /u01/app/oracle/oradata/prod/test0*.dbf

2)启动database
07:34:07 SQL> startup                                                                                                                    
ORACLE instance started.

Total System Global Area  314572800 bytes
Fixed Size                  1219184 bytes
Variable Size              79693200 bytes
Database Buffers          230686720 bytes
Redo Buffers                2973696 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 6 - see DBWR trace file
ORA-01110: data file 6: '/u01/app/oracle/oradata/prod/test01.dbf'


07:34:15 SQL> select file#,error from v$recover_file;                                                                                   

     FILE# ERROR
---------- -----------------------------------------------------------------
         6 FILE NOT FOUND
         8 FILE NOT FOUND
         
  3)利用rman 恢复datafile
  RMAN> run {                                                                                                                              
2> startup force mount;                                                                                                                  
3> sql 'alter database datafile 6,8 offline';                                                                                            
4> alter database open;                                                                                                                  
5> restore datafile 6,8;                                                                                                                 
6> recover datafile 6,8;                                                                                                                 
7> sql 'alter database datafile 6,8 online';                                                                                             
8> }                                                                                                                                    

Oracle instance started
database mounted

Total System Global Area     314572800 bytes

Fixed Size                     1219184 bytes
Variable Size                 79693200 bytes
Database Buffers             230686720 bytes
Redo Buffers                   2973696 bytes

using target database control file instead of recovery catalog
sql statement: alter database datafile 6,8 offline

database opened

Starting restore at 18-AUG-11
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=146 devtype=DISK

channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00006 to /u01/app/oracle/oradata/prod/test01.dbf
restoring datafile 00008 to /u01/app/oracle/oradata/prod/test02.dbf
channel ORA_DISK_1: reading from backup piece /disk1/rman/prod/PROD_31.bak
channel ORA_DISK_1: restored backup piece 1
piece handle=/disk1/rman/prod/PROD_31.bak tag=TAG20110818T071905
channel ORA_DISK_1: restore complete, elapsed time: 00:00:03
Finished restore at 18-AUG-11

Starting recover at 18-AUG-11
using channel ORA_DISK_1

starting media recovery

archive log thread 1 sequence 8 is already on disk as file /disk1/arch/prod/arch_8_1_759396736.log
archive log thread 1 sequence 9 is already on disk as file /disk1/arch/prod/arch_9_1_759396736.log
archive log thread 1 sequence 10 is already on disk as file /disk1/arch/prod/arch_10_1_759396736.log
archive log thread 1 sequence 11 is already on disk as file /disk1/arch/prod/arch_11_1_759396736.log
archive log thread 1 sequence 12 is already on disk as file /disk1/arch/prod/arch_12_1_759396736.log
archive log thread 1 sequence 13 is already on disk as file /disk1/arch/prod/arch_13_1_759396736.log
archive log filename=/disk1/arch/prod/arch_8_1_759396736.log thread=1 sequence=8
archive log filename=/disk1/arch/prod/arch_9_1_759396736.log thread=1 sequence=9
archive log filename=/disk1/arch/prod/arch_10_1_759396736.log thread=1 sequence=10
archive log filename=/disk1/arch/prod/arch_11_1_759396736.log thread=1 sequence=11
media recovery complete, elapsed time: 00:00:03
Finished recover at 18-AUG-11

sql statement: alter database datafile 6,8 online

RMAN>

4)验证:
[oracle@work ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Thu Aug 18 07:37:17 2011

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


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

07:37:18 SQL> 
07:37:18 SQL> select * from scott.test;                                                                                                 

        ID
----------
         1
         2
         3
         4
         5

07:37:23 SQL>

案例3:
----------表空间数据文件全部丢失,恢复数据文件(open)
1)测试环境
07:37:23 SQL> insert into scott.test values (6);                                                                                        

1 row created.

07:39:18 SQL> insert into scott.test values (7);                                                                                        

1 row created.

07:39:20 SQL> insert into scott.test values (8);                                                                                        

1 row created.

07:39:21 SQL> commit;                                                                                                                   

Commit complete.

07:39:23 SQL> select * from scott.test;                                                                                                 

        ID
----------
         6
         7
         8
         1
         2
         3
         4
         5

8 rows selected.

07:40:06 SQL> 
----在open 状态下datafile 被破坏
[oracle@work ~]$ rm /u01/app/oracle/oradata/prod/test0*.dbf
[oracle@work ~]$

07:41:19 SQL> alter system flush buffer_cache;                                                                                          

System altered.

07:41:25 SQL> conn scott/tiger                                                                                                           
Connected.
07:41:28 SQL> 
07:41:28 SQL> insert into scott.test values (10);                                                                                        
insert into scott.test values (10)
                  *
ERROR at line 1:
ORA-01116: error in opening database file 8
ORA-01110: data file 8: '/u01/app/oracle/oradata/prod/test02.dbf'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3


07:41:31 SQL>

3)利用rman 恢复
RMAN> run {                                                                                                                              
2> sql 'alter database datafile 6,8 offline';                                                                                            
3> restore datafile 6,8;                                                                                                                 
4> recover datafile 6,8;                                                                                                                 
5> sql 'alter database datafile 6,8 online';                                                                                             
6> }

4)验证
07:41:31 SQL> insert into scott.test values (10);                                                                                       

1 row created.

07:45:58 SQL> commit;                                                                                                                   

Commit complete.

07:46:01 SQL> select * from test;                                                                                                       

        ID
----------
        10
         6
         7
         8
         9
         1
         2
         3
         4
         5

10 rows selected.

07:46:04 SQL>

案例3:
-----------恢复表空间(open状态)
1)测试环境
07:47:00 SQL> insert into emp1 select * from emp where rownum <3;                                                                       

2 rows created.

07:47:14 SQL> commit;                                                                                                                   

Commit complete.

07:47:17 SQL> select * from emp1;                                                                                                       

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-DEC-80        800                    20
      7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30

07:47:20 SQL> conn /as sysdba                                                                                                            
Connected.
07:47:23 SQL> 
[oracle@work ~]$ rm /u01/app/oracle/oradata/prod/users01.dbf

07:47:23 SQL> alter system flush buffer_cache;                                                                                          

System altered.

07:47:41 SQL> conn scott/tiger                                                                                                           
Connected.
07:47:44 SQL> 
07:47:44 SQL> select * from emp1;                                                                                                        
select * from emp1
              *
ERROR at line 1:
ORA-01116: error in opening database file 2
ORA-01110: data file 2: '/u01/app/oracle/oradata/prod/users01.dbf'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3


07:47:48 SQL>

2)恢复表空间
RMAN> run {                                                                                                                              
2> sql'alter database datafile 2 offline';                                                                                               
3> restore tablespace users;                                                                                                             
4> recover tablespace users;                                                                                                             
5> sql 'alter database datafile 2 online';                                                                                               
6> }

3)验证

07:47:48 SQL> select * from emp1;                                                                                                       

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-DEC-80        800                    20
      7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30

07:50:31 SQL>

案例4:
  ---------------新建表空间没有备份,datafile 被破坏
  1)测试环境
  07:52:16 SQL> create tablespace lx                                                                                                       
07:52:24   2   datafile '/u01/app/oracle/oradata/prod/lx01.dbf' size 10m;                                                               

Tablespace created.

07:52:38 SQL> conn scott/tiger                                                                                                           
Connected.
07:52:40 SQL> 
07:52:40 SQL> create table lx01 (id int) tablespace lx;                                                                                 

Table created.

07:52:49 SQL> insert into lx01 values (1);                                                                                              

1 row created.

07:52:55 SQL> insert into lx01 values (2);                                                                                              

1 row created.

07:52:57 SQL> insert into lx01 values (3);                                                                                              

1 row created.

07:52:59 SQL> commit;                                                                                                                   

Commit complete.

07:53:00 SQL> select * from lx01;                                                                                                       

        ID
----------
         1
         2
         3

07:53:03 SQL>

07:53:03 SQL> conn /as sysdba                                                                                                            
Connected.
07:53:16 SQL> 
07:53:16 SQL> shutdown abort                                                                                                             
ORACLE instance shut down.
07:53:19 SQL>

[oracle@work ~]$ rm /u01/app/oracle/oradata/prod/lx01.dbf

2)启动database

07:53:19 SQL> startup                                                                                                                    
ORACLE instance started.

Total System Global Area  314572800 bytes
Fixed Size                  1219184 bytes
Variable Size              79693200 bytes
Database Buffers          230686720 bytes
Redo Buffers                2973696 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 10 - see DBWR trace file
ORA-01110: data file 10: '/u01/app/oracle/oradata/prod/lx01.dbf'


07:54:15 SQL> select file#,error from v$recover_file;                                                                                   

     FILE# ERROR
---------- -----------------------------------------------------------------
        10 FILE NOT FOUND

07:54:25 SQL>

3)利用rman 恢复

RMAN> run {                                                                                                                              
2> sql 'alter database datafile 10 offline';                                                                                             
3> alter database open;                                                                                                                  
4> restore datafile 10;                                                                                                                  
5> recover datafile 10;                                                                                                                  
6> sql'alter database datafile 10 online';                                                                                               
7> }                                                                                                                                    

using target database control file instead of recovery catalog
sql statement: alter database datafile 10 offline

database opened

Starting restore at 18-AUG-11
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=154 devtype=DISK

creating datafile fno=10 name=/u01/app/oracle/oradata/prod/lx01.dbf    ;自动建立新的lx01.dbf 文件
restore not done; all files readonly, offline, or already restored
Finished restore at 18-AUG-11

Starting recover at 18-AUG-11
using channel ORA_DISK_1

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

Finished recover at 18-AUG-11

sql statement: alter database datafile 10 online

RMAN>

案例5:
 --------利用image (镜像备份)恢复数据
 1)建立镜像备份
 RMAN> delete backup; 
 RMAN> list backup;
 
 RMAN> backup as copy datafile 2 format '/disk1/rman/prod/users_%s.bak'; 
 RMAN> list copy of datafile 2;                                                                                                          


List of Datafile Copies
Key     File S Completion Time Ckp SCN    Ckp Time        Name
------- ---- - --------------- ---------- --------------- ----
19      2    A 18-AUG-11       1383523    18-AUG-11       /disk1/rman/prod/users_38.bak

2)测试环境
07:59:17 SQL> conn scott/tiger                                                                                                           
Connected.
07:59:20 SQL> 
07:59:20 SQL> select * from emp1;                                                                                                       

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-DEC-80        800                    20
      7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30

07:59:27 SQL> insert into emp1 select * from emp1;                                                                                      

2 rows created.

07:59:46 SQL> select * from emp1;                                                                                                       

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-DEC-80        800                    20
      7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30
      7369 SMITH      CLERK           7902 17-DEC-80        800                    20
      7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30

07:59:48 SQL> commit;                                                                                                                   

Commit complete.

07:59:49 SQL> conn /as sysdba                                                                                                            
Connected.
07:59:52 SQL> 
07:59:52 SQL> shutdown abort                                                                                                             
ORACLE instance shut down.

[oracle@work ~]$ rm /u01/app/oracle/oradata/prod/users01.dbf

3)启动数据库

07:59:56 SQL> startup                                                                                                                    
ORACLE instance started.

Total System Global Area  314572800 bytes
Fixed Size                  1219184 bytes
Variable Size              79693200 bytes
Database Buffers          230686720 bytes
Redo Buffers                2973696 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 2 - see DBWR trace file
ORA-01110: data file 2: '/u01/app/oracle/oradata/prod/users01.dbf'


08:00:37 SQL> select file#,error from v$recover_file;                                                                                   

     FILE# ERROR
---------- -----------------------------------------------------------------
         2 FILE NOT FOUND

08:00:48 SQL>

4)利用rman恢复
[oracle@work ~]$ rman target /

Recovery Manager: Release 10.2.0.1.0 - Production on Thu Aug 18 08:01:15 2011

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

connected to target database: PROD (DBID=170319990, not open)

RMAN> run {                                                                                                                              
2> restore datafile 2;                                                                                                                   
3> recover datafile 2;                                                                                                                   
4> alter database open;                                                                                                                  
5> }                                                                                                                                    

Starting restore at 18-AUG-11
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=154 devtype=DISK

channel ORA_DISK_1: restoring datafile 00002
input datafile copy recid=19 stamp=759484683 filename=/disk1/rman/prod/users_38.bak
destination for restore of datafile 00002: /u01/app/oracle/oradata/prod/users01.dbf
channel ORA_DISK_1: copied datafile copy of datafile 00002
output filename=/u01/app/oracle/oradata/prod/users01.dbf recid=20 stamp=759484903
Finished restore at 18-AUG-11

Starting recover at 18-AUG-11
using channel ORA_DISK_1

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

Finished recover at 18-AUG-11

database opened

RMAN>

5)验证:

08:02:54 SQL> select * from scott.emp1;                                                                                                 

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-DEC-80        800                    20
      7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30
      7369 SMITH      CLERK           7902 17-DEC-80        800                    20
      7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30

08:02:59 SQL>

案例6:
----------利用增量备份进行恢复

1)建立增量备份

-------利用image 备份作为增量备份的0 级备份
RMAN> copy datafile 2 to '/disk1/rman/prod/users_%s.bak'; 
2)建立2 级差异备份
  --------测试环境
  08:05:52 SQL> conn scott/tiger                                                                                                           
Connected.
08:05:58 SQL> 
08:05:58 SQL> insert into emp1 select * from emp1;                                                                                      

4 rows created.

08:06:00 SQL> /                                                                                                                         

8 rows created.

08:06:01 SQL> commit;                                                                                                                   

Commit complete.

08:06:03 SQL>

RMAN> backup incremental level 2 format '/disk1/rman/prod/users_2_%s.bak' datafile 2;
RMAN> list backup of datafile 2;                                                                                                        


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

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
37      Incr 2  528.00K    DISK        00:00:00     18-AUG-11      
        BP Key: 37   Status: AVAILABLE  Compressed: NO  Tag: TAG20110818T080650
        Piece Name: /disk1/rman/prod/users_2_42.bak
  List of Datafiles in backup set 37
  File LV Type Ckp SCN    Ckp Time  Name
  ---- -- ---- ---------- --------- ----
  2    2  Incr 1404665    18-AUG-11 /u01/app/oracle/oradata/prod/users01.dbf
 3)建立 2级差异备份
 08:06:03 SQL> insert into emp1 select * from emp1;                                                                                      

16 rows created.

08:07:49 SQL> /                                                                                                                         

32 rows created.

08:07:51 SQL> commit;                                                                                                                   

Commit complete.

08:07:53 SQL> 
RMAN> backup incremental level 2 format '/disk1/rman/prod/users_2_%s.bak' datafile 2;   

  4)建立累计增量备份
  08:07:53 SQL> insert into emp1 select * from emp1;                                                                                      

64 rows created.

08:08:55 SQL> /                                                                                                                         

128 rows created.

08:08:55 SQL> commit;                                                                                                                   

Commit complete.

08:08:57 SQL> 
RMAN> backup incremental level 1 cumulative  format '/disk1/rman/prod/users_1cu_%s.bak' datafile 2;

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
41      Incr 1  528.00K    DISK        00:00:00     18-AUG-11      
        BP Key: 41   Status: AVAILABLE  Compressed: NO  Tag: TAG20110818T080942
        Piece Name: /disk1/rman/prod/users_1cu_46.bak
  List of Datafiles in backup set 41
  File LV Type Ckp SCN    Ckp Time  Name
  ---- -- ---- ---------- --------- ----
  2    1  Incr 1404815    18-AUG-11 /u01/app/oracle/oradata/prod/users01.dbf
  
  --------------恢复
  
  1)测试环境
  08:08:57 SQL> select count(*) from emp1;                                                                                                

  COUNT(*)
----------
       256

08:10:33 SQL> shutdown abort

[oracle@work ~]$ rm /u01/app/oracle/oradata/prod/users01.dbf

2)启动数据库
08:10:52 SQL> startup                                                                                                                    
ORACLE instance started.

Total System Global Area  314572800 bytes
Fixed Size                  1219184 bytes
Variable Size              79693200 bytes
Database Buffers          230686720 bytes
Redo Buffers                2973696 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 2 - see DBWR trace file
ORA-01110: data file 2: '/u01/app/oracle/oradata/prod/users01.dbf'

08:11:35 SQL> select file#,error from v$recover_file;                                                                                   

     FILE# ERROR
---------- -----------------------------------------------------------------
         2 FILE NOT FOUND

3)恢复数据文件

RMAN> run {                                                                                                                              
2> restore datafile 2;                                                                                                                   
3> recover datafile 2;                                                                                                                   
4>  alter database open;                                                                                                                 
5> }                                                                                                                                    

Starting restore at 18-AUG-11
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=154 devtype=DISK

channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00002 to /u01/app/oracle/oradata/prod/users01.dbf                  ;先用0级restore
channel ORA_DISK_1: reading from backup piece /disk1/rman/prod/users_1cu_46.bak     ;再用累积备份restore
channel ORA_DISK_1: restored backup piece 1
piece handle=/disk1/rman/prod/users_1cu_46.bak tag=TAG20110818T080942
channel ORA_DISK_1: restore complete, elapsed time: 00:00:04
Finished restore at 18-AUG-11

Starting recover at 18-AUG-11
using channel ORA_DISK_1

starting media recovery
media recovery complete, elapsed time: 00:00:02

Finished recover at 18-AUG-11

database opened

4)验证
08:14:01 SQL> select count(*) from scott.emp1;                                                                                          

  COUNT(*)
----------
       256

08:14:08 SQL>

 
----------------将数据文件恢复到新的位置
01:27:08 SQL> startup                                                                                                                    
ORACLE instance started.

Total System Global Area  440401920 bytes
Fixed Size                  1219904 bytes
Variable Size             213910208 bytes
Database Buffers          222298112 bytes
Redo Buffers                2973696 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 7 - see DBWR trace file
ORA-01110: data file 7: '/u01/app/oracle/oradata/test/lxtbs2.dbf'


01:27:17 SQL> select file# ,error from v$recover_file;                                                                                  

     FILE# ERROR
---------- -----------------------------------------------------------------
         7 FILE NOT FOUND

01:27:25 SQL>

[oracle@work ~]$ rman target /

Recovery Manager: Release 10.2.0.1.0 - Production on Tue Oct 25 01:27:39 2011

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

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

run {                                                                                                                              
 startup force mount;                                                                                                                  
 set newname for datafile 7 to '/disk1/oradata/test/lxtbs2.dbf';                                                                       
restore datafile 7;   
switch datafile 7;                                                                                                                
 recover datafile 7;                                                                                                                   
 alter database open;                                                                                                                  
  }  
  或者
  run {                                                                                                                              
 startup force mount;  
  switch datafile 7 to datafilecopy '/disk1/oradata/test/lxtbs2.dbf';
  recover datafile 7;                                                                                                                   
 alter database open;
 }

Oracle instance started
database mounted

Total System Global Area     440401920 bytes

Fixed Size                     1219904 bytes
Variable Size                213910208 bytes
Database Buffers             222298112 bytes
Redo Buffers                   2973696 bytes

executing command: SET NEWNAME

Starting restore at 25-OCT-11
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=37 devtype=DISK

datafile 7 is already restored to file /disk1/oradata/test/lxtbs2.dbf
restore not done; all files readonly, offline, or already restored
Finished restore at 25-OCT-11

datafile 7 switched to datafile copy
input datafile copy recid=14 stamp=765423007 filename=/disk1/oradata/test/lxtbs2.dbf

Starting recover at 25-OCT-11
using channel ORA_DISK_1

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

Finished recover at 25-OCT-11

database opened

RMAN> 
     


第十章:

1、rman 不完全恢复

2、rman 不完全恢复:
   1)基于时间和基于scn: 用于恢复过去某个时间被误操作的重要table
案例1:
-------恢复过去某个时间点误操作的table
1)测试环境
01:15:47 SQL> conn scott/tiger                                                                                                           
Connected.
01:16:01 SQL> select * from lx01;                                                                                                       

        ID
----------
         1
         2
         3

01:16:07 SQL> truncate table lx01;                                                                                                      

Table truncated.

01:16:25 SQL> insert into lx01 values (111);                                                                                            

1 row created.

01:16:37 SQL> insert into lx01 values (222);                                                                                            

1 row created.

01:16:40 SQL> insert into lx01 values (333);                                                                                            

1 row created.


01:16:43 SQL> commit;                                                                                                                   

Commit complete.

01:16:44 SQL> select * from lx01;                                                                                                       

        ID
----------
       111
       222
       333

01:16:49 SQL>

2)通过logmnr 找出误操作的时间点

------配置 utl 参数
01:17:55 SQL> show parameter utl                                                                                                        

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
utl_file_dir                         string      /home/oracle/logmnr

--------建立数据字典分析文件

01:18:31 SQL> execute dbms_logmnr_d.build('dict.ora','/home/oracle/logmnr',dbms_logmnr_d.store_in_flat_file);                           

PL/SQL procedure successfully completed.

--------添加日志分析
01:19:11 SQL> col member for a50                                                                                                         
01:19:17 SQL>                                                                                                                          
  1* select group#,member from v$logfile

    GROUP# MEMBER
---------- --------------------------------------------------
         3 /u01/app/oracle/oradata/prod/redo03.log
         2 /u01/app/oracle/oradata/prod/redo02.log
         1 /u01/app/oracle/oradata/prod/redo01.log

01:19:17 SQL> select * from v$log;                                                                                                      

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
         1          1         17   52428800          1 NO  CURRENT                1424859 18-AUG-11
         2          1         16   52428800          1 YES INACTIVE               1403618 18-AUG-11
         3          1         15   52428800          1 YES INACTIVE               1383274 18-AUG-11

01:19:22 SQL>

01:19:22 SQL> execute dbms_logmnr.add_logfile(logfilename=>'/u01/app/oracle/oradata/prod/redo01.log',options=>dbms_logmnr.new);         

PL/SQL procedure successfully completed.

----------执行分析

01:20:17 SQL> execute dbms_logmnr.start_logmnr(dictfilename=>'/home/oracle/logmnr/dict.ora',options=>dbms_logmnr.ddl_dict_tracking);    

PL/SQL procedure successfully completed.

-----------查看分析结果

01:22:17 SQL> select username,scn,timestamp,sql_redo from v$logmnr_contents                                                              
01:22:18   2   where lower(sql_redo) like '%table%' and username='SCOTT';                                                               

USERNAME                              SCN TIMESTAMP           SQL_REDO
------------------------------ ---------- ------------------- --------------------------------------------------
SCOTT                             1450811 2011-08-19 01:44:41 truncate table lx01;


---------结束logmnr
01:22:59 SQL> execute dbms_logmnr.end_logmnr;                                                                                           

PL/SQL procedure successfully completed.

01:23:23 SQL>

---------设置date 格式

01:24:31 SQL> alter system set nls_date_format='yyyy-mm-dd hh24:mi:ss' scope=spfile;                                                    

System altered.

3)恢复
[oracle@work ~]$ rman target  /

Recovery Manager: Release 10.2.0.1.0 - Production on Fri Aug 19 01:49:04 2011

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

connected to target database: PROD (DBID=170319990)

 run {                                                                                                                              
 shutdown immediate;                                                                                                                  
 startup mount;                                                                                                                        
 allocate channel c1 type disk;                                                                                                        
 allocate channel c2 type disk;                                                                                                        
 set until time '2011-08-19 01:44:41';                                                                                                                 
 restore database;                                                                                                                     
 recover database;                                                                                                                     
 alter database open resetlogs;                                                                                                        
  }                                                                                                                                  

4)验证

01:51:54 SQL> select * from scott.lx01;                                                                                                 

        ID
----------
         1
         2
         3

01:51:58 SQL>


Startup mount;
Restore database until time "to_date('2010-07-05 14:02:00','yyyy-mm-dd hh24:mi:ss')";
Recover database until time "to_date('2010-07-05 14:02:00','yyyy-mm-dd hh24:mi:ss')";
Alter database open resetlogs;

案例2:基于scn

1)测试环境
01:34:32 SQL> select current_scn from v$database;                                                                                       

CURRENT_SCN
-----------
    1450438
    
--------在实际的生产环境中,scn要通过logmnr找出,这里只是实验

01:34:37 SQL> conn scott/tiger;                                                                                                          
Connected.
01:34:41 SQL> 
01:34:41 SQL> select * from lx01;                                                                                                       

        ID
----------
       111
       222
       333
01:34:58 SQL> truncate table lx01;                                                                                                      

Table truncated.

01:35:04 SQL> insert into lx01 values(1);                                                                                               

1 row created.

01:35:21 SQL> insert into lx01 values(2);                                                                                               

1 row created.

01:35:24 SQL> insert into lx01 values(4);                                                                                               

1 row created.

01:35:25 SQL> commit;                                                                                                                   

Commit complete.

01:35:27 SQL> select * from lx01;                                                                                                       

        ID
----------
         1
         2
         4

01:35:31 SQL>

2)通过rman恢复 ,lx01 被truncate 之前的data
run {                                                                                                                              
 shutdown immediate;                                                                                                                  
 startup mount;                                                                                                                        
 allocate channel c1 type disk;                                                                                                        
 allocate channel c2 type disk;                                                                                                        
 set until scn 1450438;                                                                                                                
 restore database;                                                                                                                     
 recover database;                                                                                                                     
 alter database open resetlogs;                                                                                                        
10>  }                                                                                                                                  

database closed
database dismounted
Oracle instance shut down

connected to target database (not started)
Oracle instance started
database mounted

Total System Global Area     314572800 bytes

Fixed Size                     1219184 bytes
Variable Size                 96470416 bytes
Database Buffers             213909504 bytes
Redo Buffers                   2973696 bytes

allocated channel: c1
channel c1: sid=157 devtype=DISK

allocated channel: c2
channel c2: sid=154 devtype=DISK

executing command: SET until clause

Starting restore at 19-AUG-11

channel c1: starting datafile backupset restore
channel c1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to /u01/app/oracle/oradata/prod/system01.dbf
restoring datafile 00002 to /u01/app/oracle/oradata/prod/users01.dbf
restoring datafile 00003 to /u01/app/oracle/oradata/prod/sysaux01.dbf
restoring datafile 00004 to /u01/app/oracle/oradata/prod/index01.dbf
restoring datafile 00005 to /u01/app/oracle/oradata/prod/example01.dbf
restoring datafile 00006 to /u01/app/oracle/oradata/prod/test01.dbf
restoring datafile 00007 to /u01/app/oracle/oradata/prod/undo_tbs01.dbf
restoring datafile 00008 to /u01/app/oracle/oradata/prod/test02.dbf
restoring datafile 00009 to /u01/app/oracle/oradata/prod/cuug01.dbf
restoring datafile 00010 to /u01/app/oracle/oradata/prod/lx01.dbf
restoring datafile 00011 to /u01/app/oracle/oradata/prod/perfstat01.dbf
channel c1: reading from backup piece /disk1/rman/prod/PROD_54.bak
channel c1: restored backup piece 1
piece handle=/disk1/rman/prod/PROD_54.bak tag=TAG20110819T013156
channel c1: restore complete, elapsed time: 00:01:07
Finished restore at 19-AUG-11

Starting recover at 19-AUG-11

starting media recovery
media recovery complete, elapsed time: 00:00:04

Finished recover at 19-AUG-11

database opened
released channel: c1
released channel: c2

RMAN>


告警日志信息:
Completed: alter database mount
Fri Aug 19 01:38:47 2011
Full restore complete of datafile 6 /u01/app/oracle/oradata/prod/test01.dbf.  Elapsed time: 0:00:01 
  checkpoint is 1450186
Full restore complete of datafile 8 /u01/app/oracle/oradata/prod/test02.dbf.  Elapsed time: 0:00:02 
  checkpoint is 1450186
Full restore complete of datafile 9 /u01/app/oracle/oradata/prod/cuug01.dbf.  Elapsed time: 0:00:02 
  checkpoint is 1450186
Full restore complete of datafile 10 /u01/app/oracle/oradata/prod/lx01.dbf.  Elapsed time: 0:00:01 
  checkpoint is 1450186
Fri Aug 19 01:39:10 2011
Full restore complete of datafile 2 /u01/app/oracle/oradata/prod/users01.dbf.  Elapsed time: 0:00:23 
  checkpoint is 1450186
Full restore complete of datafile 4 /u01/app/oracle/oradata/prod/index01.dbf.  Elapsed time: 0:00:27 
  checkpoint is 1450186
Full restore complete of datafile 5 /u01/app/oracle/oradata/prod/example01.dbf.  Elapsed time: 0:00:29 
  checkpoint is 1450186
Full restore complete of datafile 7 /u01/app/oracle/oradata/prod/undo_tbs01.dbf.  Elapsed time: 0:00:30 
  checkpoint is 1450186
Fri Aug 19 01:39:24 2011
Full restore complete of datafile 11 /u01/app/oracle/oradata/prod/perfstat01.dbf.  Elapsed time: 0:00:38 
  checkpoint is 1450186
Fri Aug 19 01:39:36 2011
Full restore complete of datafile 3 /u01/app/oracle/oradata/prod/sysaux01.dbf.  Elapsed time: 0:00:51 
  checkpoint is 1450186
Fri Aug 19 01:39:49 2011
Full restore complete of datafile 1 /u01/app/oracle/oradata/prod/system01.dbf.  Elapsed time: 0:01:03 
  checkpoint is 1450186
Fri Aug 19 01:39:52 2011
alter database recover datafile list clear
Fri Aug 19 01:39:52 2011
Completed: alter database recover datafile list clear
Fri Aug 19 01:39:52 2011
alter database recover datafile list
 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11
Completed: alter database recover datafile list
 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11
Fri Aug 19 01:39:52 2011
alter database recover if needed
 start until change 1450438
Media Recovery Start
Fri Aug 19 01:39:52 2011
Recovery of Online Redo Log: Thread 1 Group 3 Seq 18 Reading mem 0
  Mem# 0 errs 0: /u01/app/oracle/oradata/prod/redo03.log
Fri Aug 19 01:39:53 2011
Incomplete Recovery applied until change 1450439
Fri Aug 19 01:39:53 2011
Media Recovery Complete (prod)
Completed: alter database recover if needed
 start until change 1450438
Fri Aug 19 01:39:56 2011
alter database open resetlogs

3)验证:

01:42:00 SQL> select * from scott.lx01;                                                                                                 

        ID
----------
       111
       222
       333
案例3:
-----------在做完全恢复时,归档日志或current redo log 不完整,不能实现完全恢复

----------基于redo log的sequence  (相当于手工恢复:基于cancel)

1)测试环境
01:55:05 SQL> select * from scott.lx01;                                                                                                 

        ID
----------
         1
         2
         3

01:55:22 SQL> insert into scott.lx01 values (4);                                                                                        

1 row created.

01:55:31 SQL> commit;                                                                                                                   

Commit complete.

01:55:32 SQL> alter system archive log current;                                                                                         

System altered.

01:55:40 SQL> insert into scott.lx01 values (5);                                                                                        

1 row created.

01:55:41 SQL> commit;                                                                                                                   

Commit complete.

01:55:44 SQL> insert into scott.lx01 values (6);                                                                                        

1 row created.

01:55:47 SQL> commit;                                                                                                                   

Commit complete.

01:55:51 SQL> alter system archive log current;                                                                                         

System altered.

01:55:54 SQL> insert into scott.lx01 values (7);                                                                                        

1 row created.

01:56:00 SQL> commit;                                                                                                                   

Commit complete.

01:56:02 SQL> alter system archive log current;                                                                                         

System altered.

01:56:07 SQL> insert into scott.lx01 values (8);                                                                                        

1 row created.

01:56:10 SQL> commit;                                                                                                                   

Commit complete.

01:56:11 SQL> alter system archive log current;                                                                                         

System altered.

01:56:16 SQL> insert into scott.lx01 values (9);                                                                                        

1 row created.

01:56:18 SQL> commit;                                                                                                                   

Commit complete.

01:56:20 SQL> select name from v$archived_log; 
NAME
------------------------------------------------------------------------------------------------------------------------
/disk1/arch/prod/arch_2_1_759549082.log
/disk1/arch/prod/arch_3_1_759549082.log
/disk1/arch/prod/arch_4_1_759549082.log
/disk1/arch/prod/arch_5_1_759549082.log
/disk1/arch/prod/arch_6_1_759549082.log

01:57:19 SQL> shutdown abort;                                                                                                            
ORACLE instance shut down.
01:57:28 SQL> !                                                                                                                          
[oracle@work ~]$ exit
exit

01:57:32 SQL> !                                                                                                                          
[oracle@work ~]$ rm /u01/app/oracle/oradata/prod/lx01.dbf 
[oracle@work ~]$ mv /disk1/arch/prod/arch_5_1_759549082.log /disk1/arch/prod/arch_5_1_759549082.log.bak

2)启动database
01:58:23 SQL> startup                                                                                                                    
ORACLE instance started.

Total System Global Area  314572800 bytes
Fixed Size                  1219184 bytes
Variable Size              79693200 bytes
Database Buffers          230686720 bytes
Redo Buffers                2973696 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 10 - see DBWR trace file
ORA-01110: data file 10: '/u01/app/oracle/oradata/prod/lx01.dbf'

01:58:39 SQL> select file#,error from v$recover_file;                                                                                   

     FILE# ERROR
---------- -----------------------------------------------------------------
        10 FILE NOT FOUND
        
3)对datafile 做完全恢复

RMAN> run {                                                                                                                              
2> restore datafile 10;                                                                                                                  
3> recover datafile 10;                                                                                                                  
4> alter database open;                                                                                                                  
5> }                                                                                                                                    

Starting restore at 19-AUG-11
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=154 devtype=DISK

channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00010 to /u01/app/oracle/oradata/prod/lx01.dbf
channel ORA_DISK_1: reading from backup piece /disk1/rman/prod/PROD_54.bak
channel ORA_DISK_1: restored backup piece 1
piece handle=/disk1/rman/prod/PROD_54.bak tag=TAG20110819T013156
channel ORA_DISK_1: restore complete, elapsed time: 00:00:08
Finished restore at 19-AUG-11

Starting recover at 19-AUG-11
using channel ORA_DISK_1

starting media recovery

archive log thread 1 sequence 18 is already on disk as file /disk1/arch/prod/arch_18_1_759396736.log
archive log thread 1 sequence 1 is already on disk as file /disk1/arch/prod/arch_1_1_759548396.log
archive log thread 1 sequence 2 is already on disk as file /disk1/arch/prod/arch_2_1_759548396.log
archive log thread 1 sequence 3 is already on disk as file /disk1/arch/prod/arch_3_1_759548396.log
archive log thread 1 sequence 1 is already on disk as file /disk1/arch/prod/arch_1_1_759549082.log
archive log thread 1 sequence 2 is already on disk as file /disk1/arch/prod/arch_2_1_759549082.log
archive log thread 1 sequence 3 is already on disk as file /disk1/arch/prod/arch_3_1_759549082.log
archive log thread 1 sequence 4 is already on disk as file /disk1/arch/prod/arch_4_1_759549082.log
archive log thread 1 sequence 6 is already on disk as file /disk1/arch/prod/arch_6_1_759549082.log
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 08/19/2011 01:59:56
RMAN-06053: unable to perform media recovery because of missing log
RMAN-06025: no backup of log thread 1 seq 5 lowscn 1451172 found to restore

---------恢复失败,因为 ‘log thread 1 seq 5’ 丢失

4)执行不完全恢复
RMAN> run {                                                                                                                              
2> startup force mount;                                                                                                                  
3> set until sequence 5;                                                                                                                 
4> restore database;                                                                                                                     
5> recover database;                                                                                                                     
6> alter database open resetlogs;                                                                                                        
7> }                                                                                                                                    

5)验证
02:04:04 SQL> 
02:04:04 SQL> select * from scott.lx01;                                                                                                 

        ID
----------
         4
         5
         6
         1
         2
         3

6 rows selected.

案例4:
-------------误删除表空间(已备份),通过备份的控制文件进行恢复
---------基于 backup controlfile
1)测试环境
02:21:27 SQL> select * from scott.lx01;                                                                                                 

        ID
----------
         4
         5
         6
         1
         2
         3

6 rows selected.

-------备份当前控制文件

RMAN> backup current controlfile format '/disk1/rman/prod/control.bak';  

02:21:50 SQL> insert into scott.lx01 values (7);                                                                                        

1 row created.

02:23:24 SQL> insert into scott.lx01 values (8);                                                                                        

1 row created.

02:23:26 SQL> insert into scott.lx01 values (9);                                                                                        

1 row created.

02:23:27 SQL> commit;                                                                                                                   

Commit complete.

02:23:29 SQL> select * from scott.lx01;                                                                                                 

        ID
----------
         4
         5
         6
         1
         2
         3
         7
         8
         9

9 rows selected.
----------表空间被误删除
02:23:35 SQL> drop tablespace lx including contents and datafiles;                                                                      

Tablespace dropped.

02:24:05 SQL> select file_id,file_name,tablespace_name from dba_data_files;                                                             

   FILE_ID FILE_NAME                                          TABLESPACE_NAME
---------- -------------------------------------------------- ------------------------------
         8 /u01/app/oracle/oradata/prod/test02.dbf            TESTS
         3 /u01/app/oracle/oradata/prod/sysaux01.dbf          SYSAUX
         2 /u01/app/oracle/oradata/prod/users01.dbf           USERS
         1 /u01/app/oracle/oradata/prod/system01.dbf          SYSTEM
         5 /u01/app/oracle/oradata/prod/example01.dbf         EXAMPLE
         6 /u01/app/oracle/oradata/prod/test01.dbf            TESTS
         7 /u01/app/oracle/oradata/prod/undo_tbs01.dbf        UNDO_TBS
         4 /u01/app/oracle/oradata/prod/index01.dbf           INDEXES
         9 /u01/app/oracle/oradata/prod/cuug01.dbf            CUUG
        11 /u01/app/oracle/oradata/prod/perfstat01.dbf        PERFSTAT

10 rows selected.

查看告警日志,找到drop tablespace的时间点:
Fri Aug 19 02:24:01 2011
drop tablespace lx including contents and datafiles

2)恢复
02:25:32 SQL> select dbid from v$database;                                                                                              

      DBID
----------
 170319990
 ---------恢复备份控制文件
 RMAN> shutdown immediate                                                                                                                

database closed
database dismounted
Oracle instance shut down

RMAN> startup nomount                                                                                                                   

connected to target database (not started)
Oracle instance started

Total System Global Area     314572800 bytes

Fixed Size                     1219184 bytes
Variable Size                 83887504 bytes
Database Buffers             226492416 bytes
Redo Buffers                   2973696 bytes

-----       RMAN> set dbid=170319990;                                                                                                               

-----       executing command: SET DBID


RMAN> restore controlfile from  '/disk1/rman/prod/control.bak';                                                                         

Starting restore at 19-AUG-11
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=155 devtype=DISK

channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:02
output filename=/u01/app/oracle/oradata/prod/control01.ctl
output filename=/u01/app/oracle/oradata/prod/control02.ctl
output filename=/u01/app/oracle/oradata/prod/control03.ctl
Finished restore at 19-AUG-11

-----------基于时间点的恢复

run {                                                                                                                                                                                                                                                      
 startup force mount;                                                                                                                        
 allocate channel c1 type disk;                                                                                                        
 allocate channel c2 type disk;                                                                                                        
 set until time '2011-08-19 02:24:01';                   //删除tablespace的时间点                                                                                                             
 restore database;                                                                                                                     
 recover database;                                                                                                                     
 alter database open resetlogs;                                                                                                        
9>  }     

3)验证
02:34:03 SQL> col file_name for a50                                                                                                      
02:34:10 SQL> select file_id,file_name,tablespace_name from dba_data_files;                                                             

   FILE_ID FILE_NAME                                          TABLESPACE_NAME
---------- -------------------------------------------------- ------------------------------
         8 /u01/app/oracle/oradata/prod/test02.dbf            TESTS
         3 /u01/app/oracle/oradata/prod/sysaux01.dbf          SYSAUX
         2 /u01/app/oracle/oradata/prod/users01.dbf           USERS
         1 /u01/app/oracle/oradata/prod/system01.dbf          SYSTEM
         5 /u01/app/oracle/oradata/prod/example01.dbf         EXAMPLE
         6 /u01/app/oracle/oradata/prod/test01.dbf            TESTS
         7 /u01/app/oracle/oradata/prod/undo_tbs01.dbf        UNDO_TBS
         4 /u01/app/oracle/oradata/prod/index01.dbf           INDEXES
         9 /u01/app/oracle/oradata/prod/cuug01.dbf            CUUG
        10 /u01/app/oracle/oradata/prod/lx01.dbf              LX
        11 /u01/app/oracle/oradata/prod/perfstat01.dbf        PERFSTAT

11 rows selected.

02:34:22 SQL> select * from scott.lx01;                                                                                                 

        ID
----------
         4
         5
         6
         1
         2
         3
         7
         8
         9

9 rows selected.

02:34:32 SQL>

----------------非归档模式 RMAN 备份恢复
一、查看测试环境

[oracle@oracle ~]$ !sql
sqlplus '/as sysdba'

SQL*Plus: Release 10.2.0.1.0 - Production on Thu Jul 28 08:40:15 2011

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

Connected to an idle instance.

08:40:17 SQL> startup
ORACLE instance started.

Total System Global Area  251658240 bytes
Fixed Size                  1218820 bytes
Variable Size             201328380 bytes
Database Buffers           46137344 bytes
Redo Buffers                2973696 bytes
Database mounted.
Database opened.
08:40:42 SQL> show parameter name

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert                 string
db_name                              string      lx01
db_unique_name                       string      lx01
global_names                         boolean     FALSE
instance_name                        string      lx01
lock_name_space                      string
log_file_name_convert                string
service_names                        string      lx01
08:41:29 SQL> !clear


08:41:45 SQL> archive log list;
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            /disk4/arch/lx01
Oldest online log sequence     1
Current log sequence           3
08:41:57 SQL> show parameter name

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert                 string
db_name                              string      lx01
db_unique_name                       string      lx01
global_names                         boolean     FALSE
instance_name                        string      lx01
lock_name_space                      string
log_file_name_convert                string
service_names                        string      lx01
08:42:10 SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------------
         1          1          1   10485760          2 NO  INACTIVE               1278963 2011-07-22 12:00:15
         4          1          0   10485760          2 YES UNUSED                       0
         3          1          3   10485760          2 NO  CURRENT                1321065 2011-07-28 08:40:32
         2          1          2   10485760          2 NO  INACTIVE               1300729 2011-07-28 08:20:06

08:42:42 SQL> select name from v$datafile;

NAME
------------------------------------------------------------------------------------------------------------------------------------------------------
/u01/app/oracle/oradata/lx01/system01.dbf
/u01/app/oracle/oradata/lx01/rtbs01.dbf
/u01/app/oracle/oradata/lx01/sysaux01.dbf
/u01/app/oracle/oradata/lx01/user01.dbf
/u01/app/oracle/oradata/lx01/small_undo01.dbf
/u01/app/oracle/oradata/lx01/test01.dbf
/u01/app/oracle/oradata/lx01/users02.dbf
/u01/app/oracle/oradata/lx01/undo01.dbf
/u01/app/oracle/oradata/lx01/indexes01.dbf

9 rows selected.


[oracle@oracle ~]$ !sql
sqlplus '/as sysdba'

SQL*Plus: Release 10.2.0.1.0 - Production on Thu Jul 28 08:45:39 2011

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


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

08:45:39 SQL> conn scott/tiger
Connected.
08:45:41 SQL> select * from tab;

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
ADMIN_EXT_EMPLOYEES            TABLE
SYS_TEMP_FBT                   TABLE
BONUS                          TABLE
DEPT                           TABLE
EMP                            TABLE
EMP_EXT                        TABLE
EXCEPTIONS                     TABLE
SALGRADE                       TABLE
EMP1                           TABLE
TEST                           TABLE

10 rows selected.

二、利用rman备份

RMAN> run {
2>  shutdown immediate;
3>  startup mount;
4>  backup database format='/disk4/rman/lx/%d_%s.bak';
5>  alter database open;
6> }

database closed
database dismounted
Oracle instance shut down

connected to target database (not started)
Oracle instance started
database mounted

Total System Global Area     251658240 bytes

Fixed Size                     1218820 bytes
Variable Size                201328380 bytes
Database Buffers              46137344 bytes
Redo Buffers                   2973696 bytes

Starting backup at 22-JUL-11
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=37 devtype=DISK
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00001 name=/u01/app/oracle/oradata/lx01/system01.dbf
input datafile fno=00002 name=/u01/app/oracle/oradata/lx01/rtbs01.dbf
input datafile fno=00003 name=/u01/app/oracle/oradata/lx01/sysaux01.dbf
input datafile fno=00004 name=/u01/app/oracle/oradata/lx01/user01.dbf
input datafile fno=00010 name=/u01/app/oracle/oradata/lx01/undo01.dbf
input datafile fno=00006 name=/u01/app/oracle/oradata/lx01/test01.dbf
input datafile fno=00007 name=/u01/app/oracle/oradata/lx01/users02.dbf
input datafile fno=00011 name=/u01/app/oracle/oradata/lx01/indexes01.dbf
input datafile fno=00005 name=/u01/app/oracle/oradata/lx01/small_undo01.dbf
channel ORA_DISK_1: starting piece 1 at 22-JUL-11
channel ORA_DISK_1: finished piece 1 at 22-JUL-11
piece handle=/disk4/rman/lx/LX01_115.bak tag=TAG20110722T114920 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:35
Finished backup at 22-JUL-11

Starting Control File and SPFILE Autobackup at 22-JUL-11
piece handle=/disk4/recovery/lx01/LX01/autobackup/2011_07_22/o1_mf_s_757165750_72m71539_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 22-JUL-11

database opened

RMAN> list backup;


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

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
111     Full    319.06M    DISK        00:00:29     22-JUL-11      
        BP Key: 111   Status: AVAILABLE  Compressed: NO  Tag: TAG20110722T114920
        Piece Name: /disk4/rman/lx/LX01_115.bak
  List of Datafiles in backup set 111
  File LV Type Ckp SCN    Ckp Time  Name
  ---- -- ---- ---------- --------- ----
  1       Full 1278135    22-JUL-11 /u01/app/oracle/oradata/lx01/system01.dbf
  2       Full 1278135    22-JUL-11 /u01/app/oracle/oradata/lx01/rtbs01.dbf
  3       Full 1278135    22-JUL-11 /u01/app/oracle/oradata/lx01/sysaux01.dbf
  4       Full 1278135    22-JUL-11 /u01/app/oracle/oradata/lx01/user01.dbf
  5       Full 1278135    22-JUL-11 /u01/app/oracle/oradata/lx01/small_undo01.dbf
  6       Full 1278135    22-JUL-11 /u01/app/oracle/oradata/lx01/test01.dbf
  7       Full 1278135    22-JUL-11 /u01/app/oracle/oradata/lx01/users02.dbf
  10      Full 1278135    22-JUL-11 /u01/app/oracle/oradata/lx01/undo01.dbf
  11      Full 1278135    22-JUL-11 /u01/app/oracle/oradata/lx01/indexes01.dbf

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
112     Full    7.27M      DISK        00:00:01     22-JUL-11      
        BP Key: 112   Status: AVAILABLE  Compressed: NO  Tag: TAG20110722T114956
        Piece Name: /disk4/recovery/lx01/LX01/autobackup/2011_07_22/o1_mf_s_757165750_72m71539_.bkp
  Control File Included: Ckp SCN: 1278135      Ckp time: 22-JUL-11
  SPFILE Included: Modification time: 22-JUL-11

三、模拟测试环境

08:45:48 SQL> select * from test order by 1;

        ID
----------
         1
         2
         3
         4
         5
         6
         7
         8

8 rows selected.

08:45:53 SQL> conn /as sysdba
Connected.
08:46:01 SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------------
         1          1          1   10485760          2 NO  INACTIVE               1278963 2011-07-22 12:00:15
         4          1          4   10485760          2 NO  CURRENT                1321633 2011-07-28 08:45:01
         3          1          3   10485760          2 NO  ACTIVE                 1321065 2011-07-28 08:40:32
         2          1          2   10485760          2 NO  INACTIVE               1300729 2011-07-28 08:20:06

08:46:06 SQL> insert into scott.test values (9);

1 row created.

08:46:17 SQL> insert into scott.test values (10);

1 row created.

08:46:20 SQL> commit;

Commit complete.

08:46:21 SQL> alter system switch logfile;

System altered.

08:46:25 SQL> /

System altered.

08:46:27 SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------------
         1          1          5   10485760          2 NO  ACTIVE                 1321688 2011-07-28 08:46:25
         4          1          4   10485760          2 NO  ACTIVE                 1321633 2011-07-28 08:45:01
         3          1          3   10485760          2 NO  ACTIVE                 1321065 2011-07-28 08:40:32
         2          1          6   10485760          2 NO  CURRENT                1321690 2011-07-28 08:46:27

08:46:31 SQL> insert into scott.test values (11);

1 row created.

08:46:48 SQL> insert into scott.test values (12);

1 row created.

08:46:50 SQL> commit;

Commit complete.

08:46:51 SQL> alter system switch logfile;

System altered.

08:46:56 SQL> /

System altered.

08:47:02 SQL> /

System altered.

08:47:03 SQL> /

System altered.

08:47:05 SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------------
         1          1          9   10485760          2 NO  INACTIVE               1321706 2011-07-28 08:47:03
         4          1          8   10485760          2 NO  INACTIVE               1321704 2011-07-28 08:47:02
         3          1          7   10485760          2 NO  INACTIVE               1321702 2011-07-28 08:46:56
         2          1         10   10485760          2 NO  CURRENT                1321708 2011-07-28 08:47:05

/

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------------
         1          1          9   10485760          2 NO  INACTIVE               1321706 2011-07-28 08:47:03
         4          1          8   10485760          2 NO  INACTIVE               1321704 2011-07-28 08:47:02
         3          1          7   10485760          2 NO  INACTIVE               1321702 2011-07-28 08:46:56
         2          1         10   10485760          2 NO  CURRENT                1321708 2011-07-28 08:47:05

08:47:13 SQL> alter system switch logfile;

System altered.

08:47:16 SQL> select * from scott.test;

        ID
----------
         6
         7
         8
         1
         2
         3
         4
         5
         9
        10
        11
        12

12 rows selected.

08:47:22 SQL> shutdown abort
ORACLE instance shut down.
08:47:41 SQL> !
[oracle@oracle ~]$ 
[oracle@oracle ~]$ rm /u01/app/oracle/oradata/lx01/*.dbf

[oracle@oracle ~]$ sqlplus '/as sysdba'

SQL*Plus: Release 10.2.0.1.0 - Production on Thu Jul 28 08:50:16 2011

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

Connected to an idle instance.

08:50:16 SQL> startup
ORACLE instance started.

Total System Global Area  251658240 bytes
Fixed Size                  1218820 bytes
Variable Size             201328380 bytes
Database Buffers           46137344 bytes
Redo Buffers                2973696 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
ORA-01110: data file 1: '/u01/app/oracle/oradata/lx01/system01.dbf'


08:50:25 SQL> select file# ,error from v$recover_file;

     FILE# ERROR
---------- -----------------------------------------------------------------
         1 FILE NOT FOUND
         2 FILE NOT FOUND
         3 FILE NOT FOUND
         4 FILE NOT FOUND
         5 FILE NOT FOUND
         6 FILE NOT FOUND
         7 FILE NOT FOUND
        10 FILE NOT FOUND
        11 FILE NOT FOUND

9 rows selected.

08:50:37 SQL> exit
ERROR:
ORA-03135: connection lost contact


Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options (with complications)

四、用rman restore database

08:52:45 SQL> select dbid from v$database;

      DBID
----------
1559643052

08:54:04 SQL>


RMAN> list backup;

using target database control file instead of recovery catalog

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

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
113     Full    142.50M    DISK        00:00:26     28-JUL-11      
        BP Key: 113   Status: AVAILABLE  Compressed: NO  Tag: TAG20110728T084406
        Piece Name: /disk4/rman/lx/lx01_118_757673047.bak
  List of Datafiles in backup set 113
  File LV Type Ckp SCN    Ckp Time  Name
  ---- -- ---- ---------- --------- ----
  1       Full 1321454    28-JUL-11 /u01/app/oracle/oradata/lx01/system01.dbf
  5       Full 1321454    28-JUL-11 /u01/app/oracle/oradata/lx01/small_undo01.dbf
  10      Full 1321454    28-JUL-11 /u01/app/oracle/oradata/lx01/undo01.dbf
  11      Full 1321454    28-JUL-11 /u01/app/oracle/oradata/lx01/indexes01.dbf

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
114     Full    176.95M    DISK        00:00:34     28-JUL-11      
        BP Key: 114   Status: AVAILABLE  Compressed: NO  Tag: TAG20110728T084406
        Piece Name: /disk4/rman/lx/lx01_119_757673047.bak
  List of Datafiles in backup set 114
  File LV Type Ckp SCN    Ckp Time  Name
  ---- -- ---- ---------- --------- ----
  2       Full 1321454    28-JUL-11 /u01/app/oracle/oradata/lx01/rtbs01.dbf
  3       Full 1321454    28-JUL-11 /u01/app/oracle/oradata/lx01/sysaux01.dbf
  4       Full 1321454    28-JUL-11 /u01/app/oracle/oradata/lx01/user01.dbf
  6       Full 1321454    28-JUL-11 /u01/app/oracle/oradata/lx01/test01.dbf
  7       Full 1321454    28-JUL-11 /u01/app/oracle/oradata/lx01/users02.dbf

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
115     Full    7.27M      DISK        00:00:01     28-JUL-11      
        BP Key: 115   Status: AVAILABLE  Compressed: NO  Tag: TAG20110728T084443
        Piece Name: /disk4/recovery/lx01/LX01/autobackup/2011_07_28/o1_mf_s_757673037_732pfw39_.bkp
  Control File Included: Ckp SCN: 1321454      Ckp time: 28-JUL-11
  SPFILE Included: Modification time: 22-JUL-11

RMAN> shutdown

database dismounted
Oracle instance shut down

RMAN> startup nomount

connected to target database (not started)
Oracle instance started

Total System Global Area     251658240 bytes

Fixed Size                     1218820 bytes
Variable Size                201328380 bytes
Database Buffers              46137344 bytes
Redo Buffers                   2973696 bytes

RMAN> set dbid=1559643052;

executing command: SET DBID

RMAN> restore controlfile from '/disk4/recovery/lx01/LX01/autobackup/2011_07_28/o1_mf_s_757673037_732pfw39_.bkp';

Starting restore at 28-JUL-11
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=36 devtype=DISK

channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:02
output filename=/disk1/lx01/oradata/control01.ctl
output filename=/disk1/lx01/oradata/control02.ctl
output filename=/disk2/lx01/oradata/control03.ctl
Finished restore at 28-JUL-11

RMAN> alter database mount;

database mounted
released channel: ORA_DISK_1

RMAN> restore database;

Starting restore at 28-JUL-11
Starting implicit crosscheck backup at 28-JUL-11
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=36 devtype=DISK
Crosschecked 2 objects
Finished implicit crosscheck backup at 28-JUL-11

Starting implicit crosscheck copy at 28-JUL-11
using channel ORA_DISK_1
Finished implicit crosscheck copy at 28-JUL-11

searching for all files in the recovery area
cataloging files...
cataloging done

List of Cataloged Files
=======================
File Name: /disk4/recovery/lx01/LX01/autobackup/2011_07_28/o1_mf_s_757673037_732pfw39_.bkp

using channel ORA_DISK_1

skipping datafile 1; already restored to file /u01/app/oracle/oradata/lx01/system01.dbf
skipping datafile 5; already restored to file /u01/app/oracle/oradata/lx01/small_undo01.dbf
skipping datafile 10; already restored to file /u01/app/oracle/oradata/lx01/undo01.dbf
skipping datafile 11; already restored to file /u01/app/oracle/oradata/lx01/indexes01.dbf
skipping datafile 2; already restored to file /u01/app/oracle/oradata/lx01/rtbs01.dbf
skipping datafile 3; already restored to file /u01/app/oracle/oradata/lx01/sysaux01.dbf
skipping datafile 4; already restored to file /u01/app/oracle/oradata/lx01/user01.dbf
skipping datafile 6; already restored to file /u01/app/oracle/oradata/lx01/test01.dbf
skipping datafile 7; already restored to file /u01/app/oracle/oradata/lx01/users02.dbf
restore not done; all files readonly, offline, or already restored
Finished restore at 28-JUL-11

五、查看restore 结果
[oracle@oracle ~]$ !sql
sqlplus '/as sysdba'

SQL*Plus: Release 10.2.0.1.0 - Production on Thu Jul 28 08:52:15 2011

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


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

08:52:16 SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
           1321454

08:52:31 SQL> select checkpoint_change#,file# from v$datafile;

CHECKPOINT_CHANGE#      FILE#
------------------ ----------
           1321454          1
           1321454          2
           1321454          3
           1321454          4
           1321454          5
           1321454          6
           1321454          7
           1321454         10
           1321454         11

9 rows selected.


08:52:38 SQL> select checkpoint_change#,file# from v$datafile_header;

CHECKPOINT_CHANGE#      FILE#
------------------ ----------
           1321454          1
           1321454          2
           1321454          3
           1321454          4
           1321454          5
           1321454          6
           1321454          7
           1321454         10
           1321454         11

9 rows selected.

六、用rman 进行恢复

RMAN> recover database;

Starting recover at 28-JUL-11
using channel ORA_DISK_1

starting media recovery

archive log thread 1 sequence 8 is already on disk as file /disk1/lx01/oradata/redo04b.log
archive log thread 1 sequence 9 is already on disk as file /disk1/lx01/oradata/redo01b.log
archive log thread 1 sequence 10 is already on disk as file /disk1/lx01/oradata/redo02b.log
archive log thread 1 sequence 11 is already on disk as file /disk1/lx01/oradata/redo03b.log
unable to find archive log
archive log thread=1 sequence=3
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 07/28/2011 08:59:30
RMAN-06054: media recovery requesting unknown log: thread 1 seq 3 lowscn 1321454

RMAN> alter database open;

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of alter db command at 07/28/2011 08:59:57
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

RMAN> alter database open resetlogs;

database opened

RMAN>

alter_lx01.log 告警日志信息:

alter database mount
Thu Jul 28 08:58:15 2011
Setting recovery target incarnation to 20
Thu Jul 28 08:58:15 2011
Successful mount of redo thread 1, with mount id 1560169571
Thu Jul 28 08:58:15 2011
Database mounted in Exclusive Mode
Completed: alter database mount
Thu Jul 28 08:59:29 2011
alter database recover datafile list clear
Thu Jul 28 08:59:29 2011
Completed: alter database recover datafile list clear
Thu Jul 28 08:59:29 2011
alter database recover datafile list
 1 , 2 , 3 , 4 , 5 , 6 , 7 , 10 , 11
Completed: alter database recover datafile list
 1 , 2 , 3 , 4 , 5 , 6 , 7 , 10 , 11
Thu Jul 28 08:59:29 2011
alter database recover if needed
 start until cancel using backup controlfile
Media Recovery Start
ORA-279 signalled during: alter database recover if needed
 start until cancel using backup controlfile
...
Thu Jul 28 08:59:29 2011
alter database recover cancel
Thu Jul 28 08:59:30 2011
Media Recovery Canceled
Completed: alter database recover cancel

第十一章: catalog database 目录库

1、catalog database 的功能
    1)集中存放rman的资料库(备份的元数据),并且可以和target database 的controlfile同步
    2)存放rman的备份脚本
   

2、catalog database 的配置
   1)需要建立一个单独的database
   02:43:21 SQL> show parameter name                                                                                                       

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert                 string
db_name                              string      catdb
db_unique_name                       string      catdb
global_names                         boolean     FALSE
instance_name                        string      catdb
lock_name_space                      string
log_file_name_convert                string
service_names                        string      catdb
02:43:30 SQL>

2)建立存放rman 元数据的tablespace
02:44:12 SQL> create tablespace cattbs                                                                                                   
02:44:24   2   datafile '/u01/app/oracle/oradata/catdb/cattbs01.dbf' size 100m;                                                         

Tablespace created.

3)建立user,用于管理rman,并授权

02:45:10 SQL> create user rman identified by rman default tablespace cattbs;                                                            

User created.

02:45:33 SQL> grant connect ,resource ,recovery_catalog_owner to rman;                                                                  

Grant succeeded.

4)启动listener ,链接catalog database
[oracle@work admin]$ lsnrctl status

LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 19-AUG-2011 02:48:01

Copyright (c) 1991, 2005, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=work)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date                19-AUG-2011 02:47:31
Uptime                    0 days 0 hr. 0 min. 29 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=work)(PORT=1521)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "prod" has 1 instance(s).
  Instance "prod", status READY, has 1 handler(s) for this service...
Service "prodXDB" has 1 instance(s).
  Instance "prod", status READY, has 1 handler(s) for this service...
Service "prod_XPT" has 1 instance(s).
  Instance "prod", status READY, has 1 handler(s) for this service...
The command completed successfully

[oracle@work admin]$ rman catalog rman/rman@catdb

Recovery Manager: Release 10.2.0.1.0 - Production on Fri Aug 19 02:49:05 2011

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

connected to recovery catalog database

RMAN> create catalog;           // 建立catalog 的对象                                                                                                        

recovery catalog created

RMAN> 
--------建立以下对象,存储rman 元数据
02:45:54 SQL> conn rman/rman                                                                                                             
Connected.
02:50:16 SQL> 
02:50:16 SQL> select * from tab;                                                                                                        

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
NODE                           TABLE
DB                             TABLE
CONF                           TABLE
DBINC                          TABLE
CKP                            TABLE
TS                             TABLE
TSATT                          TABLE
DF                             TABLE
DFATT                          TABLE
TF                             TABLE
TFATT                          TABLE
OFFR                           TABLE
RR                             TABLE
RT                             TABLE
ORL                            TABLE
RLH                            TABLE
AL                             TABLE

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
BS                             TABLE
BP                             TABLE
BCF                            TABLE
CCF                            TABLE
XCF                            TABLE
BSF                            TABLE
BDF                            TABLE
CDF                            TABLE
XDF                            TABLE
BRL                            TABLE
BCB                            TABLE
CCB                            TABLE
SCR                            TABLE
SCRL                           TABLE
CONFIG                         TABLE
XAL                            TABLE
RSR                            TABLE

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
FB                             TABLE
RC_DATABASE                    VIEW
RC_DATABASE_INCARNATION        VIEW
RC_RESYNC                      VIEW
RC_CHECKPOINT                  VIEW
RC_TABLESPACE                  VIEW
RC_DATAFILE                    VIEW
RC_TEMPFILE                    VIEW
RC_REDO_THREAD                 VIEW
RC_REDO_LOG                    VIEW
RC_LOG_HISTORY                 VIEW
RC_ARCHIVED_LOG                VIEW
RC_BACKUP_SET                  VIEW
RC_BACKUP_PIECE                VIEW
RC_BACKUP_DATAFILE             VIEW
RC_BACKUP_CONTROLFILE          VIEW
RC_BACKUP_SPFILE               VIEW

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
RC_DATAFILE_COPY               VIEW
RC_CONTROLFILE_COPY            VIEW
RC_BACKUP_REDOLOG              VIEW
RC_BACKUP_CORRUPTION           VIEW
RC_COPY_CORRUPTION             VIEW
RC_OFFLINE_RANGE               VIEW
RC_STORED_SCRIPT               VIEW
RC_STORED_SCRIPT_LINE          VIEW
RC_PROXY_DATAFILE              VIEW
RC_PROXY_CONTROLFILE           VIEW
RC_RMAN_CONFIGURATION          VIEW
RC_DATABASE_BLOCK_CORRUPTION   VIEW
RC_PROXY_ARCHIVEDLOG           VIEW
RC_RMAN_STATUS                 VIEW
ROUT                           TABLE
RC_RMAN_OUTPUT                 VIEW
RCVER                          TABLE

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
RC_BACKUP_FILES                VIEW
RC_RMAN_BACKUP_SUBJOB_DETAILS  VIEW
RC_RMAN_BACKUP_JOB_DETAILS     VIEW
RC_BACKUP_SET_DETAILS          VIEW
RC_BACKUP_PIECE_DETAILS        VIEW
RC_BACKUP_COPY_DETAILS         VIEW
RC_PROXY_COPY_DETAILS          VIEW
RC_PROXY_ARCHIVELOG_DETAILS    VIEW
RC_BACKUP_DATAFILE_DETAILS     VIEW
RC_BACKUP_CONTROLFILE_DETAILS  VIEW
RC_BACKUP_ARCHIVELOG_DETAILS   VIEW
RC_BACKUP_SPFILE_DETAILS       VIEW
RC_BACKUP_SET_SUMMARY          VIEW
RC_BACKUP_DATAFILE_SUMMARY     VIEW
RC_BACKUP_CONTROLFILE_SUMMARY  VIEW
RC_BACKUP_ARCHIVELOG_SUMMARY   VIEW
RC_BACKUP_SPFILE_SUMMARY       VIEW

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
RC_BACKUP_COPY_SUMMARY         VIEW
RC_PROXY_COPY_SUMMARY          VIEW
RC_PROXY_ARCHIVELOG_SUMMARY    VIEW
RC_UNUSABLE_BACKUPFILE_DETAILS VIEW
RC_RMAN_BACKUP_TYPE            VIEW

90 rows selected.

02:50:19 SQL>

--------注册目标库(将目标库controlfile的rman 元数据 同步到 catalog database)
[oracle@work admin]$ rman target / catalog rman/rman@catdb

Recovery Manager: Release 10.2.0.1.0 - Production on Fri Aug 19 02:52:19 2011

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

connected to target database: PROD (DBID=170319990)
connected to recovery catalog database
RMAN> register database;                                                                                                                

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

---------------查看注册信息
02:50:19 SQL> desc rc_database;                                                                                                          
 Name                                                              Null?    Type
 ----------------------------------------------------------------- -------- --------------------------------------------
 DB_KEY                                                            NOT NULL NUMBER
 DBINC_KEY                                                                  NUMBER
 DBID                                                              NOT NULL NUMBER
 NAME                                                              NOT NULL VARCHAR2(8)
 RESETLOGS_CHANGE#                                                 NOT NULL NUMBER
 RESETLOGS_TIME                                                    NOT NULL DATE

02:54:28 SQL> select * from rc_database;                                                                                                

    DB_KEY  DBINC_KEY       DBID NAME     RESETLOGS_CHANGE# RESETLOGS
---------- ---------- ---------- -------- ----------------- ---------
         1          2  170319990 PROD               1452590 19-AUG-11

02:54:34 SQL> 
----------利用catalog database存放rman 脚本

1)创建脚本(replace 是修改已经存在的脚本)
RMAN> create script users_bak {                                                                                                          
2> backup datafile '/u01/app/oracle/oradata/prod/users01.dbf' format '/disk1/rman/prod/users_%s.bak';                                    
3> }                                                                                                                                    

created script users_bak

2)查看脚本信息
RMAN> print script users_bak;                                                                                                           

printing stored script: users_bak
 {backup datafile '/u01/app/oracle/oradata/prod/users01.dbf' format '/disk1/rman/prod/users_%s.bak';
}
------通过catalog database 查看
03:02:45 SQL> col SCRIPT_NAME for a30                                                                                                    
03:02:54 SQL> col SCRIPT_COMMENT for a50                                                                                                 
03:03:01 SQL>                                                                                                                     
  1* select * from RC_STORED_SCRIPT

    DB_KEY DB_NAME  SCRIPT_NAME                    SCRIPT_COMMENT
---------- -------- ------------------------------ --------------------------------------------------
         1 PROD     users_bak
03:03:23 SQL> col text for a50                                                                                                           
03:03:30 SQL>                                                                                                                         
  1* select * from RC_STORED_SCRIPT_LINE

    DB_KEY SCRIPT_NAME                          LINE TEXT
---------- ------------------------------ ---------- --------------------------------------------------
         1 users_bak                               1  {backup datafile '/u01/app/oracle/oradata/prod/us
                                                     ers01.dbf' format '/disk1/rman/prod/users_%s.bak';

         1 users_bak                               2 }

3)运行脚本
RMAN> run { execute script users_bak;}                                                                                                  

4) 删除脚本
RMAN> delete script users_bak;                                                                                                          

deleted script: users_bak


验证catalog的恢复功能:

1、模拟环境,target database 的controlfile 都丢失

17:38:54 SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
17:39:40 SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
[oracle@RH54 ~]$ rm /u01/app/oracle/oradata/test2/control01.ctl
[oracle@RH54 ~]$ rm /disk1/oradata/test2/control02.ctl
[oracle@RH54 ~]$ rm /disk2/oradata/test2/control03.ctl
[oracle@RH54 ~]$ !sql
sqlplus '/as sysdba'

SQL*Plus: Release 10.2.0.1.0 - Production on Sat Jun 2 17:40:44 2012

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

Connected to an idle instance.

17:40:45 SQL> startup
ORACLE instance started.

Total System Global Area  314572800 bytes
Fixed Size                  1219160 bytes
Variable Size             109053352 bytes
Database Buffers          201326592 bytes
Redo Buffers                2973696 bytes
ORA-00205: error in identifying control file, check alert log for more info


17:40:50 SQL>

17:40:50 SQL> select status from v$instance;

STATUS
------------
STARTED

17:41:58 SQL>

2、通过rman 连接到目标库恢复控制文件

[oracle@RH54 admin]$ rman target / catalog rman/rman@t1

Recovery Manager: Release 10.2.0.1.0 - Production on Sat Jun 2 17:41:02 2012

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

connected to target database: test2 (not mounted)
connected to recovery catalog database

RMAN> list backup;


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

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
721     Full    329.22M    DISK        00:00:48     02-JUN-12      
        BP Key: 722   Status: AVAILABLE  Compressed: NO  Tag: TAG20120602T173714
        Piece Name: /disk3/rman/cold_bak/TEST2_7.bak
  List of Datafiles in backup set 721
  File LV Type Ckp SCN    Ckp Time  Name
  ---- -- ---- ---------- --------- ----
  1       Full 832486     02-JUN-12 /u01/app/oracle/oradata/test2/system01.dbf
  2       Full 832486     02-JUN-12 /u01/app/oracle/oradata/test2/rbs01.dbf
  3       Full 832486     02-JUN-12 /u01/app/oracle/oradata/test2/sysaux01.dbf
  4       Full 832486     02-JUN-12 /u01/app/oracle/oradata/test2/users01.dbf
  5       Full 832486     02-JUN-12 /u01/app/oracle/oradata/test2/test1.dbf
  6       Full 832486     02-JUN-12 /u01/app/oracle/oradata/test2/tbs1.dbf
  8       Full 832486     02-JUN-12 /u01/app/oracle/oradata/test2/smallundo01.dbf
  10      Full 832486     02-JUN-12 /u01/app/oracle/oradata/test2/indx01.dbf

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
735     Full    6.95M      DISK        00:00:02     02-JUN-12      
        BP Key: 744   Status: AVAILABLE  Compressed: NO  Tag: TAG20120602T173812
        Piece Name: /disk1/recovery/TEST2/autobackup/2012_06_02/o1_mf_s_784921007_7wmqr61r_.bkp
  Control File Included: Ckp SCN: 832486       Ckp time: 02-JUN-12
  SPFILE Included: Modification time: 02-JUN-12

RMAN>

RMAN> restore controlfile from autobackup;

Starting restore at 02-JUN-12
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=35 devtype=DISK

recovery area destination: /disk1/recovery
database name (or database unique name) used for search: TEST2
channel ORA_DISK_1: autobackup found in the recovery area
channel ORA_DISK_1: autobackup found: /disk1/recovery/TEST2/autobackup/2012_06_02/o1_mf_s_784921007_7wmqr61r_.bkp
channel ORA_DISK_1: control file restore from autobackup complete
output filename=/u01/app/oracle/oradata/test2/control01.ctl
output filename=/disk1/oradata/test2/control02.ctl
output filename=/disk2/oradata/test2/control03.ctl
Finished restore at 02-JUN-12

RMAN>

3、controlfile 恢复完成

17:41:58 SQL> alter database mount;

Database altered.

17:43:56 SQL> select name from v$controlfile;

NAME
------------------------------------------------------------------------------------------------------------------------
/u01/app/oracle/oradata/test2/control01.ctl
/disk1/oradata/test2/control02.ctl
/disk2/oradata/test2/control03.ctl

17:44:04 SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open


17:44:08 SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01152: file 1 was not restored from a sufficiently old backup
ORA-01110: data file 1: '/u01/app/oracle/oradata/test2/system01.dbf'


17:44:14 SQL> select file# ,checkpoint_change# from v$datafile;

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1             832486
         2             832486
         3             832486
         4             832486
         5             832486
         6             832486
         8             832486
        10             832486

8 rows selected.

17:44:42 SQL> select file# ,checkpoint_change# from v$datafile_header;

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1             832681
         2             832681
         3             832681
         4             832681
         5             832681
         6             832681
         8             832681
        10             832681

8 rows selected.

17:44:48 SQL>


4、恢复database
RMAN> restore database;

Starting restore at 02-JUN-12
released channel: ORA_DISK_1
Starting implicit crosscheck backup at 02-JUN-12
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=35 devtype=DISK
Crosschecked 1 objects
Finished implicit crosscheck backup at 02-JUN-12

Starting implicit crosscheck copy at 02-JUN-12
using channel ORA_DISK_1
Crosschecked 1 objects
Finished implicit crosscheck copy at 02-JUN-12

searching for all files in the recovery area
cataloging files...
cataloging done

List of Cataloged Files
=======================
File Name: /disk1/recovery/TEST2/autobackup/2012_06_02/o1_mf_s_784917866_7wmnozor_.bkp
File Name: /disk1/recovery/TEST2/autobackup/2012_06_02/o1_mf_s_784921007_7wmqr61r_.bkp
File Name: /disk1/recovery/TEST2/autobackup/2012_06_02/o1_mf_s_784918355_7wmo2mtb_.bkp

using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to /u01/app/oracle/oradata/test2/system01.dbf
restoring datafile 00002 to /u01/app/oracle/oradata/test2/rbs01.dbf
restoring datafile 00003 to /u01/app/oracle/oradata/test2/sysaux01.dbf
restoring datafile 00004 to /u01/app/oracle/oradata/test2/users01.dbf
restoring datafile 00005 to /u01/app/oracle/oradata/test2/test1.dbf
restoring datafile 00006 to /u01/app/oracle/oradata/test2/tbs1.dbf
restoring datafile 00008 to /u01/app/oracle/oradata/test2/smallundo01.dbf
restoring datafile 00010 to /u01/app/oracle/oradata/test2/indx01.dbf
channel ORA_DISK_1: reading from backup piece /disk3/rman/cold_bak/TEST2_7.bak
channel ORA_DISK_1: restored backup piece 1
piece handle=/disk3/rman/cold_bak/TEST2_7.bak tag=TAG20120602T173714
channel ORA_DISK_1: restore complete, elapsed time: 00:00:45
Finished restore at 02-JUN-12

RMAN>

17:44:48 SQL> select file# ,checkpoint_change# from v$datafile;

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1             832486
         2             832486
         3             832486
         4             832486
         5             832486
         6             832486
         8             832486
        10             832486

8 rows selected.

17:46:49 SQL> select file# ,checkpoint_change# from v$datafile_header;

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1             832486
         2             832486
         3             832486
         4             832486
         5             832486
         6             832486
         8             832486
        10             832486

8 rows selected.

17:46:51 SQL>

17:46:51 SQL> alter database open resetlogs;

Database altered.

17:47:32 SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------------
         1          1          0   10485760          2 YES UNUSED                       0
         4          1          1   10485760          2 NO  CURRENT                 832487 2012-06-02 17:47:13
         3          1          0   10485760          2 YES UNUSED                       0
         2          1          0   10485760          2 YES UNUSED                       0

17:47:44 SQL> alter system switch logfile;

System altered.

17:47:52 SQL> /

System altered.

17:47:53 SQL> /

System altered.

17:47:57 SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------------
         1          1          2   10485760          2 YES ACTIVE                  832633 2012-06-02 17:47:52
         4          1          1   10485760          2 YES ACTIVE                  832487 2012-06-02 17:47:13
         3          1          4   10485760          2 NO  CURRENT                 832637 2012-06-02 17:47:57
         2          1          3   10485760          2 YES ACTIVE                  832635 2012-06-02 17:47:53

17:47:59 SQL>

第十二章: rman 维护

1、rman 使用和维护

2、list  查看备份信息
  1)RMAN> list backup;
  2)RMAN> list backup of tablespace users;
  3)RMAN> list backup of datafile 2;
  4)RMAN> list backup of controlfile;
  5) RMAN> list backup of archivelog all;
  6)RMAN> list backup of archivelog until time ='sysdate -1'; 
  7)RMAN> list backupset 56;
  8)RMAN> list copy;
  9)RMAN> list copy of tablespace users;
  10)RMAN> list copy of datafile 1;
  11)RMAN> list datafilecopy 67;
  12)RMAN> list copy of controlfile;

3、crosscheck:用于检测备份状态(AVAILABLE:可用;UNAVAILABLE :不可用;expired 过期(备份已经被os 删除了)(防止备份在os下被误删除)
RMAN> crosscheck backup;
RMAN> crosscheck copy;

4、report
RMAN> report schema;  查看目标库的物理结构
RMAN> report need backup;  查看需要做备份的datafile
RMAN> report obsolete; 根据备份冗余策略来判断,那些备份是陈旧的(obsolete)

5、delete  ;删除备份
RMAN> delete backup of datafile 2; 
RMAN> delete backup of tablespace system;
RMAN> delete backup ;
RMAN> delete backup of controlfile;
RMAN> delete noprompt backup of controlfile;     ;删除noprompt 不提示
RMAN> delete copy;
RMAN> delete copy of  datafile 10;
RMAN> delete copy of  tablespace users;
RMAN> delete expired backup; 删除过期的备份
RMAN> delete expired copy;
RMAN> delete  obsolete ;删除陈旧的备份
RMAN> delete  noprompt  obsolete; 删除不加提示
 
6、catalog :可以把手工备份的文件,转换到rman

-------将手工备份注册为image 
RMAN> catalog datafilecopy '/disk1/backup/prod/hot_bak/users01.dbf';                                                                    

cataloged datafile copy
datafile copy filename=/disk1/backup/prod/hot_bak/users01.dbf recid=68 stamp=759556193

RMAN> list copy of datafile 2;                                                                                                          


List of Datafile Copies
Key     File S Completion Time Ckp SCN    Ckp Time        Name
------- ---- - --------------- ---------- --------------- ----
68      2    A 19-AUG-11       1457868    19-AUG-11       /disk1/backup/prod/hot_bak/users01.dbf

RMAN> delete copy of datafile 2;

-------将手工备份注册成备份集

RMAN> catalog backuppiece  '/disk1/backup/prod/hot_bak/users01.dbf';

---------注册目录下所有的备份(image)

RMAN> catalog start with ‘/disk1/backup/prod/hot_bak/’;

7、change: 修改备份状态(用于对备份进行维护)
RMAN> change backupset 66 unAVAILABLE;  
RMAN> change backupset 66 AVAILABLE;


第十三章:逻辑备份

1、逻辑备份和物理备份区别
      1)物理备份:备份数据文件以及控制文件,备份整个库的物理结构,主要用于media recover
      2)逻辑备份:备份database里的对象的数据结构和数据,作为物理备份的辅助,不能用于media recover ;先主要用于对单个表的备份或数据迁移
                   恢复时只能恢复到备份点
                 

2、exp/imp的使用(expdp/impdp)

emp 导出

C:\Documents and Settings\liqx>exp -help

Export: Release 10.2.0.1.0 - Production on 星期五 8月 19 13:43:49 2011

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


通过输入 EXP 命令和您的用户名/口令, 导出
操作将提示您输入参数:

     例如: EXP SCOTT/TIGER

或者, 您也可以通过输入跟有各种参数的 EXP 命令来控制导出
的运行方式。要指定参数, 您可以使用关键字:

     格式:  EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
     例如: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)
               或 TABLES=(T1:P1,T1:P2), 如果 T1 是分区表

USERID 必须是命令行中的第一个参数。

关键字   说明 (默认值)         关键字      说明 (默认值)
--------------------------------------------------------------------------
USERID   用户名/口令           FULL        导出整个文件 (N)
BUFFER   数据缓冲区大小        OWNER        所有者用户名列表
FILE     输出文件 (EXPDAT.DMP)  TABLES     表名列表
COMPRESS  导入到一个区 (Y)   RECORDLENGTH   IO 记录的长度
GRANTS    导出权限 (Y)          INCTYPE     增量导出类型
INDEXES   导出索引 (Y)         RECORD       跟踪增量导出 (Y)
DIRECT    直接路径 (N)         TRIGGERS     导出触发器 (Y)
LOG      屏幕输出的日志文件    STATISTICS    分析对象 (ESTIMATE)
ROWS      导出数据行 (Y)        PARFILE      参数文件名
CONSISTENT 交叉表的一致性 (N)   CONSTRAINTS  导出的约束条件 (Y)

OBJECT_CONSISTENT    只在对象导出期间设置为只读的事务处理 (N)
FEEDBACK             每 x 行显示进度 (0)
FILESIZE             每个转储文件的最大大小
FLASHBACK_SCN        用于将会话快照设置回以前状态的 SCN
FLASHBACK_TIME       用于获取最接近指定时间的 SCN 的时间
QUERY                用于导出表的子集的 select 子句
RESUMABLE            遇到与空格相关的错误时挂起 (N)
RESUMABLE_NAME       用于标识可恢复语句的文本字符串
RESUMABLE_TIMEOUT    RESUMABLE 的等待时间
TTS_FULL_CHECK       对 TTS 执行完整或部分相关性检查
TABLESPACES          要导出的表空间列表
TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)
TEMPLATE             调用 iAS 模式导出的模板名

成功终止导出, 没有出现警告。

exp 
 1)导出整个database
 [oracle@work dat]$ exp system/oracle file=/home/oracle/dat/prod.dmp log=/home/oracle/dat/prod.log indexes=n full=y
 
 2) 导出schema 所有的对象
 [oracle@work dat]$  exp scott/tiger file=scott.dmp log=scott.log indexes=n owner=scott
 
 3)导出单个表
 [oracle@work dat]$  exp scott/tiger file=emp_dept.dmp log=table.log indexes=n tables=(emp,dept);
 
 -------按条件导出表里的数据
 [oracle@work dat]$  exp scott/tiger file=emp_30.dmp log=emp.log indexes=n tables=emp query=\' where deptno=30\'
 
 imp 导入
 
 
 C:\Documents and Settings\liqx>imp help=y

Import: Release 10.2.0.1.0 - Production on 星期五 8月 19 13:59:20 2011

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


通过输入 IMP 命令和您的用户名/口令, 导入
操作将提示您输入参数:

     例如: IMP SCOTT/TIGER

或者, 可以通过输入 IMP 命令和各种参数来控制导入
的运行方式。要指定参数, 您可以使用关键字:

     格式:  IMP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
     例如: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N
               或 TABLES=(T1:P1,T1:P2), 如果 T1 是分区表

USERID 必须是命令行中的第一个参数。

关键字   说明 (默认值)        关键字      说明 (默认值)
-----------------------------------------------------------------------
USERID   用户名/口令           FULL       导入整个文件 (N)
BUFFER   数据缓冲区大小        FROMUSER    所有者用户名列表
FILE     输入文件 (EXPDAT.DMP)  TOUSER     用户名列表
SHOW     只列出文件内容 (N)     TABLES      表名列表
IGNORE   忽略创建错误 (N)    RECORDLENGTH  IO 记录的长度
GRANTS   导入权限 (Y)          INCTYPE     增量导入类型
INDEXES   导入索引 (Y)         COMMIT       提交数组插入 (N)
ROWS     导入数据行 (Y)        PARFILE      参数文件名
LOG     屏幕输出的日志文件    CONSTRAINTS    导入限制 (Y)
DESTROY                覆盖表空间数据文件 (N)
INDEXFILE              将表/索引信息写入指定的文件
SKIP_UNUSABLE_INDEXES  跳过不可用索引的维护 (N)
FEEDBACK               每 x 行显示进度 (0)
TOID_NOVALIDATE        跳过指定类型 ID 的验证
FILESIZE               每个转储文件的最大大小
STATISTICS             始终导入预计算的统计信息
RESUMABLE              在遇到有关空间的错误时挂起 (N)
RESUMABLE_NAME         用来标识可恢复语句的文本字符串
RESUMABLE_TIMEOUT      RESUMABLE 的等待时间
COMPILE                编译过程, 程序包和函数 (Y)
STREAMS_CONFIGURATION  导入流的一般元数据 (Y)
STREAMS_INSTANTIATION  导入流实例化元数据 (N)

下列关键字仅用于可传输的表空间
TRANSPORT_TABLESPACE 导入可传输的表空间元数据 (N)
TABLESPACES 将要传输到数据库的表空间
DATAFILES 将要传输到数据库的数据文件
TTS_OWNERS 拥有可传输表空间集中数据的用户

------imp 在导入的时候,先创建对象,建立数据结构,然后再导入数据

 Oracle在恢复数据的过程中,当恢复某个表时,该表已经存在,就要根据ignore参数的设置来决定如何操作。
 
 若ignore=y,Oracle不执行CREATE TABLE语句,直接将数据插入到表中,如果插入的记录违背了约束条件,
 比如主键约束,则出错的记录不会插入,但合法的记录会添加到表中。
  
 若ignore=n,Oracle执行CREATE TABLE语句,同时也不会将数据插入到表中,而是忽略该表的错误,继续恢复下一个表。
 
 [oracle@work dat]$ imp scott/tiger file=emp_dept.dmp tables=emp fromuser=scott touser=scott ignore=y
 
 -------如果,两个对象之间有参考性约束(主外键),应该先导入父表,再导入子表
 [oracle@work dat]$ imp scott/tiger file=emp_dept.dmp tables=dept  fromuser=scott touser=scott ignore=y
 
 [oracle@work dat]$ imp scott/tiger file=emp_dept.dmp tables=emp fromuser=scott touser=scott ignore=y
 
 案例: 
 ----------误删除user及所有的对象,恢复
 1)创建用户,并分配权限
 06:14:01 SQL> create user scott identified by tiger default tablespace users ;                                                          

User created.

06:15:55 SQL> grant connect ,resource to scott;                                                                                         

Grant succeeded.

06:16:06 SQL>

2)导入备份
[oracle@work dat]$ imp system/oracle file=scott.dmp ignore=y fromuser=scott touser=scott;

Import: Release 10.2.0.1.0 - Production on Fri Aug 19 06:16:36 2011

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


Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

Export file created by EXPORT:V10.02.01 via conventional path

Warning: the objects were exported by SCOTT, not by you

import done in US7ASCII character set and AL16UTF16 NCHAR character set
import server uses WE8ISO8859P1 character set (possible charset conversion)
. importing SCOTT's objects into SCOTT
. . importing table                        "BONUS"          0 rows imported
. . importing table                         "DEPT"          4 rows imported
. . importing table                          "EMP"         14 rows imported
. . importing table                         "EMP1"        512 rows imported
. . importing table                         "LX01"          9 rows imported
. . importing table                     "SALGRADE"          5 rows imported
. . importing table                         "TEST"         10 rows imported
About to enable constraints...
Import terminated successfully without warnings.
[oracle@work dat]$

3)验证
06:17:11 SQL> conn scott/tiger                                                                                                           
Connected.
06:17:16 SQL> 
06:17:16 SQL> select * from tab;                                                                                                        

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
BONUS                          TABLE
DEPT                           TABLE
EMP                            TABLE
EMP1                           TABLE
LX01                           TABLE
SALGRADE                       TABLE
SYS_TEMP_FBT                   TABLE
TEST                           TABLE

8 rows selected.


-------------利用exp/imp 传输表空间

1、建立表空间

17:08:41 SQL> col file_name for a50                                                                                                      
17:08:48 SQL> select file_id,file_name,tablespace_name from dba_data_files                                                               
17:08:57   2  ;                                                                                                                         

   FILE_ID FILE_NAME                                          TABLESPACE_NAME
---------- -------------------------------------------------- ------------------------------
         4 /u01/app/oracle/oradata/ocmtest1/users01.dbf       USERS
         3 /u01/app/oracle/oradata/ocmtest1/sysaux01.dbf      SYSAUX
         2 /u01/app/oracle/oradata/ocmtest1/undotbs01.dbf     UNDOTBS1
         1 /u01/app/oracle/oradata/ocmtest1/system01.dbf      SYSTEM
         5 /u01/app/oracle/oradata/ocmtest1/example01.dbf     EXAMPLE

17:08:58 SQL> create tablespace test                                                                                                     
17:09:05   2   datafile '/u01/app/oracle/oradata/ocmtest1/test01.dbf' size 100m;                                                        

Tablespace created.

17:09:18 SQL> conn scott/tiger                                                                                                           
Connected.
17:09:23 SQL>

17:09:29 SQL> create table t01 (id int) tablespace test;                                                                                

Table created.

17:09:33 SQL> insert into t01 values (1);                                                                                               

1 row created.

17:09:38 SQL> insert into t01 values (2);                                                                                               

1 row created.

17:09:39 SQL> insert into t01 values (3);                                                                                               

1 row created.

17:09:40 SQL> commit;                                                                                                                   

Commit complete.

17:09:41 SQL> conn /as sysdba                                                                                                            
Connected.
17:10:12 SQL> 
17:10:12 SQL> alter tablespace test read only;                                                                                          

Tablespace altered.

2、查看表空间是否自包含

17:10:20 SQL> exec sys.dbms_tts.transport_set_check('test',true);                                                                       

PL/SQL procedure successfully completed.

17:11:37 SQL> select * from sys.transport_set_violations;                                                                               

no rows selected

17:11:43 SQL>


将传输的tablespace 设置成 read  only 模式。
15:37:37 SQL> alter tablespace test read only;

Tablespace altered.

3、导出可传输表空间(必须以sysdba权限)

[oracle@ocmtest1 ~]$ exp userid=\'sys/oracle as sysdba\' file=test.dmp log=test.log transport_tablespace=y tablespaces=test

Export: Release 10.2.0.1.0 - Production on Mon Aug 15 17:13:24 2011

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


Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
Export done in US7ASCII character set and AL16UTF16 NCHAR character set
server uses WE8ISO8859P1 character set (possible charset conversion)
Note: table data (rows) will not be exported
About to export transportable tablespace metadata...
For tablespace TEST ...
. exporting cluster definitions
. exporting table definitions
. . exporting table                            T01
. exporting referential integrity constraints
. exporting triggers
. end transportable tablespace metadata export
Export terminated successfully without warnings.
[oracle@ocmtest1 ~]$

4、启动另外一个数据库

[oracle@ocmtest1 ~]$ export ORACLE_SID=catdb

[oracle@ocmtest1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Aug 15 17:15:25 2011

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

Connected to an idle instance.

17:15:25 SQL> 
17:15:25 SQL> startup                                                                                     
ORACLE instance started.

Total System Global Area  167772160 bytes
Fixed Size                  1218316 bytes
Variable Size              75499764 bytes
Database Buffers           88080384 bytes
Redo Buffers                2973696 bytes
Database mounted.
Database opened.
17:15:41 SQL> select tablespace_name from dba_tablespaces;                                               

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
CATTBS

7 rows selected.

5、在目标数据库下做imp操作,导入表空间

[oracle@ocmtest1 ~]$ cp /u01/app/oracle/oradata/ocmtest1/test01.dbf /u01/app/oracle/oradata/catdb/
  
-------------将表空间数据文件从源数据库拷贝到目标数据库下

[oracle@ocmtest1 ~]$ imp userid=\'sys/oracle as sysdba\' tablespaces=test     file=test.dmp transport_tablespace=y datafiles=/u01/app/oracle/oradata/catdb/test01.dbf

Import: Release 10.2.0.1.0 - Production on Mon Aug 15 17:17:23 2011

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


Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

Export file created by EXPORT:V10.02.01 via conventional path
About to import transportable tablespace(s) metadata...
import done in US7ASCII character set and AL16UTF16 NCHAR character set
import server uses WE8ISO8859P1 character set (possible charset conversion)
. importing SYS's objects into SYS
. importing SYS's objects into SYS
. importing SCOTT's objects into SCOTT
. . importing table                          "T01"
. importing SYS's objects into SYS
Import terminated successfully without warnings.

6、验证

[oracle@ocmtest1 ~]$

17:16:53 SQL> select tablespace_name from dba_tablespaces;                                               

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
CATTBS
TEST

8 rows selected.
17:17:28 SQL> select * from scott.t01;                                                                   

        ID
----------
         1
         2
         3

17:17:33 SQL>

17:28:03 SQL> select tablespace_name,status from dba_tablespaces;                                                                       

TABLESPACE_NAME                STATUS
------------------------------ ---------
SYSTEM                         ONLINE
UNDOTBS1                       ONLINE
SYSAUX                         ONLINE
TEMP                           ONLINE
USERS                          ONLINE
EXAMPLE                        ONLINE
CATTBS                         ONLINE
TEST                           READ ONLY

8 rows selected.

17:28:12 SQL> alter tablespace test read write;                                                                                         

Tablespace altered.


17:28:20 SQL>


expdp/impdp

1、建立目录

03:51:20 SQL> create directory dump_dir as  '/home/oracle/data';

Directory created.

2、给用户使用目录授权

03:52:15 SQL> grant read,write on directory  dump_dir to public;

Grant succeeded.


03:52:56 SQL> select * from dba_directories;

OWNER                          DIRECTORY_NAME
------------------------------ ------------------------------
DIRECTORY_PATH
------------------------------------------------------------------------------------------------------------------------------------------------------
SYS                            DATA_PUMP_DIR
/u01/app/oracle/product/10.2.0/db_1/rdbms/log/

SYS                            DUMP_DIR
/home/oracle/data


03:53:06 SQL> !

3、导出表
[oracle@RH4 ~]$ expdp -help

Export: Release 10.2.0.1.0 - Production on Sunday, 22 April, 2012 3:53:42

Copyright (c) 2003, 2005, Oracle.  All rights reserved.


The Data Pump export utility provides a mechanism for transferring data objects
between Oracle databases. The utility is invoked with the following command:

   Example: expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp

You can control how Export runs by entering the 'expdp' command followed
by various parameters. To specify parameters, you use keywords:

   Format:  expdp KEYWORD=value or KEYWORD=(value1,value2,...,valueN)
   Example: expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=scott
               or TABLES=(T1:P1,T1:P2), if T1 is partitioned table

USERID must be the first parameter on the command line.

Keyword               Description (Default)
------------------------------------------------------------------------------
ATTACH                Attach to existing job, e.g. ATTACH [=job name].
COMPRESSION           Reduce size of dumpfile contents where valid
                      keyword values are: (METADATA_ONLY) and NONE.
CONTENT               Specifies data to unload where the valid keywords are:
                      (ALL), DATA_ONLY, and METADATA_ONLY.
DIRECTORY             Directory object to be used for dumpfiles and logfiles.
DUMPFILE              List of destination dump files (expdat.dmp),
                      e.g. DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp.
ENCRYPTION_PASSWORD   Password key for creating encrypted column data.
ESTIMATE              Calculate job estimates where the valid keywords are:
                      (BLOCKS) and STATISTICS.
ESTIMATE_ONLY         Calculate job estimates without performing the export.
EXCLUDE               Exclude specific object types, e.g. EXCLUDE=TABLE:EMP.
FILESIZE              Specify the size of each dumpfile in units of bytes.
FLASHBACK_SCN         SCN used to set session snapshot back to.
FLASHBACK_TIME        Time used to get the SCN closest to the specified time.
FULL                  Export entire database (N).
HELP                  Display Help messages (N).
INCLUDE               Include specific object types, e.g. INCLUDE=TABLE_DATA.
JOB_NAME              Name of export job to create.
LOGFILE               Log file name (export.log).
NETWORK_LINK          Name of remote database link to the source system.
NOLOGFILE             Do not write logfile (N).
PARALLEL              Change the number of active workers for current job.
PARFILE               Specify parameter file.
QUERY                 Predicate clause used to export a subset of a table.
SAMPLE                Percentage of data to be exported; 
SCHEMAS               List of schemas to export (login schema).
STATUS                Frequency (secs) job status is to be monitored where
                      the default (0) will show new status when available.
TABLES                Identifies a list of tables to export - one schema only.
TABLESPACES           Identifies a list of tablespaces to export.
TRANSPORT_FULL_CHECK  Verify storage segments of all tables (N).
TRANSPORT_TABLESPACES List of tablespaces from which metadata will be unloaded.
VERSION               Version of objects to export where valid keywords are:
                      (COMPATIBLE), LATEST, or any valid database version.

The following commands are valid while in interactive mode.
Note: abbreviations are allowed

Command               Description
------------------------------------------------------------------------------
ADD_FILE              Add dumpfile to dumpfile set.
CONTINUE_CLIENT       Return to logging mode. Job will be re-started if idle.
EXIT_CLIENT           Quit client session and leave job running.
FILESIZE              Default filesize (bytes) for subsequent ADD_FILE commands.
HELP                  Summarize interactive commands.
KILL_JOB              Detach and delete job.
PARALLEL              Change the number of active workers for current job.
                      PARALLEL=.
START_JOB             Start/resume current job.
STATUS                Frequency (secs) job status is to be monitored where
                      the default (0) will show new status when available.
                      STATUS[=interval]
STOP_JOB              Orderly shutdown of job execution and exits the client.
                      STOP_JOB=IMMEDIATE performs an immediate shutdown of the
                      Data Pump job.

[oracle@RH4 ~]$ expdp scott/tiger directory=dump_dir dumpfile=emp_dept_edp.dmp tables=(emp,dept)

Export: Release 10.2.0.1.0 - Production on Sunday, 22 April, 2012 3:55:10

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
Starting "SCOTT"."SYS_EXPORT_TABLE_01":  scott/******** directory=dump_dir dumpfile=emp_dept_edp.dmp tables=(emp,dept) 
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 128 KB
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type TABLE_EXPORT/TABLE/AUDIT_OBJ
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . exported "SCOTT"."DEPT"                              5.656 KB       4 rows
. . exported "SCOTT"."EMP"                               7.828 KB      14 rows
Master table "SCOTT"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SCOTT.SYS_EXPORT_TABLE_01 is:
  /home/oracle/data/emp_dept_edp.dmp
Job "SCOTT"."SYS_EXPORT_TABLE_01" successfully completed at 03:55:34


4、导入数据到表
[oracle@RH4 data]$ impdp -help

Import: Release 10.2.0.1.0 - Production on Sunday, 22 April, 2012 3:57:10

Copyright (c) 2003, 2005, Oracle.  All rights reserved.


The Data Pump Import utility provides a mechanism for transferring data objects
between Oracle databases. The utility is invoked with the following command:

     Example: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp

You can control how Import runs by entering the 'impdp' command followed
by various parameters. To specify parameters, you use keywords:

     Format:  impdp KEYWORD=value or KEYWORD=(value1,value2,...,valueN)
     Example: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp

USERID must be the first parameter on the command line.

Keyword               Description (Default)
------------------------------------------------------------------------------
ATTACH                Attach to existing job, e.g. ATTACH [=job name].
CONTENT               Specifies data to load where the valid keywords are:
                      (ALL), DATA_ONLY, and METADATA_ONLY.
DIRECTORY             Directory object to be used for dump, log, and sql files.
DUMPFILE              List of dumpfiles to import from (expdat.dmp),
                      e.g. DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp.
ENCRYPTION_PASSWORD   Password key for accessing encrypted column data.
                      This parameter is not valid for network import jobs.
ESTIMATE              Calculate job estimates where the valid keywords are:
                      (BLOCKS) and STATISTICS.
EXCLUDE               Exclude specific object types, e.g. EXCLUDE=TABLE:EMP.
FLASHBACK_SCN         SCN used to set session snapshot back to.
FLASHBACK_TIME        Time used to get the SCN closest to the specified time.
FULL                  Import everything from source (Y).
HELP                  Display help messages (N).
INCLUDE               Include specific object types, e.g. INCLUDE=TABLE_DATA.
JOB_NAME              Name of import job to create.
LOGFILE               Log file name (import.log).
NETWORK_LINK          Name of remote database link to the source system.
NOLOGFILE             Do not write logfile.
PARALLEL              Change the number of active workers for current job.
PARFILE               Specify parameter file.
QUERY                 Predicate clause used to import a subset of a table.
REMAP_DATAFILE        Redefine datafile references in all DDL statements.
REMAP_SCHEMA          Objects from one schema are loaded into another schema.
REMAP_TABLESPACE      Tablespace object are remapped to another tablespace.
REUSE_DATAFILES       Tablespace will be initialized if it already exists (N).
SCHEMAS               List of schemas to import.
SKIP_UNUSABLE_INDEXES Skip indexes that were set to the Index Unusable state.
SQLFILE               Write all the SQL DDL to a specified file.
STATUS                Frequency (secs) job status is to be monitored where
                      the default (0) will show new status when available.
STREAMS_CONFIGURATION Enable the loading of Streams metadata
TABLE_EXISTS_ACTION   Action to take if imported object already exists.
                      Valid keywords: (SKIP), APPEND, REPLACE and TRUNCATE.
TABLES                Identifies a list of tables to import.
TABLESPACES           Identifies a list of tablespaces to import.
TRANSFORM             Metadata transform to apply to applicable objects.
                      Valid transform keywords: SEGMENT_ATTRIBUTES, STORAGE
                      OID, and PCTSPACE.
TRANSPORT_DATAFILES   List of datafiles to be imported by transportable mode.
TRANSPORT_FULL_CHECK  Verify storage segments of all tables (N).
TRANSPORT_TABLESPACES List of tablespaces from which metadata will be loaded.
                      Only valid in NETWORK_LINK mode import operations.
VERSION               Version of objects to export where valid keywords are:
                      (COMPATIBLE), LATEST, or any valid database version.
                      Only valid for NETWORK_LINK and SQLFILE.

The following commands are valid while in interactive mode.
Note: abbreviations are allowed

Command               Description (Default)
------------------------------------------------------------------------------
CONTINUE_CLIENT       Return to logging mode. Job will be re-started if idle.
EXIT_CLIENT           Quit client session and leave job running.
HELP                  Summarize interactive commands.
KILL_JOB              Detach and delete job.
PARALLEL              Change the number of active workers for current job.
                      PARALLEL=.
START_JOB             Start/resume current job.
                      START_JOB=SKIP_CURRENT will start the job after skipping
                      any action which was in progress when job was stopped. 
STATUS                Frequency (secs) job status is to be monitored where
                      the default (0) will show new status when available.
                      STATUS[=interval]
STOP_JOB              Orderly shutdown of job execution and exits the client.
                      STOP_JOB=IMMEDIATE performs an immediate shutdown of the
                      Data Pump job.

[oracle@RH4 ~]$

03:56:34 SQL> conn scott/tiger
Connected.
03:56:39 SQL> drop table emp purge;

Table dropped.

03:56:48 SQL> drop table dept purge;

Table dropped.

                                                                                                                      
CONTENT               Specifies data to unload where the valid keywords are:
                      (ALL), DATA_ONLY, and METADATA_ONLY.                                           

[oracle@RH4 data]$ export ORACLE_SID=cuug
[oracle@RH4 data]$ impdp scott/tiger directory=dump_dir dumpfile=emp_dept_edp.dmp tables=dept
[oracle@RH4 data]$impdp scott/tiger directory=dmp_dir dumpfile=emp1.dmp tables=emp1 CONTENT=data_only

Import: Release 10.2.0.1.0 - Production on Sunday, 22 April, 2012 3:59:35

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
Master table "SCOTT"."SYS_IMPORT_TABLE_01" successfully loaded/unloaded
Starting "SCOTT"."SYS_IMPORT_TABLE_01":  scott/******** directory=dump_dir dumpfile=emp_dept_edp.dmp tables=dept 
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
. . imported "SCOTT"."DEPT"                              5.656 KB       4 rows
Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Job "SCOTT"."SYS_IMPORT_TABLE_01" successfully completed at 03:59:43

[oracle@RH4 data]$


content   metadata_only 只导入表结构(创建空表,建立索引、约束等)

01:59:33 SQL> drop table emp purge;

Table dropped.

01:59:43 SQL> drop table dept purge;

Table dropped.

[oracle@RH54 data]$ impdp scott/tiger directory=dumpdir dumpfile=emp_dept.dmp tables=dept content=metadata_only
 
Import: Release 10.2.0.1.0 - Production on Tuesday, 19 June, 2012 2:00:17

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
Master table "SCOTT"."SYS_IMPORT_TABLE_01" successfully loaded/unloaded
Starting "SCOTT"."SYS_IMPORT_TABLE_01":  scott/******** directory=dumpdir dumpfile=emp_dept.dmp tables=dept content=metadata_only 
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Job "SCOTT"."SYS_IMPORT_TABLE_01" successfully completed at 02:00:28


01:59:48 SQL> select * from dept;

no rows selected

02:00:42 SQL> select * from tab;

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
SYS_TEMP_FBT                   TABLE
BONUS                          TABLE
DEPT1                          TABLE
DEPT2                          TABLE
EMP1                           TABLE
EMP2                           TABLE
EXCEPTIONS                     TABLE
SALGRADE                       TABLE
DEPT                           TABLE

9 rows selected.

02:00:57 SQL> select index_name,table_name from user_indexes
02:01:18   2   where table_name='DEPT';

INDEX_NAME                     TABLE_NAME
------------------------------ ------------------------------
PK_DEPT                        DEPT

02:01:29 SQL> SELECT constraint_name,table_name from user_constraints
02:01:57   2   where table_name='DEPT';

CONSTRAINT_NAME                TABLE_NAME
------------------------------ ------------------------------
PK_DEPT                        DEPT

[oracle@RH54 data]$ impdp scott/tiger directory=dumpdir dumpfile=emp_dept.dmp tables=dept content=data_only

Import: Release 10.2.0.1.0 - Production on Tuesday, 19 June, 2012 2:02:17

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
Master table "SCOTT"."SYS_IMPORT_TABLE_01" successfully loaded/unloaded
Starting "SCOTT"."SYS_IMPORT_TABLE_01":  scott/******** directory=dumpdir dumpfile=emp_dept.dmp tables=dept content=data_only 
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
. . imported "SCOTT"."DEPT"                              5.656 KB       4 rows
Job "SCOTT"."SYS_IMPORT_TABLE_01" successfully completed at 02:02:28

默认 content 为 all (包括metadata_only 和data_only)

[oracle@RH54 data]$ impdp scott/tiger directory=dumpdir dumpfile=emp_dept.dmp tables=emp

Import: Release 10.2.0.1.0 - Production on Tuesday, 19 June, 2012 2:02:39

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
Master table "SCOTT"."SYS_IMPORT_TABLE_01" successfully loaded/unloaded
Starting "SCOTT"."SYS_IMPORT_TABLE_01":  scott/******** directory=dumpdir dumpfile=emp_dept.dmp tables=emp 
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
. . imported "SCOTT"."EMP"                               7.843 KB      14 rows
Processing object type TABLE_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Job "SCOTT"."SYS_IMPORT_TABLE_01" successfully completed at 02:02:52

[oracle@RH54 data]$


02:02:03 SQL> select * from emp;

     EMPNO ENAME      JOB              MGR HIREDATE                   SAL       COMM     DEPTNO
---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 1980-12-17 00:00:00        800       1000         20
      7499 ALLEN      SALESMAN        7698 1981-02-20 00:00:00       1600       1000         30
      7521 WARD       SALESMAN        7698 1981-02-22 00:00:00       1250       1000         30
      7566 JONES      MANAGER         7839 1981-04-02 00:00:00       2975       1000         20
      7654 MARTIN     SALESMAN        7698 1981-09-28 00:00:00       1250       1000         30
      7698 BLAKE      MANAGER         7839 1981-05-01 00:00:00       2850       1000         30
      7782 CLARK      MANAGER         7839 1981-06-09 00:00:00       2450       1000         10
      7788 SCOTT      ANALYST         7566 1987-04-19 00:00:00       3000       1000         20
      7839 KING       PRESIDENT            1981-11-17 00:00:00       5000       1000         10
      7844 TURNER     SALESMAN        7698 1981-09-08 00:00:00       1500       1000         30
      7876 ADAMS      CLERK           7788 1987-05-23 00:00:00       1100       1000         20
      7900 JAMES      CLERK           7698 1981-12-03 00:00:00        950       1000         30
      7902 FORD       ANALYST         7566 1981-12-03 00:00:00       3000       1000         20
      7934 MILLER     CLERK           7782 1982-01-23 00:00:00       1300       1000         10

14 rows selected.

02:03:06 SQL>

-----expdp默认将导出表的元数据、数据、索引、约束、对象权限

----以下参数用于排除索引

[oracle@RH54 data]$ expdp scott/tiger dumpfile=scottdp.dmp logfile=empdp.log directory=dmpdir tables=emp EXCLUDE=INDEX:"IN('PK_EMP')"

Export: Release 10.2.0.1.0 - Production on Wednesday, 18 July, 2012 3:51:32

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
Starting "SCOTT"."SYS_EXPORT_TABLE_01":  scott/******** dumpfile=scottdp.dmp logfile=empdp.log directory=dmpdir tables=emp EXCLUDE=INDEX:IN('PK_EMP') 
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 64 KB
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . exported "SCOTT"."EMP"                               7.820 KB      14 rows
Master table "SCOTT"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SCOTT.SYS_EXPORT_TABLE_01 is:
  /home/oracle/data/scottdp.dmp
Job "SCOTT"."SYS_EXPORT_TABLE_01" successfully completed at 03:51:48


----在导出schema时,排除table

[oracle@RH54 data]$ expdp scott/tiger dumpfile=scottdp.dmp logfile=empdp.log directory=dmpdir schemaS=scott exclude=table:\"in\( \'EMP\',\'DEPT\' \)\"

Export: Release 10.2.0.1.0 - Production on Wednesday, 18 July, 2012 3:54:28

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
FLASHBACK automatically enabled to preserve database integrity.
Starting "SCOTT"."SYS_EXPORT_SCHEMA_01":  scott/******** dumpfile=scottdp.dmp logfile=empdp.log directory=dmpdir schemaS=scott exclude=table:"in( 'EMP','DEPT' )" 
Estimate in progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 320 KB
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/COMMENT
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . exported "SCOTT"."DEPT1"                              5.75 KB       8 rows
. . exported "SCOTT"."DEPT2"                             5.656 KB       4 rows
. . exported "SCOTT"."EMP1"                              7.859 KB      15 rows
. . exported "SCOTT"."EMP2"                              7.820 KB      14 rows
. . exported "SCOTT"."SALGRADE"                          5.585 KB       5 rows
. . exported "SCOTT"."BONUS"                                 0 KB       0 rows
Master table "SCOTT"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SCOTT.SYS_EXPORT_SCHEMA_01 is:
  /home/oracle/data/scottdp.dmp
Job "SCOTT"."SYS_EXPORT_SCHEMA_01" successfully completed at 03:55:01

[oracle@RH54 data]$

------排除单个table

[oracle@RH54 data]$ expdp scott/tiger dumpfile=scottdp.dmp logfile=empdp.log directory=dmpdir schemaS=scott exclude=table:"in('EMP')"

Export: Release 10.2.0.1.0 - Production on Wednesday, 18 July, 2012 3:57:01

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
FLASHBACK automatically enabled to preserve database integrity.
Starting "SCOTT"."SYS_EXPORT_SCHEMA_01":  scott/******** dumpfile=scottdp.dmp logfile=empdp.log directory=dmpdir schemaS=scott exclude=table:in('EMP') 
Estimate in progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 384 KB
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/COMMENT
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . exported "SCOTT"."DEPT"                              5.656 KB       4 rows
. . exported "SCOTT"."DEPT1"                              5.75 KB       8 rows
. . exported "SCOTT"."DEPT2"                             5.656 KB       4 rows
. . exported "SCOTT"."EMP1"                              7.859 KB      15 rows
. . exported "SCOTT"."EMP2"                              7.820 KB      14 rows
. . exported "SCOTT"."SALGRADE"                          5.585 KB       5 rows
. . exported "SCOTT"."BONUS"                                 0 KB       0 rows
Master table "SCOTT"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SCOTT.SYS_EXPORT_SCHEMA_01 is:
  /home/oracle/data/scottdp.dmp
Job "SCOTT"."SYS_EXPORT_SCHEMA_01" successfully completed at 03:57:28

[oracle@RH54 data]$

---------通过参数文件parfile ,做导出

[oracle@RH54 data]$ vi exl.par


userid=scott/tiger
directory=dmpdir
dumpfile=scottdp2.dmp
logfile=scott.log
exclude=table:"in('EMP','DEPT')"
~

[oracle@RH54 data]$ expdp parfile=exl.par

Export: Release 10.2.0.1.0 - Production on Wednesday, 18 July, 2012 4:01:21

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
FLASHBACK automatically enabled to preserve database integrity.
Starting "SCOTT"."SYS_EXPORT_SCHEMA_01":  parfile=exl.par 
Estimate in progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 320 KB
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/COMMENT
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . exported "SCOTT"."DEPT1"                              5.75 KB       8 rows
. . exported "SCOTT"."DEPT2"                             5.656 KB       4 rows
. . exported "SCOTT"."EMP1"                              7.859 KB      15 rows
. . exported "SCOTT"."EMP2"                              7.820 KB      14 rows
. . exported "SCOTT"."SALGRADE"                          5.585 KB       5 rows
. . exported "SCOTT"."BONUS"                                 0 KB       0 rows
Master table "SCOTT"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SCOTT.SYS_EXPORT_SCHEMA_01 is:
  /home/oracle/data/scottdp2.dmp
Job "SCOTT"."SYS_EXPORT_SCHEMA_01" successfully completed at 04:01:46

[oracle@RH54 data]$

-----impdp 导入时,默认为content=all ,将建立table 和导入数据,metadata_only 只导入元数据(即建立空表)

[oracle@RH54 data]$ impdp scott/tiger directory=dmpdir dumpfile=empdp.dmp logfile=empdp.log tables=emp content=metadata_only

Import: Release 10.2.0.1.0 - Production on Wednesday, 18 July, 2012 4:08:28

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
Master table "SCOTT"."SYS_IMPORT_TABLE_01" successfully loaded/unloaded
Starting "SCOTT"."SYS_IMPORT_TABLE_01":  scott/******** directory=dmpdir dumpfile=empdp.dmp logfile=empdp.log tables=emp content=metadata_only 
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Job "SCOTT"."SYS_IMPORT_TABLE_01" successfully completed at 04:08:40

-----data_only 只导入数据

[oracle@RH54 data]$ impdp scott/tiger directory=dmpdir dumpfile=empdp.dmp logfile=empdp.log tables=emp content=data_only

Import: Release 10.2.0.1.0 - Production on Wednesday, 18 July, 2012 4:09:05

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
Master table "SCOTT"."SYS_IMPORT_TABLE_01" successfully loaded/unloaded
Starting "SCOTT"."SYS_IMPORT_TABLE_01":  scott/******** directory=dmpdir dumpfile=empdp.dmp logfile=empdp.log tables=emp content=data_only 
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
. . imported "SCOTT"."EMP"                               7.820 KB      14 rows
Job "SCOTT"."SYS_IMPORT_TABLE_01" successfully completed at 04:09:18

[oracle@RH54 data]$


在同一台机器上,通过expdp/impdp 传输表空间


1、目标库 test3

TEST3 DATABASE:

02:12:52 SQL> col file_name for a50
02:12:59 SQL> select file_id,file_name,tablespace_name from dba_data_files;

   FILE_ID FILE_NAME                                          TABLESPACE_NAME
---------- -------------------------------------------------- ------------------------------
         1 /u01/app/oracle/oradata/test3/system01.dbf         SYSTEM
         4 /u01/app/oracle/oradata/test3/users01.dbf          USERS
         3 /u01/app/oracle/oradata/test3/sysaux01.dbf         SYSAUX
         2 /u01/app/oracle/oradata/test3/rtbs01.dbf           RTBS
         5 /u01/app/oracle/oradata/test3/users02.dbf          USERS
         6 /u01/app/oracle/oradata/test3/test1.dbf            TEST1
         7 /u01/app/oracle/oradata/test3/test2.dbf            TEST2
         9 /u01/app/oracle/oradata/test3/indx01.dbf           INDX

8 rows selected.

02:13:13 SQL>

02:17:48 SQL> conn tom/tom
Connected.
02:17:56 SQL> select * from user_sys_privs;

USERNAME                       PRIVILEGE                                ADM
------------------------------ ---------------------------------------- ---
TOM                            SELECT ANY TABLE                         NO
TOM                            CREATE SESSION                           NO
TOM                            UNLIMITED TABLESPACE                     NO

02:18:02 SQL>

02:18:02 SQL> select userenv('LANGUAGE') FROM DUAL;

USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.ZHS16GBK


02:19:59 SQL> create directory dumpdir as '/home/oracle/data';

Directory created.

02:20:34 SQL>


2、源库 test2

TEST2 DATABASE:


-------检测tablespace 的自包含

02:13:31 SQL> col file_name for a50
02:13:33 SQL> select file_id,file_name,tablespace_name from dba_data_files;

   FILE_ID FILE_NAME                                          TABLESPACE_NAME
---------- -------------------------------------------------- ------------------------------
         1 /u01/app/oracle/oradata/test2/system01.dbf         SYSTEM
        10 /u01/app/oracle/oradata/test2/indx01.dbf           INDX
         8 /u01/app/oracle/oradata/test2/smallundo01.dbf      SMALLUNDO
         6 /u01/app/oracle/oradata/test2/tbs1.dbf             TBS1
         5 /u01/app/oracle/oradata/test2/test1.dbf            TEST1
         4 /u01/app/oracle/oradata/test2/users01.dbf          USERS
         3 /u01/app/oracle/oradata/test2/sysaux01.dbf         SYSAUX
         2 /u01/app/oracle/oradata/test2/rbs01.dbf            RTBS
         7 /u01/app/oracle/oradata/test2/rmantbs1.dbf         RMANTBS
         9 /u01/app/oracle/oradata/test2/test2.dbf            TEST2

10 rows selected.

02:13:46 SQL> EXECUTE DBMS_TTS.TRANSPORT_SET_CHECK('tbs1',true);

PL/SQL procedure successfully completed.

DBMS_TTS.TRANSPORT_SET_CHECK (
   ts_list          IN CLOB, 
   incl_constraints IN BOOLEAN DEFAULT FALSE,  -- 是否包含约束
   full_check       IN BOOLEAN DEFAULT FALSE); -- false时 检查是否依赖其他表空间, true 反向也检查

02:15:55 SQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS;

no rows selected

02:16:07 SQL> select table_name ,tablespace_name ,owner from dba_tables
02:16:27   2   where tablespace_name='TBS1';

TABLE_NAME                     TABLESPACE_NAME                OWNER
------------------------------ ------------------------------ ------------------------------
TB1                            TBS1                           SCOTT
DEPT2                          TBS1                           SCOTT

02:16:36 SQL>

-------检测数据库的字符集(源库与目标库的字符集必须相同)

02:18:02 SQL> select userenv('LANGUAGE') FROM DUAL;

USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.ZHS16GBK


02:19:59 SQL> create directory dumpdir as '/home/oracle/data';

Directory created.

02:20:34 SQL>

--------通过expdp 导出表空间元数据

[oracle@RH54 data]$ expdp system/oracle directory=dumpdir dumpfile=tbs1.dmp logfile=tbs.log TRANSPORT_TABLESPACES =tbs1

Export: Release 10.2.0.1.0 - Production on Tuesday, 19 June, 2012 2:23:01

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
Starting "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01":  system/******** directory=dumpdir dumpfile=tbs1.dmp logfile=tbs.log TRANSPORT_TABLESPACES =tbs1 
Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
Processing object type TRANSPORTABLE_EXPORT/TABLE
Processing object type TRANSPORTABLE_EXPORT/TABLE_STATISTICS
Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
Master table "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SYSTEM.SYS_EXPORT_TRANSPORTABLE_01 is:
  /home/oracle/data/tbs1.dmp
Job "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" successfully completed at 02:23:24

[oracle@RH54 data]$ pwd
/home/oracle/data
[oracle@RH54 data]$ ls
tbs1.dmp  tbs.log
[oracle@RH54 data]$

------将源库传输表空间的datafile 传送到另一个库上

test3 database 和 test2 database 在同一台机器上

[oracle@RH54 data]$ cp /u01/app/oracle/oradata/test2/tbs1.dbf /u01/app/oracle/oradata/test3/


3、在目标库上用impdp导入表空间(并且将表空间上的对象的schema 转换成另外一个schema ,如scott的对象转换到tom)

[oracle@RH54 data]$ impdp system/oracle directory=dumpdir dumpfile=tbs1.dmp TRANSPORT_DATAFILES='/u01/app/oracle/oradata/test3/tbs1.dbf' REMAP_SCHEMA=\(scott:tom\)

Import: Release 10.2.0.1.0 - Production on Tuesday, 19 June, 2012 2:32:56

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
Master table "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully loaded/unloaded
Starting "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01":  system/******** directory=dumpdir dumpfile=tbs1.dmp TRANSPORT_DATAFILES=/u01/app/oracle/oradata/test3/tbs1.dbf REMAP_SCHEMA=(scott:tom) 
Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
Processing object type TRANSPORTABLE_EXPORT/TABLE
Processing object type TRANSPORTABLE_EXPORT/TABLE_STATISTICS
Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
Job "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully completed at 02:33:17


4、验证

sqlplus '/as sysdba'

SQL*Plus: Release 10.2.0.1.0 - Production on Tue Jun 19 02:33:48 2012

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


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

02:33:49 SQL> col file_name for a50
02:33:55 SQL> select file_id,file_name,tablespace_name from dba_data_files;

   FILE_ID FILE_NAME                                          TABLESPACE_NAME
---------- -------------------------------------------------- ------------------------------
         1 /u01/app/oracle/oradata/test3/system01.dbf         SYSTEM
         4 /u01/app/oracle/oradata/test3/users01.dbf          USERS
         3 /u01/app/oracle/oradata/test3/sysaux01.dbf         SYSAUX
         2 /u01/app/oracle/oradata/test3/rtbs01.dbf           RTBS
         5 /u01/app/oracle/oradata/test3/users02.dbf          USERS
         6 /u01/app/oracle/oradata/test3/test1.dbf            TEST1
         7 /u01/app/oracle/oradata/test3/test2.dbf            TEST2
         8 /u01/app/oracle/oradata/test3/tbs1.dbf             TBS1
         9 /u01/app/oracle/oradata/test3/indx01.dbf           INDX

9 rows selected.

02:34:15 SQL> select owner,table_name,tablespace_name from dba_tables
02:34:35   2   where tablespace_name='TBS1';

OWNER                          TABLE_NAME                     TABLESPACE_NAME
------------------------------ ------------------------------ ------------------------------
TOM                            DEPT2                          TBS1
TOM                            TB1                            TBS1

02:34:48 SQL> SELECT tablespace_name ,status,contents from dba_tablespaces
02:35:24   2   where tablespace_name='TBS1';

TABLESPACE_NAME                STATUS    CONTENTS
------------------------------ --------- ---------
TBS1                           READ ONLY PERMANENT

02:35:35 SQL> ALTER TABLESPACE TBS1 READ WRITE;

Tablespace altered.

02:35:50 SQL>

-------在源库上

02:36:03 SQL> ALTER TABLESPACE TBS1 READ WRITE;

Tablespace altered.


破坏数据块
dd if=/dev/zero of=/oradata/back_prod/users02.dbf bs=8192 skip=19 count=2

数据块损坏的检查与恢复
dbv file=/oradata/back_prod/users02.dbf blocksize=8192 feedback=100


创建检查表
  1  begin
  2     dbms_repair.admin_tables(
  3             TABLE_NAME => 'REPAIR_LIST',
  4             TABLE_TYPE => dbms_repair.repair_table,
  5             ACTION => dbms_repair.create_action,
  6             TABLESPACE => 'SYSAUX');
  7* end;
SYS>/

执行检查
  1  begin
  2   dbms_repair.check_object(
  3   SCHEMA_NAME => 'SCOTT',
  4   OBJECT_NAME => 'EMP',
  5   OBJECT_TYPE => dbms_repair.table_object,
  6   REPAIR_TABLE_NAME => 'REPAIR_LIST',
  7   CORRUPT_COUNT => :v_count);
  8* end;
SYS>

恢复方式
RMAN> blockrecover datafile 8 block 20;

请使用浏览器的分享功能分享到微信等