Oracle备份恢复五(数据泵)

Oracle备份恢复五(数据泵)

    平台: redhat linux as5,oracle10g
    Oracle10g 引入了最新的数据泵 (Data Dump) 技术 , 使得 DBA 或应用开发人员可以将数据库的元数据库和数据快速移动到别一个 Oracle 数据库中 , 因为它可以导出数据库 ( 表空间等 ), 所以也叫逻辑备份 , 数据泵导出导入命今行选项非常多 , 大家可以到联机文档查看各个选项的用法 ., 本文详细介绍最常用的导出导入数据库表空间 , 然后介绍如何导入导出整个数据库及数据文件等

表空间

导出表空间
先准备一个表空间 , 并建表
SQL> conn y /123
SQL> create tablespace test1 datafile '/home/oracle/oracle/oradata/db2/test1.dbf' size 10M;
SQL> create table t est1 (i number) tablespace test1 ;
SQL> insert into t est1 values(10);
SQL> commit;
SQL> select * from t est1 ;
         I
---------------------
        10
建立 dumpdir 目录 , 并给用户 y 赋权
[oracle@oracle]# mkdir /dumpdir
SQL> create directory dumpdir as '/rman';
SQL> conn sys as sysdba
SQL> grant read,write on directory dumpdir to y ;
SQL> grant dba to y ;
SQL> conn y /123
分析表 test1 是否满足导出条件
SQL> alter tablespace test1 read only;
Tablespace altered.
SQL> exec sys.dbms_tts.transport_set_check('test1',true);
PL/SQL procedure successfully completed.
SQL> select * from sys.transport_set_violations;
no rows selected
# 可见没有不满足的数据
导出表空间
SQL> ! expdp directory=dumpdir dumpfile=tbs.dmp transport_tablespaces=test1
Username: sys as sysdba
Password:
Export: Release 10.2.0.4.0 - Production on Saturday, 13 June, 2009 1:58:13
Copyright (c) 2003, 2007, Oracle.  All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Starting "Y"."SYS_EXPORT_TABLESPACE_01":  y/******** directory=dumpdir dumpfile=ttbs.dmp tablespaces=t
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/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/COMMENT
. . exported "Y"."T"                                     4.906 KB       1 rows
Master table "Y"."SYS_EXPORT_TABLESPACE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for Y.SYS_EXPORT_TABLESPACE_01 is:
  / dumpdir /tbs.dmp
Job "Y"."SYS_EXPORT_TABLESPACE_01" successfully completed at 01:58:42
没有报错 , 已成功导出表空间 test1

2.导入表空间

    现在把刚才导出的表空间导入到别一个数据库 (2)
    在数据库 (2) dumpdir 目录 , 把库 1 导出的 tbs.dmp 复制到 dumpdir 同时把库 1 的数据文件 test1.dbf 复制到库 2 /home/oracle/oracle/oradata/db2/
# 2 IP 192.168.1.2
[oracle@oracle22] $ mkdir /dumpdir
[oracle@oracle11] $ scp /dumpdir/tbs.dmp [email protected]:/dumpdir/
[oracle@oracle11] $ scp /home/oracle/oracle/oradata/test1.dbf
[email protected]:/home/oracle/oracle/oradata/db2/
开始导入 ( 以下在库 2 操作 )
SQL> ! impdp directory=dumpdir dumpfile=tbs.dmp transport_datafiles= '/home/oracle/oracle/oradata/db2/test1.dbf'
Username: sys as sysdba
Password:
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORA-31655: no data or metadata objects selected for job
Master table "SYS"."SYS_IMPORT_TABLESPACE_01" successfully loaded/unloaded
Starting "SYS"."SYS_IMPORT_TABLESPACE_01":  sys/******** AS SYSDBA directory=dumpdir dumpfile=ttbs.dmp tablespaces=tt
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Job "SYS"."SYS_IMPORT_TABLESPACE_01" successfully completed at 04:53:23
导入成功 , 但这时表空间为 offline 状态 ,
现在把表空间 online 就可以查到表 test1 的数据了 , 如下 :
SQL> select tablespace_name,status from dba_tablespaces where tablespace_name='TEST' ;
TABLESPACE_NAME                STATUS
------------------------------ ---------
SYSTEM                         ONLINE
TEST1                            OFFLINE
把表空间 online 并查看 test1
SQL> alter tablespace test1 online;
SQL> alter tablespace test1 read write;
SQL> select * from test1;
         I
-----------------------
        10
OK , 成功把表空间 test1 从库 1 导入到库 2

其它导入导出

1.导出
expdp directory=dumpdir dumpfile=full.dmp full=y
expdp directory=dumpdir dumpfile=tbs.dmp tablespaces=test1,test2
expdp directory=dumpdir dumpfile=table.dmp tables=test1,test2
expdp directory=dumpdir dumpfile= schma .dmp schemas=test1,test2
2.导入
impdp directory=dumpdir dumpfile=full.dmp full=y
impdp directory=dumpdir dumpfile=tbs.dmp transport_datafiles='/home/oracle/oralce/oradata/db2/test1.dbf', '/home/oracle/oralce/oradata/db2/test2.dbf'
impdp directory=dumpdir dumpfile=table.dmp tables=test1,test2
impdp directory=dumpdir dumpfile=schma.dump schemas=test1,test2

注意事项

    导入导出时注意如下几点
    1. 源数据库和目标数据库要有相同的字符集
    2. 名称不能相同 ( 导库时库名不能相同 , 导表空间时表空间名不能相同等 )
    3. 不能搬移 system 表空间和有 sys 用户对象的表空间
    4. 要在不同 OS 上搬移表空间,要保证 compatible 设置为 10.0 以上

你可能感兴趣的:(oracle,备份,恢复,数据泵,休闲)