设为首页 收藏本站
查看: 712|回复: 0

[经验分享] oracle 10g 数据泵导入导出

[复制链接]

尚未签到

发表于 2018-9-24 11:45:04 | 显示全部楼层 |阅读模式
  数据泵导入导出
  ---------------------------------------------------------------------
  *********************************************************************
  第一部分:数据泵导入导出概述
  *********************************************************************
  ---------------------------------------------------------------------
  ----------------------------
  --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:>  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:>  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>  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>  用户已创建。
  SQL> grant create session to scott;
  授权成功。
  --原因1:没有为用户指明具体目录,则用户使用默认目录
  C:\>expdp scott/tiger

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

  连接到: Oracle Database 10g Enterprise Edition>  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:>  Copyright (c) 2003, 2005, Oracle.  All rights reserved.

  连接到: Oracle Database 10g Enterprise Edition>  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:>  Copyright (c) 2003, 2005, Oracle.  All rights reserved.

  连接到: Oracle Database 10g Enterprise Edition>  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:>  Copyright (c) 2003, 2005, Oracle.  All rights reserved.

  连接到: Oracle Database 10g Enterprise Edition>  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:>  Copyright (c) 2003, 2005, Oracle.  All rights reserved.

  连接到: Oracle Database 10g Enterprise Edition>  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:>  Copyright (c) 2003, 2005, Oracle.  All rights reserved.
  用户名: scott
  口令:

  连接到: Oracle Database 10g Enterprise Edition>  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:>  Copyright (c) 2003, 2005, Oracle.  All rights reserved.
  用户名: scott
  口令:

  连接到: Oracle Database 10g Enterprise Edition>  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:>  Copyright (c) 2003, 2005, Oracle.  All rights reserved.

  连接到: Oracle Database 10g Enterprise Edition>  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:>  Copyright (c) 2003, 2005, Oracle.  All rights reserved.

  连接到: Oracle Database 10g Enterprise Edition>  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'>  表空间已创建。
  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:>  Copyright (c) 2003, 2005, Oracle.  All rights reserved.

  连接到: Oracle Database 10g Enterprise Edition>  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>>  表空间已更改。
  C:\>host expdp system/password directory=dp1 dumpfile=accp.dmp transport_tablespaces=accp

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

  连接到: Oracle Database 10g Enterprise Edition>  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>>  表空间已更改。
  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>>  表空间已更改。
  --步骤3:正常导出表空间
  SQL> host expdp system/password directory=dp1 dumpfile=accp.dmp transport_tables
  paces=accp

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

  连接到: Oracle Database 10g Enterprise Edition>  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:>  Copyright (c) 2003, 2005, Oracle.  All rights reserved.

  连接到: Oracle Database 10g Enterprise Edition>  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:>  Copyright (c) 2003, 2005, Oracle.  All rights reserved.

  连接到: Oracle Database 10g Enterprise Edition>  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:>  Copyright (c) 2003, 2005, Oracle.  All rights reserved.

  连接到: Oracle Database 10g Enterprise Edition>  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:>  Copyright (c) 2003, 2005, Oracle.  All rights reserved.

  连接到: Oracle Database 10g Enterprise Edition>  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'>  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:>  Copyright (c) 1982, 2005, Oracle.  All rights reserved.
  连接到:

  Oracle Database 10g Enterprise Edition>  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'>  表空间已创建。
  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:>  Copyright (c) 1982, 2005, Oracle.  All rights reserved.
  连接到:

  Oracle Database 10g Enterprise Edition>  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:>  Copyright (c) 1982, 2005, Oracle.  All rights reserved.
  连接到:

  Oracle Database 10g Enterprise Edition>  With the Partitioning, OLAP and Data Mining options
  SQL> show user
  USER 为 "SYS
  /*
  CREATE  DATABASE LINK 语法:
  CREATE  PUBLIC DATABASE LINK 数据库链接名

  CONNECT TO 用户名>  USING ‘本地配置的数据的实例名’;
  如果不指明public则只能新建database link的用户使用。
  */
  --方法1:已经配置本地服务器的TNS
  create public database link bj

  connect to system>  using 'remote';
  数据库链接已创建。
  ----方法2:没有配置本地服务器的TNS
  create  public  database link bj

  connect to system>  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>  using 'remote';
  */
  ----step3:将远程服务器上的数据导入到本地服务器
  --步骤1:
  C:\>impdp system/password tables=beijing network_link=bj

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

  连接到: Oracle Database 10g Enterprise Edition>  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>  using 'remote';
  数据库链接已创建。
  */
  --步骤2:
  C:\>impdp system/password tablespaces=beijing  network_link=bj

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

  连接到: Oracle Database 10g Enterprise Edition>  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'>  */
  --步骤3:
  C:\>impdp system/password tablespaces=beijing  network_link=bj

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

  连接到: Oracle Database 10g Enterprise Edition>  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


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-600567-1-1.html 上篇帖子: oracle11g tmpfs参数设置 下篇帖子: Oracle中含EXISTS查询语句分析
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表