代码改变世界

oracle 10g 数据泵导入导出

2012-04-26 15:49  java环境变量  阅读(375)  评论(0编辑  收藏  举报

                                        数据泵导入导出

---------------------------------------------------------------------
*********************************************************************
 第一部分:数据泵导入导出概述
*********************************************************************
---------------------------------------------------------------------

----------------------------
--1.数据泵导入导出简单介绍
----------------------------


oracle 10g中数据泵技术是新技术,和SQL*LOADER功能有区别,前者主要用来
将移入或移入到一个或多个表中。而oracle 10g中数据泵主要用来导出或
导入整个模式甚至整个数据库、或者某个模式下全部表、一个表;


oracle 10g中数据泵技术用来替代先前版本使用的导入/导出实用程序,
速度比原来在单线程情况下预计快15到40倍。但是新的数据泵技术只能运行在oracle
服务器端并且只允许将数据导入到磁盘中,不支持将数据导出到磁带中。


oracle 10g中数据泵技术不建立完备备份,因为在导出文件中没有灾难发生时的最新数据,
即包括联机事务日志的内容。


oracle10g的数据泵技术由两个部分组成:
数据泵导出(data pump export)和数据泵导入(data pump inport).


Oracle10g的数据泵技术由三个部件组成:

dbms_datapump程序包:这个是驱动数据字典元数据装载和卸载的主要引擎,该驱动主要执行数据泵导出和
导入两个实用程序的工作。


dbms_metadata程序包:为提取并修改元数据。

命令客户机:

------------------------------------------------------------
--2.数据泵导入导出帮助信息
------------------------------------------------------------

C:\>impdp help=y

Import: Release 10.2.0.1.0 - Production on 星期四, 30 10月, 2008 17:04:50

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


数据泵导入实用程序提供了一种用于在 Oracle 数据库之间传输
数据对象的机制。该实用程序可以使用以下命令进行调用:

     示例: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp

您可以控制导入的运行方式。具体方法是: 在 'impdp' 命令后输入
各种参数。要指定各参数, 请使用关键字:

     格式:  impdp KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
     示例: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp

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

关键字               说明 (默认)
--------------------------------------------------------------------------
ATTACH                连接到现有作业, 例如 ATTACH [=作业名]。
CONTENT               指定要加载的数据, 其中有效关键字为:
                      (ALL), DATA_ONLY 和 METADATA_ONLY。
DIRECTORY             供转储文件, 日志文件和 sql 文件使用的目录对象。
DUMPFILE              要从 (expdat.dmp) 中导入的转储文件的列表,

 

C:\>expdp help=y

Export: Release 10.2.0.1.0 - Production on 星期四, 30 10月, 2008 17:05:36

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


数据泵导出实用程序提供了一种用于在 Oracle 数据库之间传输
数据对象的机制。该实用程序可以使用以下命令进行调用:

   示例: expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp

您可以控制导出的运行方式。具体方法是: 在 'expdp' 命令后输入
各种参数。要指定各参数, 请使用关键字:

   格式:  expdp KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
   示例: expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=scott


------------------------------------------------------------
--3.racle10g的数据泵技术默认的导出数据保存目录
------------------------------------------------------------


-- 3.1 默认目录

oracle 10g_R2默认新建一个目录对象在ORACLE_HOME\product\10.2.0\admin\orcl\dpdump(windows路径)下。
可以通过命令查看这个默认路径。


SQL> select * from dba_directories;

OWNER                          DIRECTORY_NAME                 DIRECTORY_PATH
------------------------------ ------------------------------ --------------------------------------------------------------
SYS                            ADMIN_DIR                      C:\ADE\aime_10.2_nt_push\oracle/md/admin
SYS                            DATA_PUMP_DIR                  E:\oracle\product\10.2.0\admin\orcl\dpdump\
SYS                            WORK_DIR                       C:\ADE\aime_10.2_nt_push\oracle/work
             

/*

在oracle10g中只有sys和system这样具备管理员权限的用户才能够实用这个默认目录。因此用户system和sys
可以启动一个数据泵导出作业而不需要指明目录名。但是在非授权用户能够实用数据泵导出或导入前,DBA必须
新建一个目录对象或授权实用现在具有的目录权限。除了DBA之外任何有权限create any directory权限的用户
都能够新建一个新的目录对象。


*/

 

-- 3.2 用户自定义目录

--案例1:用户自定义目录(即用户获得对应的权限和具有默认目录)

SQL> create user win identified by password quota 100M on users;

User created

SQL> grant create session to win;

Grant succeeded


SQL> create directory dup1 as 'e:\dp';    

Directory created

--e:\dp,这个dp目录需要我们用户新建。

SQL> grant read, write on directory dup1 to scott;

Grant succeeded

 

--案例2:如果数据库中没有为普通用户设置目录和对应的权限

SQL> create user win identified by password quota 100M on users;

用户已创建。

SQL> grant create session to scott;

授权成功。


--原因1:没有为用户指明具体目录,则用户使用默认目录

C:\>expdp scott/tiger

Export: Release 10.2.0.1.0 - Production on 星期四, 30 10月, 2008 18:00:49

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

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
ORA-39002: 操作无效
ORA-39070: 无法打开日志文件。
ORA-39145: 必须指定目录对象参数且不能为空

 

 

--原因2:为用户指明具体目录但用户不具备访问目录的权限


C:\>expdp scott/tiger  directory=dp1 dumpfile=dp1.dmp

Export: Release 10.2.0.1.0 - Production on 星期四, 30 10月, 2008 18:02:54

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

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
ORA-39002: 操作无效
ORA-39070: 无法打开日志文件。
ORA-39087: 目录名 DP1 无效

 

 

 

--案例3:新建目录并让用户获得目录权限方法


SQL> create directory dup1 as 'e:\dp';    

Directory created

--e:\dp,这个dp目录需要我们用户新建。

SQL> grant read, write on directory dup1 to scott;

Grant succeeded

 


C:\>expdp scott/tiger tables=t1 directory=dup1  dumpfile=1.dmp

Export: Release 10.2.0.1.0 - Production on 星期四, 30 10月, 2008 18:15:11

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

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
启动 "SCOTT"."SYS_EXPORT_TABLE_01":  scott/******** tables=t1 directory=dup1 du
pfile=1.bmp
正在使用 BLOCKS 方法进行估计...
处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的总估计: 64 KB
处理对象类型 TABLE_EXPORT/TABLE/TABLE
. . 导出了 "SCOTT"."T1"                                4.929 KB       1 行
已成功加载/卸载了主表 "SCOTT"."SYS_EXPORT_TABLE_01"
******************************************************************************
SCOTT.SYS_EXPORT_TABLE_01 的转储文件集为:
  E:\DP\1.BMP
作业 "SCOTT"."SYS_EXPORT_TABLE_01" 已于 18:15:21 成功完成

 

 

--案例4:新建目录并让用户获得目录权限方法-unix平台


SQL> create directory dup1 as 'e:\dp';    

Directory created

--e:\dp,这个dp目录需要我们用户新建。


SQL>export DATA_PUMP_DIR  DUP1

 

C:\>expdp scott/tiger tables=t1  dumpfile=1.dmp

Export: Release 10.2.0.1.0 - Production on 星期四, 30 10月, 2008 18:15:11

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

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
启动 "SCOTT"."SYS_EXPORT_TABLE_01":  scott/******** tables=t1 directory=dup1 du
pfile=1.bmp
正在使用 BLOCKS 方法进行估计...
处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的总估计: 64 KB
处理对象类型 TABLE_EXPORT/TABLE/TABLE
. . 导出了 "SCOTT"."T1"                                4.929 KB       1 行
已成功加载/卸载了主表 "SCOTT"."SYS_EXPORT_TABLE_01"
******************************************************************************
SCOTT.SYS_EXPORT_TABLE_01 的转储文件集为:
  E:\DP\1.BMP
作业 "SCOTT"."SYS_EXPORT_TABLE_01" 已于 18:15:21 成功完成


/*
如果使用数据泵时没有指明directory、则寻找是否有环境变量data_dump_dir、最后检查data_pump_dir,
但是data_pump_dir目录只有对DBA和其他授权用户可用。

*/

 

----------------------------------------------
--4.数据泵作业结构
----------------------------------------------


--4.1 数据泵作业结构主要包括

数据泵作业结构主要包括:主进程、工作进程、影子进程、客户机进程。


(1) master process(主进程)
master control process有一个DMnn的进程名。该进程使用一个特殊的表,记录导出转存文件中的各数据库对象的位置。
该表称为主表,主进程只是在导出过程中使用主表。导出结束的最后一步,主进程将主表的内容写入导出转存文件并自动
从数据库中删除主表。只要导出成功完成则主表的删除将自动进行但是如果使用停止命令将一个作业停止完成或导出作业
由于某种原因失败则主表不从主数据库中删除。当你重新启动该导出的作业时,它将使用相同的表。


(2) worker process(工进程)
包含DWnn进程名;是实际执行繁重的装载和卸载数据工作的进程。master process新建worker process并决定master process
新建worker process的数量。

该进程主要维护主表的行。当他们导出或导入各种对象时,他们用作业的状态信息更新主表:完成、未决、失败。


(3) shadow process(影子进程)
当一个客户机登录到oracle服务器时,数据库创建一个oracle进程为数据泵API的请求服务。此影子进程创建由主表和主进程组
成的作业。一旦客户机崩溃,该进程自动消失。


(4)client process (客户机进程)
客户机进程调用数据泵取API。

 

 


---------------------------------------------------------------------
*********************************************************************
 第二部分:执行数据泵导出和导入
*********************************************************************
---------------------------------------------------------------------

---------------------
-- 1.数据泵导出方法
---------------------

 

-- 1.1 使用命令行

--case1:

C:\>expdp scott/tiger tables=accp  directory=dp1 dumpfile=1.dmp

Export: Release 10.2.0.1.0 - Production on 星期五, 31 10月, 2008 10:36:56

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

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
启动 "SCOTT"."SYS_EXPORT_TABLE_01":  scott/******** tables=accp directory=dp1 du
mpfile=1.dmp
正在使用 BLOCKS 方法进行估计...
处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的总估计: 64 KB
处理对象类型 TABLE_EXPORT/TABLE/TABLE
. . 导出了 "SCOTT"."ACCP"                              4.929 KB       1 行
已成功加载/卸载了主表 "SCOTT"."SYS_EXPORT_TABLE_01"
******************************************************************************
SCOTT.SYS_EXPORT_TABLE_01 的转储文件集为:
  E:\DP\1.DMP
作业 "SCOTT"."SYS_EXPORT_TABLE_01" 已于 10:37:05 成功完成

 

 

 

 


-- 1.2 使用参数文件

-步骤1:新建一个参数文件

在E盘新建一个文本文件1.txt,内容如下:
directory=dp1
dumpfile=2.dmp
tables=accp

 

-步骤2:调用这个参数文件

C:\>expdp parfile='e:\1.txt'

Export: Release 10.2.0.1.0 - Production on 星期五, 31 10月, 2008 10:47:21

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

用户名: scott
口令:

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
启动 "SCOTT"."SYS_EXPORT_TABLE_01":  scott/******** parfile='e:\1.txt'
正在使用 BLOCKS 方法进行估计...
处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的总估计: 64 KB
处理对象类型 TABLE_EXPORT/TABLE/TABLE
. . 导出了 "SCOTT"."ACCP"                              4.929 KB       1 行
已成功加载/卸载了主表 "SCOTT"."SYS_EXPORT_TABLE_01"
******************************************************************************
SCOTT.SYS_EXPORT_TABLE_01 的转储文件集为:
  E:\DP\2.DMP
作业 "SCOTT"."SYS_EXPORT_TABLE_01" 已于 10:47:30 成功完成

 

-- 1.3 使用交互式数据泵导出

C:\>expdp directory=dp1 dumpfile=3.dmp

Export: Release 10.2.0.1.0 - Production on 星期五, 31 10月, 2008 10:50:51

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

用户名: scott
口令:

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
启动 "SCOTT"."SYS_EXPORT_SCHEMA_01":  scott/******** directory=dp1 dumpfile=3.dm
p
正在使用 BLOCKS 方法进行估计...
处理对象类型 SCHEMA_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的总估计: 256 KB
处理对象类型 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
处理对象类型 SCHEMA_EXPORT/TABLE/TABLE
处理对象类型 SCHEMA_EXPORT/TABLE/INDEX/INDEX
处理对象类型 SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
处理对象类型 SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
处理对象类型 SCHEMA_EXPORT/TABLE/COMMENT
处理对象类型 SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
. . 导出了 "SCOTT"."ACCP"                              4.929 KB       1 行
. . 导出了 "SCOTT"."DEPT"                              5.656 KB       4 行
. . 导出了 "SCOTT"."EMP"                               7.820 KB      14 行
. . 导出了 "SCOTT"."SALGRADE"                          5.585 KB       5 行
. . 导出了 "SCOTT"."BONUS"                                 0 KB       0 行
已成功加载/卸载了主表 "SCOTT"."SYS_EXPORT_SCHEMA_01"
******************************************************************************
SCOTT.SYS_EXPORT_SCHEMA_01 的转储文件集为:
  E:\DP\3.DMP
作业 "SCOTT"."SYS_EXPORT_SCHEMA_01" 已于 10:51:14 成功完成

 

-------------------------------------
--2. 数据泵导出的方式
--------------------------------------

 

导出方式包括:
full export mode(全导出方式):导出整个数据库

 

schema mode(模式方法):  导出一个单独用户的数据或对象,必须使用schemas参数

 

tablespace mode(表空间方式):使用tablespaces参数,可以导出一个或多个表空间中的全部表。
如果使用transport_tablespaces参数,则只能导出包含在一个或多个表空间中的对象元数据。
可以通过先导出元数据来导出数据库之间的表空间,拷贝表空间的文件到目标服务器,然后将元数据
导入目标数据库


table mode(表方式):使用tables参数,可以导出一个或多个表。

 


--2.1 使用模式方法导出scott用户模式下所有内容

C:\>expdp system/password  directory=dp1 dumpfile=scott.dmp schemas=scott  


--如果这里不指明directory则system账户使用默认的directory

Export: Release 10.2.0.1.0 - Production on 星期五, 31 10月, 2008 11:01:07

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

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
启动 "SYSTEM"."SYS_EXPORT_SCHEMA_01":  system/******** directory=dp1 dumpfile=sc
ott.dmp schemas=scott
正在使用 BLOCKS 方法进行估计...
处理对象类型 SCHEMA_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的总估计: 256 KB
处理对象类型 SCHEMA_EXPORT/USER
处理对象类型 SCHEMA_EXPORT/SYSTEM_GRANT
处理对象类型 SCHEMA_EXPORT/ROLE_GRANT
处理对象类型 SCHEMA_EXPORT/DEFAULT_ROLE
处理对象类型 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
处理对象类型 SCHEMA_EXPORT/TABLE/TABLE
处理对象类型 SCHEMA_EXPORT/TABLE/INDEX/INDEX
处理对象类型 SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
处理对象类型 SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
. . 导出了 "SCOTT"."ACCP"                              4.929 KB       1 行
. . 导出了 "SCOTT"."DEPT"                              5.656 KB       4 行
. . 导出了 "SCOTT"."EMP"                               7.820 KB      14 行
. . 导出了 "SCOTT"."SALGRADE"                          5.585 KB       5 行
. . 导出了 "SCOTT"."BONUS"                                 0 KB       0 行
已成功加载/卸载了主表 "SYSTEM"."SYS_EXPORT_SCHEMA_01"
******************************************************************************
SYSTEM.SYS_EXPORT_SCHEMA_01 的转储文件集为:
  E:\DP\SCOTT.DMP
作业 "SYSTEM"."SYS_EXPORT_SCHEMA_01" 已于 11:01:24 成功完成

 

 

--2.2 使用模式方法导出users表空间下所有内容

C:\>expdp system/password directory=dp1 dumpfile=users.dmp tablespaces=users

Export: Release 10.2.0.1.0 - Production on 星期五, 31 10月, 2008 11:05:31

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

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
启动 "SYSTEM"."SYS_EXPORT_TABLESPACE_01":  system/******** directory=dp1 dumpfil
e=users.dmp tablespaces=users
正在使用 BLOCKS 方法进行估计...
处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的总估计: 256 KB
处理对象类型 TABLE_EXPORT/TABLE/TABLE
处理对象类型 TABLE_EXPORT/TABLE/INDEX/INDEX
处理对象类型 TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
处理对象类型 TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
. . 导出了 "SCOTT"."ACCP"                              4.929 KB       1 行
. . 导出了 "SCOTT"."DEPT"                              5.656 KB       4 行
. . 导出了 "SCOTT"."EMP"                               7.820 KB      14 行
. . 导出了 "SCOTT"."SALGRADE"                          5.585 KB       5 行
. . 导出了 "SCOTT"."BONUS"                                 0 KB       0 行
已成功加载/卸载了主表 "SYSTEM"."SYS_EXPORT_TABLESPACE_01"
******************************************************************************
SYSTEM.SYS_EXPORT_TABLESPACE_01 的转储文件集为:
  E:\DP\USERS.DMP
作业 "SYSTEM"."SYS_EXPORT_TABLESPACE_01" 已于 11:05:44 成功完成

 


--2.3 使用tablespace mode导出users表空间下所有内容

--步骤1:新建环境

SQL> create tablespace accp
  2  datafile 'e:\accp.dbf' size 200M;

表空间已创建。


SQL> create table t01
  2  (sid int)
  3  tablespace accp;

表已创建。

SQL> insert into t01 values (102);

已创建 1 行。

SQL> select table_name from dba_tables where tablespace_name='ACCP';

TABLE_NAME
------------------------------
T01

--步骤2:导出表空间(排错)

C:\>host expdp system/password directory=dp1 dumpfile=accp.dmp transport_tablespaces=accp

Export: Release 10.2.0.1.0 - Production on 星期五, 31 10月, 2008 11:10:44

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

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
启动 "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01":  system/******** directory=dp1 dump
file=users.dmp transport_tablespaces=accp
ORA-39123: 数据泵可传输的表空间作业中止
ORA-29335: 表空间 'ACCP' 不为只读

作业 "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" 因致命错误于 11:10:47 停止

 

SQL> show user
USER 为 "SYS"

SQL> alter tablespace accp read only;

表空间已更改。

 


C:\>host expdp system/password directory=dp1 dumpfile=accp.dmp transport_tablespaces=accp

Export: Release 10.2.0.1.0 - Production on 星期五, 31 10月, 2008 11:12:26

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

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
启动 "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01":  system/******** directory=dp1 dump
file=users.dmp transport_tablespaces=accp
ORA-39123: 数据泵可传输的表空间作业中止
ORA-29341: 可传送集不是自包含的

作业 "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" 因致命错误于 11:12:30 停止


SQL> execute sys.dbms_tts.transport_set_check('ACCP',TRUE, TRUE);

PL/SQL 过程已成功完成。

 

SQL> select * from sys.transport_set_violations;

VIOLATIONS
------------------------------------------------------------------------

Sys owned object  T01 in tablespace ACCP not allowed in pluggable set


/*解决办法:
提示表是sys的,不能进行操作。

SQL> conn / as sysdba
已连接。
SQL> show user
USER 为 "SYS"
SQL> select table_name from dba_tables where tablespace_name='ACCP';

TABLE_NAME
------------------------------
T01
SQL> alter tablespace accp  read write;

表空间已更改。

SQL> drop table t01;

表已删除。

SQL> commit;

提交完成。


SQL> conn scott/tiger
已连接。
SQL> show user
USER 为 "SCOTT"
SQL> create table t01
  2  (sid int)
  3  tablespace accp;

表已创建。

SQL> insert into t01 values (1001);

已创建 1 行。

SQL> commit;

提交完成。


SQL> select * from t01;

       SID
----------
      1001


*/

 

SQL> conn / as sysdba
已连接。

SQL> select table_name from dba_tables where tablespace_name='ACCP';

TABLE_NAME
------------------------------
T01

SQL> select * from sys.transport_set_violations;

未选定行


SQL> alter tablespace accp read only;

表空间已更改。


--步骤3:正常导出表空间

SQL> host expdp system/password directory=dp1 dumpfile=accp.dmp transport_tables
paces=accp

Export: Release 10.2.0.1.0 - Production on 星期五, 31 10月, 2008 12:37:47

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

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
启动 "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01":  system/******** directory=dp1 dump
file=accp.dmp transport_tablespaces=accp
处理对象类型 TRANSPORTABLE_EXPORT/PLUGTS_BLK
处理对象类型 TRANSPORTABLE_EXPORT/TABLE
处理对象类型 TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
已成功加载/卸载了主表 "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01"
******************************************************************************
SYSTEM.SYS_EXPORT_TRANSPORTABLE_01 的转储文件集为:
  E:\DP\ACCP.DMP
作业 "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" 已于 12:37:58 成功完成

 


--步骤4:将导出的元数据和表空间的数据文件复制到目标服务器上

将oracle数据库关闭,然后将数据文件和导出的元数据复制到目标服务器上。


--步骤5:目标服务器上导入表空间

 

--可能遇到的错误

/*

SQL> show user
USER 为 "SYS"
SQL> host impdp system/password directory=dp1 dumpfile=accp.dmp TRANSPORT_DATAFI
LES='e:\accp.dbf'

Import: Release 10.2.0.1.0 - Production on 星期五, 31 10月, 2008 13:05:59

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

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
ORA-39002: 操作无效
ORA-39070: 无法打开日志文件。
ORA-39087: 目录名 DP1 无效

 

SQL> host impdp system/password  dumpfile='e:\accp.dmp' TRANSPORT_DATAFILES='e:\
accp.dbf'

Import: Release 10.2.0.1.0 - Production on 星期五, 31 10月, 2008 13:06:47

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

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
ORA-39001: 参数值无效
ORA-39000: 转储文件说明错误
ORA-39088: 文件名不能包含路径说明


*/

 

--方法1:将*.DMP文件拷贝到oracle安装目录oracle\product\10.2.0\admin\orcl\dpdump下,
并将dmp文件改名为expdat.dmp;数据文件保存到需要保存的地方。

SQL> host impdp system/password  TRANSPORT_DATAFILES='e:\accp.dbf'

Import: Release 10.2.0.1.0 - Production on 星期五, 31 10月, 2008 13:09:12

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

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已成功加载/卸载了主表 "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01"
启动 "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01":  system/******** TRANSPORT_DATAFILE
S='e:\accp.dbf'
处理对象类型 TRANSPORTABLE_EXPORT/PLUGTS_BLK
处理对象类型 TRANSPORTABLE_EXPORT/TABLE
处理对象类型 TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
作业 "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" 已于 13:09:16 成功完成


SQL> select tablespace_name from dba_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
ACCP

已选择6行。


SQL> select table_name from dba_tables where tablespace_name='ACCP';

TABLE_NAME
------------------------------
T01

SQL>

 

--方法2:新建一个directory并授权

SQL> create directory dup1 as 'e:\dp';    

Directory created

--e:\dp,这个dp目录需要我们用户新建。

SQL> grant read, write on directory dup1 to system;

Grant succeeded

 

SQL> host impdp system/password directory=dup1 dumpfile=accp.dmp TRANSPORT_DATAF
ILES='e:\accp.dbf'

Import: Release 10.2.0.1.0 - Production on 星期五, 31 10月, 2008 13:21:13

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

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已成功加载/卸载了主表 "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01"
启动 "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01":  system/******** directory=dup1 dum
pfile=accp.dmp TRANSPORT_DATAFILES='e:\accp.dbf'
处理对象类型 TRANSPORTABLE_EXPORT/PLUGTS_BLK
处理对象类型 TRANSPORTABLE_EXPORT/TABLE
处理对象类型 TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
作业 "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" 已于 13:21:15 成功完成

 

 

--步骤6:查看新导入表空间的表

SQL> show user
USER 为 "SYS"

SQL> select * from t01;
select * from t01
              *
第 1 行出现错误:
ORA-00942: 表或视图不存在


--解决办法:

SQL> select owner, table_name from dba_tables where tablespace_name='ACCP';

OWNER                          TABLE_NAME
------------------------------ ------------------------------
SCOTT                          T01


SQL> conn scott/tiger
ERROR:
ORA-28001: the password has expired


更改 scott 的口令
新口令:
重新键入新口令:
口令已更改
已连接。
SQL> select * from t01;

       SID
----------
      1001

SQL> conn / as sysdba
已连接。
SQL> show user
USER 为 "SYS"
SQL> select * from t01;
select * from t01
              *
第 1 行出现错误:
ORA-00942: 表或视图不存在


SQL> select * from scott.t01;

       SID
----------
      1001

 

-------------------------------------
--3. 数据泵导出/导出加密--------待解决,需要配置wallet
--------------------------------------

--步骤1:环境准备


SQL> show user
USER 为 "SYS"
SQL> select tablespace_name from dba_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS

SQL>create tablespace accp
datafile 'e:\accp.dbf' size 100M;

 

SQL> select tablespace_name from dba_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
ACCP

已选择6行。

SQL> conn scott/tiger
ERROR:
ORA-28001: the password has expired


更改 scott 的口令
新口令:
重新键入新口令:
口令已更改
已连接。
SQL> show user
USER 为 "SCOTT"


SQL>create table t1
(
sid int,
sno int
)tablespace accp;


SQL> conn / as sysdba
已连接。
SQL> show user
USER 为 "SYS"
SQL> create directory dup1 as 'e:\dp';

目录已创建。

--e:\dp,这个dp目录需要我们用户新建。

SQL> grant read, write on directory dup1 to scott;

Grant succeeded


c:\ host expdp scott/tiger directory=dup1 dumpfile=t01.dmp  tables=t1 encryption_password=123456

 

 

 

 

 

 

 

-------------------------------------
--4. 数据泵导出/导出远程数据库
--------------------------------------
----step1:在远程oracle服务器上新建一个测试的数据库

C:\>sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 10月 31 14:56:19 2008

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


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


SQL> host ipconfig /all

Windows IP Configuration

   Host Name . . . . . . . . . . . . : nanjing
   Primary Dns Suffix  . . . . . . . :
   Node Type . . . . . . . . . . . . : Unknown
   IP Routing Enabled. . . . . . . . : No
   WINS Proxy Enabled. . . . . . . . : No

Ethernet adapter 本地连接:

   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Intel 21140-Based PCI Fast Ethernet Adapt
er (Generic)
   Physical Address. . . . . . . . . : 00-03-FF-3E-55-03
   DHCP Enabled. . . . . . . . . . . : No
   IP Address. . . . . . . . . . . . : 192.168.99.2
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . :

 

SQL> create tablespace beijing
  2  datafile 'e:\beijing.dbf' size 200M;

表空间已创建。

SQL> conn scott/tiger
ERROR:
ORA-28001: the password has expired


更改 scott 的口令
新口令:
重新键入新口令:
口令已更改
已连接。
SQL> create table beijing
  2  (sid int,
  3  sname varchar2(10)
  4  ) tablespace beijing;

表已创建。


SQL> insert into beijing values (&1, '&2');
输入 1 的值:  101
输入 2 的值:  wind
原值    1: insert into beijing values (&1, '&2')
新值    1: insert into beijing values (101, 'wind')

已创建 1 行。

SQL> /
输入 1 的值:  102
输入 2 的值:  snow
原值    1: insert into beijing values (&1, '&2')
新值    1: insert into beijing values (102, 'snow')

已创建 1 行。


SQL> select * from beijing;

       SID SNAME
---------- ----------
       101 wind
       102 snow


----step2:配置本地服务器的TNS(方法3选一)

1.编辑本地oracle的TNS配置文件并保存。
E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN

remote =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.99.2)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME =accp)
    )
  )


2.测试配置是否生效

C:\>sqlplus scott/tiger@remote

SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 10月 31 15:02:44 2008

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


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

SQL> show user
USER 为 "SCOTT"
SQL> select table_name from user_tables;

TABLE_NAME
------------------------------
DEPT
EMP
BONUS
SALGRADE
BEIJING

SQL> select * from beijing;

       SID SNAME
---------- ----------
       101 wind
       102 snow

 


----step3:本地服务器上新建数据库到远程oracle服务器的连接


-1. 新建一个数据库连接到远程服务器

C:\>sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 10月 31 15:04:30 2008

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


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

SQL> show user
USER 为 "SYS

/*

CREATE  DATABASE LINK 语法:

CREATE  PUBLIC DATABASE LINK 数据库链接名
CONNECT TO 用户名 IDENTIFIED BY 密码
USING ‘本地配置的数据的实例名’;

如果不指明public则只能新建database link的用户使用。

*/


--方法1:已经配置本地服务器的TNS

create public database link bj
connect to system identified by password
using 'remote';

数据库链接已创建。


----方法2:没有配置本地服务器的TNS

create  public  database link bj
connect to system identified by password
using '(DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.99.2)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = accp)
    )
  )'

 

/*

SQL> show parameters global_name;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ---------
global_names                         boolean     FALSE

这里global_name是false则这里的连接名nj不需要和远程服务器同名;
否则需要同名。system用户名和密码是远程服务器的用户名和密码;
using ‘nanjing’,这里的nanjing是TNS中的解析名。
*/

 

-2. 测试连接服务器

SQL> host ipconfig

Windows IP Configuration


Ethernet adapter 本地连接:

   Connection-specific DNS Suffix  . :
   IP Address. . . . . . . . . . . . : 192.168.99.1
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . :


SQL> show user
USER 为 "SYS"
SQL> select * from scott.beijing@bj;

       SID SNAME
---------- ----------
      1001 wind
      1002 snow

/*

如果新建database link按如下新建则查询时不需要指明前缀scott:

create  public database link bj
connect to scott identified by tiger
using 'remote';

*/

----step3:将远程服务器上的数据导入到本地服务器

--步骤1:

C:\>impdp system/password tables=beijing network_link=bj

Import: Release 10.2.0.1.0 - Production on 星期五, 31 10月, 2008 17:11:43

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

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
ORA-31631: 需要权限
ORA-39149: 无法将特权用户链接到非特权用户

/*

---错误1解决办法:


drop public database link bj;

create public database link bj
connect to system identified by password
using 'remote';

数据库链接已创建。

*/

--步骤2:
C:\>impdp system/password tablespaces=beijing  network_link=bj

Import: Release 10.2.0.1.0 - Production on 星期五, 31 10月, 2008 17:37:54

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

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
启动 "SYSTEM"."SYS_IMPORT_TABLESPACE_01":  system/******** tablespaces=beijing
etwork_link=bj
正在使用 BLOCKS 方法进行估计...
处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的总估计: 64 KB
处理对象类型 TABLE_EXPORT/TABLE/TABLE
ORA-39083: 对象类型 TABLE 创建失败, 出现错误:
ORA-00959: 表空间 'BEIJING' 不存在
失败的 sql 为:
CREATE TABLE "SCOTT"."BEIJING" ("SID" NUMBER(*,0), "SNAME" VARCHAR2(10)) PCTFRE
 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536
NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREEL
ST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "BEIJING"

作业 "SYSTEM"."SYS_IMPORT_TABLESPACE_01" 已经完成, 但是有 1 个错误 (于 17:38:07
完成)


/*

---错误2解决办法:

SQL>create tablespace beijing
datafile 'e:\beijing.dbf' size 100M;

*/


--步骤3:

C:\>impdp system/password tablespaces=beijing  network_link=bj

Import: Release 10.2.0.1.0 - Production on 星期五, 31 10月, 2008 17:40:00

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

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
启动 "SYSTEM"."SYS_IMPORT_TABLESPACE_01":  system/******** tablespaces=beijing n
etwork_link=bj
正在使用 BLOCKS 方法进行估计...
处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的总估计: 64 KB
处理对象类型 TABLE_EXPORT/TABLE/TABLE
. . 导入了 "SCOTT"."BEIJING"                                2 行
作业 "SYSTEM"."SYS_IMPORT_TABLESPACE_01" 已于 17:40:10 成功完成

 

--步骤4:验证数据是否已经导入成功


SQL> select * from scott.beijing;

       SID SNAME
---------- ----------
       101 wind
       102 snow