Oracle数据泵的使用

Oracle数据泵的使用
Oracle数据泵的使用

Oracle数据泵的使用

几乎所有DBA都熟悉oracle的导出和导入实用程序,它们将数据装载进或卸载出数据库,在oracle database 10g和11g中,你必须使用更通用更强大的数据泵导出和导入(Data P ump Export and Import)实用程序导出和导入数据。

以前的导出和导入实用程序在oracle database 11g中仍然可以使用,但是Oracle强烈建议使用数据泵(Data Pump)技术,因为它提供了更多的高级特性。

例如:

●你可以中断导出/导入作业,然后恢复它们;

●可以重新启动已失败的导出和导入作业;

●可以重映射对象属性以修改对象;

●可以容易地从另一个会话中监控数据泵的作业,甚至可以在作业过程中修改其属性;

●使用并行技术很容易快速移动大量的数据;

●因为oracle提供了针对数据泵技术的API,所以可以容易地在PL/SQL程序中包含导出/

导入作业;

●可以使用更强大的可移植表空间特性来快速移植大量的数据,甚至可在不同操作系统

平台之间移动。

与旧的导出和导入实用程序不同,数据泵程序有一组可以在命令行中使用的参数以及一组只能以交互方式使用的特殊命令,你可以通过在命令行中输入expdp help = y或者impdp help = y快速获取所有数据泵参数及命令的概述

一.数据泵技术的优点

原有的导出和导入技术基于客户机,而数据泵技术基于服务器。默认所有的转储,日志和其他文件都建立在服务器上。

以下是数据泵技术的主要优点:

1.改进了性能

2.重新启动作业的能力

3.并行执行的能力

4.关联运行作业的能力

5.估算空间需求的能力

6.操作的网格方式

7.细粒度数据导入功能

8.重映射能力

二.数据泵导出和导入的用途

1.将数据从开发环境转到测试环境或产品环境

2.在不同的操作系统平台上的oracle数据库直接的传递数据

3.在修改重要表之前进行备份

4.备份数据库

5.把数据库对象从一个表空间移动到另一个表空间

6.在数据库直接移植表空间

7.提取表或其他对象的DDL

注意:数据库不建立完备的备份,因为在导出文件中没有灾难发生时的最新数据。但是对于较小的数据库和个别的表空间的导出,数据导出仍然是一个可行的备份工具。

三.数据泵的组成部分

数据泵技术主要有三个以下部件组成

●DBMS_DATAPUMP程序包。这是驱动数据字段元数据装载和卸载的主要引擎。DBMS_

DATAPUMP程序包包括数据泵技术的核心部分,此核心部分以过程的形式出现,实际驱动数据装载和卸载。

●DBMS_METADATA。为了提取并修改元数据,Oracle提供了DBMS_METADATA程序

包。

●命令行客户机。两个实用程序expdp和impdp进行导出和导入工作

四.数据泵文件

对于数据泵操作,可以使用三种类型的文件:

●转储文件:此文件存储实际原数据

●日志文件:记录数据泵操作的消息和结果

●SQL文件:数据泵使用一种特殊的参数sqlfile,把导入作业中要执行的所有DDL语句

写入一个文件中。数据泵并不实际执行SQL,它仅仅是将DDL语句写入由SQLFILE参数制定的文件中。

1. 使用目录对象

数据泵作业在服务器上(而不是启动在客户机上)创建其所有的转储文件。Oracle后台进程代表Oracle的拥有者,负责为所有转储文件设置I/O。这意味着从安全角度讲,你不能让用户在服务器上指定绝对路径,除此之外还存在安全措施等问题。为了避免这些类型的问题,数据泵使用目录对象。

目录对象(directory object)被称为是数据泵映射到一个特定操作系统目录的对象,例如,一个目录对象dump_dir可以指向服务器上/u01/app/oracle/admin/export目录。然后通过简单的dump_dir目录对象名,访问该目录。Oracle会创建一个默认的目录对象DATA_P UMP_DIR。该默认的对象目录由oracle在以下位置自动创建:

ORACLE_BASE/admin/sid

ORACLE_HOME/admin/sid

如果未建立自己的目录对象,oracle将使用默认的目录对象DATA_PUMP_DIR,并将转储文件,日志文件,SQL文件写到里面。要想了解默认的DATA_PUMP_DIR,可以使用基于DBA _DIRECTORIES视图查询。

SELECT * FROM DBA_DIRECTORIES

只有拥有SYS和SYSTEM权限的用户才能够使用默认目录对象DATA_PUMP_DIR。因此,SYS TEM用户可以启动数据泵作业,而不用提供目录名。

其他,未授权的用户能够使用数据泵导出或导入前,DBA(或者有CREATE ANY DIRECTORY 权限的用户)必须创建一个目录对象并授予相应的权限。

CREATE OR REPLACE DIRECTORY directoy_name as ‘/u/test/oradata’

授予权限:

GRANT READ, WRITE ON DIRECTORY directoy_name TO user_name

之后所有的数据泵导出或导入作业均可使用DIRECTORY参数指定目录

如:DIRECTORY = directoy_name, 如果用户试图使用expdp或impdp没有指定目录对象将报错。

在实际的作业中,可以通过以下三种方式指定目录对象:

●DIRECTORY参数:在一个数据泵导出作业中,可以使用DIRECOTY参数指定对象名;

$ expdphr/hr DIRECOTY=dump_dir ……

●DIRECOTY:FILE表示法:为替代使用DIRECTORY参数,可以将目录对象包含在一个特定

的数据泵文件中(转储,日志,SQLFILE)。使用冒号(:)隔开文件说明中的目录和个别文件名;

$ expdphr/hr LOGFILE=dump_dir:test.log ……

●DATA_PUMP_DIR环境变量:可以使用环境变量DATA_PUMP_DIR指向服务器的目录对

象。使用export命令。指定之后,就不需要在作业中再指定DIRECTORY参数了。

$ EXPORT DATA_PUMP_DIR= dump_dir

2. 文件位置的优先次序

由于存在几种指定目录的方法,则究竟使用哪种,有一定的优先次序

①.Oracle首先检查是否将目录包含在一个与文件有关的参数内

②.第二个检查是否存在DIRECTORY参数

③.第三个检查是否使用环境变量

④.最后检查默认的DATA_PUMP_DIR目录对象

五.数据泵的权限

所有的oracle用户都可以在默认情况下使用数据泵实用程序,若使用某些高级任务,还必须拥有以下权限

EXP_FULL_DATABASE,IMP_FULL_DATABASE

六.数据泵的作业结构

数据泵导出和导入实用程序使用几个进程来执行其作业,其中包括关键的主进程和工进程,以及客户机进程和影子进程,下面我们具体来看看各个进程:

主进程

主进程,MCP(Master Control Process),有一个进程名为DMnn,全主进程名用_DMnn_格式,每个作业只有一个主进程。主进程控制整个数据泵作业的执行和顺序。具体来说,主进程执行以下任务:

●创建并控制作业

●创建并管理工进程(worker process)

●监控作业并记录进程

●维护作业状态并重新启动主表中的信息

●管理必要的文件,包括转储文件集

主进程使用一个特殊的表,即主表。记录导出转储文件中的各数据对象的位置。主表很像oracle的其他表,它位于每个数据泵导出和导入作业的中心。主进程维护作业状态并启动主表中的信息。Oracle在每个导出任务作业开始的时候,在正在运行数据泵作业的用户模式中创建主表。主表包括了关于当前作业的各类信息,如导出/导入作业中的对象状态,转储文件集的位置,作业的参数以及所有工作进程的状态,主表与导出作业的名字相同。主进程只对导出过程使用主表,在导出结束时,在导出作业的最后一步,主进程将主表的内容写入导出转储文件并自动从数据库中删除主表。主要导出作业成功完成或者发布了KILL_ JOB的命令主表都讲自动删除,但是如果使用STOP_JOB命令停止作业,或者导出作业由于某种原因失败,主表不会被删除,表中包含了要重新启动中断作业的全部必要信息。

工作进程

工作进程名为_DWnn_。它是实际执行繁重的装载和卸载数据工作的进程。主进程创建工作进程,并行度决定主进程将创建几个工作进程,工作进程维护主表的行,在导出和导入各种对象时,他们根据作业状态信息更新主表,完成,未决或失败

影子进程

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

客户机进程

客户机进程调用数据泵API。可使用两个客户机expdp和impdp,执行导出和导入。

七.数据泵的导出

数据泵的导出方法

1. 使用命令行

如:

$ expdp system/manager DIRECTORY=dump_dir DUMPFILE = expda1.dmp

2. 使用参数文件

除了在命令行直接指定导出参数外,还可以将他们放入参数文件中,从而在实际的导出作业中调用该参数文件,如:mytext.txt这个参数文件

SCHEMA=HR

DIRECTORY=dump_dir

DUMPFILE=expda1.dmp

创建参数文件后,为了导出HR模式,所需要做的就是用PARFILE参数调用:

$ expdp PARFILE=mytext.txt

数据泵导出的方式

可以使用下列几种方式执行导出作业

1. 全导出方式(full export mode)。

当你想要在一个导出会话中导出整个数据库时,使用FULL参数,但是要有EXPORT_FULL_D ATABASE的权限。

2. 模式方式(schema mode)。

如果只想导出一个单独用户的数据或对象,必须使用SCHEMA参数

3. 表空间方式(tablespace mode)。

使用表空间方式可以导出一个或多个表空间中的全部表。如果使用TRANSPORT_TABLESPAC E参数,则只导出包含在一个或多个表空间中的对象的元数据,你能够通过先导出元数据,在将表空间的文件复制到目标服务器,然后再将元数据导入目标服务器。

4. 表方式(table mode)。

用TABLES参数,可以导出一个或多个表。表模式是数据泵导出作业的默认方式,如果按以下命令执行,则数据泵将自动执行导出SYSTEM的对象$ expdp system/123456

数据泵的导出参数

数据泵导出实用程序的使用主要是一些参数的使用,为了方便讨论,将参数分成以下几类:

1.与文件目录有关的参数

2.与导出方式有关的参数

3.导出过滤的参数

4.与加密有关的参数

5.估算参数

6.网络链接参数

7.交互方式参数

8.与作业有关的参数

下面分别讨论

1. 与文件目录有关的参数

可以在数据泵的导出参数中指定几个与文件和目录有关的参数,这些参数包括,DIRECTOR Y, DUMPFILE, FILESIZE, PARFILE, LOGFILE, NOLOGFILE和COMPRESSION参数

DIRECTORY

Directory参数指向为转储文件和日志文件使用的目录对象,见4.1。

DUMPFILE

DUMPFILE参数提供应该写入导出的转储文件的名字(或列表)。通过指定%U替换变量,可创建多个转储文件,替换变量将从01到99,例如exp%U.dmp可以转储成exp01.dmp, e xp02.dmp, exp03.dmp等文件名。用%U指定的多个转储文件,由参数PARALLEL决定。在用逗号分隔的列表中提供多个文件。如果未指定默认的DUMPFILE,作业将使用默认的文件参数名expdat.dmp。

FILESIZE

FILESIZE参数是可选的,它指定转储文件的大小,默认以字节为单位,可以用字节,KB,MB, GB为单位指定FILESIZE参数。若不指定,则转储文件没有大小的限制,如果通过FILESIZE 指定了转储文件的最大大小。倘若转储文件超过限制,导出作业将停止,待该问题解决后仍可以重新启动它。

PARFILE

PARFILE参数文件,如同前面介绍的内容。

LOGFILE和NOLOGFILE

可以用LOGFILE指定导出作业的日志文件,如果使用NOLOGFILE则作业将不创建日志文件,但屏幕仍可看到日志信息。

REUSE_DUMPFILES

可指定REUSE_DUMPFILES参数覆盖一个导出的转储文件。默认是不覆盖。可以指定值Y,覆盖一个之前的转储文件,N是默认行为。

$expdphr/hr DIRECTORY=dump_dir DUMPFILE=expdat.dmp TABLES=employees REUSE_DUMPFILES=y

当然必须保证不在使用之前的expdat.dmp文件了

COMPRESSION

COMPRESSION参数允许用户指定在将导出数据写入转储文件时,压缩哪些数据。默认时,所有被导出的元数据均被压缩。可以指定all, data_only, metadata_only, none等参数:

all:允许对整个操作压缩

data_only:只压缩数据

metadata_only:只压缩原数据,这是默认值

none:不压缩

2. 与导出方式有关的参数

与导出方式有关的参数有FULL, SCHEMA, TABLESPACE, TABLES, TRANSPORT_TABLESPACE, TRANSPORT_FULL_CHECK。

除了TRANSPORT_FULL_CHECK参数外,其他参数已经在之前介绍过了。

TRANSPORT_FULL_CHECK参数检查以确定试图传送的可移植表空间满足可移植表空间作业限定的所有条件。使用此参数,可以检查可移植集合内的对象和数据库其他对象之间的相关性。例如索引完全依赖于表,因为没有表,索引就没有意义。

可设置TRANSPORT_FULL_CHECK为Y或N,如果设置TRANPORT_FULL_CHECK=Y,则数据泵导出作业将检查双向相关性,如果你有一个表在可移植表空间中,但索引不在其中,或者表空间只包含了索引还没有表,则导出作业将失败。

如果设置TRANSPORT_FULL_CHECK,则数据泵导出作业将检查单向相关性。如果可移植表空间集合包含表而未包含索引,则导出将成功,但是如果只包含索引还没有表,则导出作业将失败。

3. 导出过滤参数

CONTENT

使用CONTENT参数,可以过滤要写入导出转储文件中的内容。

CONTENT参数可取以下三个值:

ALL:同时导出数据和元数据

DATA_ONLY:只导出数据

METADATA_ONLY:只导出元数据

$ expdphr/hr DUMPFILE=expdat1.dmp CONTENT=DATA_ONLY

EXCLUDE和INCLUDE

EXCLUDE和INCLUDE是两个对立的参数,可用来过滤元数据。元数据的过滤允许在导出或

导入过程中选择去除或包含指定类型的对象。

注意:使用CONTENT=DATA_ONLY时,不能再使用EXCLUDE和INCLUDE。

简单设置EXCLUDE参数,可在导出作业中排除特定的数据库对象。另外INCLUDE允许只包括一组特定的对象,格式

EXCLUDE=object_type[:name_clause]

INCLUDE=object_type[:name_clause]

如:

EXCLUDE=TABLE:"LIKE 'EMP%'" 它排除所有以EMP开头的表。

EXCLUDE=index排除所有索引

EXCLUDE=SCHEMA:"='HR'" 排除HR整个模式

INCLUDE正好和EXCLUDE相反,包含特定的对象,如:

INCLUDE=TABLE:"IN('tableA','tableB')"只导出tableA和tableB两个表

INCLUDE=PROCEDURE 只导出模式中所有的存储过程

INCLUDE=INDEX:"LIKE 'EMP%'" 只导出以EMP开头的索引

注意EXCLUDE和INCLUDE是相对的两个参数,不可同时使用。

REMAP_DATA

REMAP_DATA允许用户用一个新值替换某个列中的多个值,列的新值由重映射函数(remap function)指定。将数据从产品环境移动到测试环境,可能由于保密等原因而需要更改敏感信息,可使用此参数。你可以使用相同的重映射函数引用约束中的子列和父列。

如:

$ expdphr/hr DIRECTORY=dump_dir DUMPFILE=expdat1.dmp TABLES=employee

REMAP_DATA=hr.employee.employee_id:hr.remap.minux10

REMAP_DATA=hr.employee.first_name: hr.remap.plusx

程序包REMAP的两个函数minux10和plusx.

DATA_OPTIONS

DATA_OPTIONS参数允许在导出过程中处理特定的数据类型指定选项。只能将此参数指定为XML_CLOBS

QUERY

QUERY参数与它在传统的导出实用程序中作用相同:借助于SQL语句选择导出的表行数据。

QUERY参数允许用一个表名限定SQL语句,如:QUERY=hr.orders:"whereorder_id> 1000000 ",订单表中的order_id>1000000的订单行被导出。

SAMPLE

使用SAMPLE参数,可以导出表的一个数据子集。SAMPLE参数允许指定的范围从0.000001到100的一个百分数。

语法如下:

SAMPLE=schema_name.table_name:sample_percent

SAMPLE="hr"."employee":50

导出hr模式下的表employee百分之50的数据,可以不指定模式名,如不指定,则默认当前模式,如指定表名,则一般指定模式名,不然会导出所有表的百分比。

TRANSPORTABLE

TRANSPORTABLE参数允许指定进行表模式导出时,是否想要数据库导出特定的表的元数据,有ALWAYS和NEVER两个值

4. 对导出数据进行加密

可使用后面的一个或多个与加密相关的参数指定数据写到转储文件时是否加密:ENCRYPTI ON, EXCRYPTION_ALGORITHM , ENCRYPTION_MODE , ENCRYPTION_PASSWORD.

ENCRYPTION

ENCRYPTION参数指定在将数据写到转储文件时是否对其加密。

可给ENCRYTION参数指定以下值

ALL:加密所有数据和元数据

DATA_ONLY:只加密数据

ENCRYPTION_COLUMN_ONLY:只加密使用TDE特性的加密列

METADATA_ONLY:只加密元数据

NONE:不进行加密(默认)

注意:可通过指定ENCRYPTION或ENCRYPTION_PASSWORD参数,或者两者都指定,实施加密。

如果指定了ENCRYPTION_PASSWORD参数,则ENCRYPTION参数默认ALL。

下面的例子只加密数据

$ expdphr/hr DIRECROTY=dump_dir DUMPFILE=expdat1.dmp ENCRYPTION=data_only ENCRYPTION_PASSWOR D=123456

ENCRYPTION_ALGORIHM

ENCRYPTION_ALGORIHM参数指定数据使用的加密算法,默认为AES128,你也可以指定AE S192,AES256

ENCRYPTION_MODE

dual:

password:

transparent:

ENCRYPTION_PASSWORD

在导出转储文件中,可以使用ENCRYPTION_PASSWORD参数加密数据,以防未授权的用户从转储文件中读取数据。

5. 估算参数

使用两个有趣的估算参数可以估算导出作业将消耗多少空间:ESTIMATE和ESTIMATE_ONLY

ESTIMATE

将指出新的导出作业将要消耗多少空间,空间总是以字节为单位进行估算,可以指定数据库使用正在被导出的对象中的数据库块(BLOCK)的数量,或者表的优化程序统计数据(S TATISTICS)进行空间估算

ESTIMATE=(BLOCKS|STATISTICS), BLOCKS是默认选项

ESTIMATE_ONLY

虽然ESTIMATE参数只在导出作业中生效,但是可以使用ESTIMATE_ONLY参数而不启动导

出作业。

$ expdphr/hr ESTIMATE_ONLY=y

6. 网络链接参数

省略

7. 与作业有关的参数

JOB_NAME:

可选参数,指出导出作业的名字,若未指定,oracle将默认。此名字与作业主表的名字相同。

STATUS:

STATUS参数在运行长时间作业的时候非常有用。因为它可以按照指定的时间间隔提供更新的状态,此参数以秒为单位取整数,默认是0,将在必要时显示新的状态。如果想每分钟地确保有关正在运行中数据泵作业的更新状态,指定STATUS=60

FLASHBACK_SCN:

FLASHBACK_TIME:

flashback_time=systimestamp

PARALLEL:

PARALLEL是功能强大的参数,允许作业指定一个以上的活动执行线程,工作进程,使用P ARALLEL参数意味着作业将使用多线程执行,可以使用ATTACH命令在运行中改变并行度。默认值是1。

不要忘记指定PARALLEL参数后,转储文件的命名要注意相同数量。

$ expdphr/hr PARALLEL=3 DUMPFILE=expdat%U.dmp

或者

$ expdphr/hr PARALLEL=3 DUMPFILE=(expdat01.dmp, expdat02.dmp, expdat03.dmp) ATTACH:

ATTACH参数将使你的数据泵客户机会话加入到一个运行的作业中,并使你进入交互的方

式,此参数只能与用户名密码组合使用。

$ expdphr/hr ATTACH=job_name

8. 交互方式的导出参数

可以使用ATTACH命令或者CTRL+C命令交互地加入作业中,不会停止正在运行的作业。交互命令只停止在屏幕上显示该作业消息并显示提示符(export>)常见的交互式命令

●ADD_FILE:给转储文件集合增加一个转储文件

●CONTINUE_CLIENT:返回登陆方式,作业将重新启动

●EXIT_CLIENT:退出客户机会话,并保持作业运行

●HELP:提供交换命令的帮助

●KILL_JOB:释放并删除作业

●PARALLEL:更改当前作业的活动工作进程数量

●START_JOB:启动并重新恢复当前作业

●STATUS:设置作业的监控频率

●STOP_JOB:顺序关闭作业的执行,并退出客户机

八.数据泵的导入

与数据泵导出实用程序的情形一样,调用impdp实用程序时,可以借助于各种参数控制数据的导入

1.与文件和目录有关的参数

2.过滤参数

3.与作业有关的参数

4.与导入方式有关的参数

5.重映射参数

6.TRANSFORM参数

https://www.360docs.net/doc/068938624.html,WORK_LINK参数

8.闪回参数

数据泵导入实用程序impdp与导出程序expdp以同样的方式使用PARFILE, DIRECTORY, DU MPFILE, LOGFILE, NOLOGFILE命令。但是SQLFILE是一个唯一针对导入程序的文件。

在执行数据导入的过程中,有时希望从导出的转储文件中提取DDL,SQLFILE参数可以很轻易的做到这一点。

$impdphr/hr DIRECTORY=dump_dir DUMP_FILE=expdat1.dmp SQLFILE=dump02_dir:finance.sql SCHEMA=s cott

此命令会将与SCOTT模式相关的DDL语句写入到SQLFILE。

要记住,SQLFILE参数只为特定的文件提取DDL,并不发生实际的数据导入。

使用此参数,可以从导出的转储文件中提取带有全部DDL的SQL脚本。

另一个与导入相关的文件参数是REUSE_DATAFILES参数,指定在导入数据时是否使用已有的数据文件,REUSE_DATAFILES=Y为使用。

2.过滤参数

与数据泵的导出作业情形一样

●使用CONTENT参数确定是否装载数据或者元数据。

●EXCLUDE和INCLUDE参数限制导入的对象

●TABLE_EXISTS_ACTION参数指定数据泵导入数据时若表已经存在,将做什么

SKIP:默认值,跳过

APPEND:在已存在的表后面追加

TRUNCATE:截取表并从转储文件中重新装载

REPLACE:删除表,重新创建表,并导入数据

3.与作业有关的参数

JOB_NAME, STATUS_PARALLEL

TABLES, SCHEMAS, TABLESPACES和FULL

5.重映射参数

重映射参数增加了ORACLE在数据导入处理过程中重映射对象的能力,参数有REMAP_TABL ES, REMAP_SCHEMA, REMAP_DATAFILE和REMAP_TABLESPACE

REMAP_TABLE:

REMAP_TABLE参数允许在使用可移植方式的导入操作中,重命名表

$impdphr/hr DIRECTORY=dump_dir DUMPFILE=newdump.dmp TABLES=hr.employee REMAP_TABLE=hr.employ ee:emp

REMAP_TABLE参数在导入中,将HR.EMPLOYEE表更名为EMP表

REMAP_SCHEMA:

使用REMAP_SCHEMA参数,可以将对象从一个模式移动到另一个模式。

$impdphr/hr DIRECTORY=dump_dir DUMPFILE=newdump.dmp REMAP_SCHEMA=HR:OE

将HR模式的所有对象导入到OE模式中。导入程序甚至能创建OE模式,如果他不存在的话。

REMAP_DATAFILE:

平台不同,可以使用此参数改变文件系统的名字

REMAP_TABLESPACE

将一个表空间数据导入到另一个表空间中

REMAP_DATA

REMAP_OPTIONS

TRANSPORTABLE

6.TRANSFORM参数

假如你正从一个模式甚至另一个数据库中导入表,假设你想确保在导入过程中不导入对象的存储属性,而只导入表所包含的数据,则TRANSFORM参数允许指定数据泵导入作业不导入某些存储属性和其他属性。

有几个值:

●SEGMENT_ATTRIBUTES:段属性包括物理属性,存储属性,表空间和日志。

通过指定SEGMENT_ATTRIBUTES=Y默认,指示导入作业包括上述属性

●STORAGE:可以使用STORAGE=Y默认,说明导入作业只包括对象的存储属性。

●OID:如果指定OID=Y默认,则导入过程中将分配一个新的OID给对象表

●PCTSPACE:通过给出一个正数作为该转换的值,可增加对象的分配大小,并且数据文

件大小等于PCTSPACE的值

TRANSFORM_NAME:VALUE:OBJECT TYPE

$impdphr/hr TABLES=hr.employee DIRECTORY=dump.dir DUMPFILE=newdump.dmp TRANSFORM=segment_att ributes:n:table

导入的数据不包括表的段属性

7.NETWORK_LINK参数

使用新的NETWORK_LINK参数可以不通过转储文件,直接从远程数据导入数据。

第一步:创建一个远程数据库的链接

CREATE DATABASE LINK remote CONNECT TO system IDENTIFIED BY password USING ‘remote.world’

第二步:若没有的话创建一个目录对象

CREATE DIRECTORY remote_dir AS ‘/u/app/oracle/dp_dir’;

第三步:

$EXPORT DATA_PUMP_DIR=remote_dir环境变量

第四步:从数据库remote中执行网络导入

$ impdp system/password SCHEMA=scott NETWORD_LINK=remote

8.闪回参数

九.监控数据泵作业

有两个视图(DBA_DATAPUMP_JOBS和DBA_DATAPUMP_SESSIONS)对于监控数据泵作业至关重要。另外,可以使用视图V$SESSION_LONGOPS和V$SESSION获取会话信息。在大多数情况下,可以联结两个或更多的视图来获得作业进展的必要信息。

1.浏览数据泵作业

DBA_DATAPUMP_JOBS视图显示所有当前运行的数据泵作业的概要信息。

如下:

SELECT * FROM DBA_DATAPUMP_JOBS;

由于动态DBA_DATAPUMP_JOBS视图只显示活动的作业,所以在该视图中的查询将显示正在运行的重要JOB_NAME列值。如果想半路加入到正在运行的作业中,需要知道作业名,由于主表的名字与与JOB_NAME列值相同,所以可以通过该视图确定主表的名字。

JOB_MODE列可以取值为FULL, TABLE, SCHEMA或TABLESPACE, 反映当前执行的导出或导入作业的方式。

STATE列根据执行查询所在的导出或导入的阶段,可以取值为UNDEFINED,DEFINING,EXCUTI NG和NOT RUNNING。

2.浏览数据泵会话

DBA_DATAPUMP_SESSIONS视图显示当前加入到数据泵导出或导入作业中的用户会话,可以将此视图中的SADDR列与V$SESSION视图的SADDR列联结,以获取有关当前加入到作业中的用户会话的有用信息。

SELECT SID, SERIAL# FROM V$SESSION S, DBA_DATAPUMP_SESSIONS D WHERE S.SADDR = D.SADDR

3.浏览数据泵作业的进度

在V$SESSION_LONGOPS视图中,可以使用以下4个列的监控导出或导入作业的进展:

●TOTALWORK: 显示作业的以MB为单位的总估算量

●SOFAR: 显示作业中迄今为止移动的字节数量,以MB为单位

●UNITS: 代表兆字节,以MB为单位

●OPNAME: 显示数据泵的作业名

以下是个典型的脚本,

SELECT OPNAME, TARGET_DESC, SOFAR, TOTALWORK FROM V$SESSION_LONGOPS

4.使用数据泵API

使用数据泵API来编写PLSQL脚本以导出或导入数据,数据泵API在DBMS_DATAPUMP程序包中,他可以完成以下任务:启动作业、监控作业、分解作业、停止作业、重新启动作业

DBMS_DATAPUMP.OPEN()

DBMS_DATAPUMP.ADD_FILE()

DBMS_DATAPUMP.METADATA_FILEDIR()

DBMS_DATAPUMP.START_JOB()

十.可移植表空间

Oracle的可移植表空间特性通过将数据简单地从一个数据库移动到另一个数据库,提供了一种数据库之间有效移动大数据的简易方法。Oracle强烈推荐尽可能地使用可移植表空间特性,因为其在数据库之间的移动数据特性超越了其他方法。

1.移植表空间

主要有以下几个步骤

a.选择要移动的表空间,确保与其他表空间的对象无任何依赖关系

b.生成可移植表空间集

c.执行表空间导入。这涉及将数据文件复制到目标服务器并将相关元数据导入到目标数

据库中

①.选择要移植的表空间

移植表空间必须满足的主要条件是:候选的表空间集必须为自包含。在要移植的表空间内的对象的引用完整性约束一定不能指向表空间外的对象。检验表空间是否满足自包含条件的一种方法是使用DBMS_TTS程序包EXECUTE SYS.DBMS_TTS.TRANSPORT_SET_CHECK('TABL ESPACE', TRUE)

必须拥有EXECUTE_CATALOG_ROLE角色来执行TRANSPORT_SET_CHECK过程。如果执行这个过程没有返回出错信息,则表明在可移植集合中的表空间是自包含的,因而符合条件。

②.生成可移植表空间集

在将表空间移植到目标数据库之前,必须生产一个可移植表空间集。可移植表空间集由表空间中所有数据文件和导出转储文件组成。导出转储文件中包含了关于表空间的格式化数据目录信息。在移植表空间之前要做的一件事情就是将表空间设置为只读方式。如果有活动的事务正在修改表,则不能移植表空间。

ALTER TABLESPACE TABLESPACE_NAME READ_ONLY

然后就是导出表空间的元数据

此步骤在执行过程中很快,因为没有导出行数据,只是元数据。

$EXPDP OE/OE DIRECTORY=dump_dir DUMPFILE=sales.dmp TRANPORT_TABLESPACE=sales01

将导出的转储文件和数据文件复制到目标数据库

复制之前要确保表空间的块大小与目标表空间的标准块大小相等,如果不等,目标数据泵必须在其init.ora文件中指定一个非标准的块大小来充当要导出的表空间的块大小。最后使用FTP、远程复制或其他方法,将文件复制到目标数据库

③.执行表空间的导入

最后运行数据泵导入实用程序(在目标数据库中)。由于导出转储文件没有任何数据,将要导入的只是对象的元数据。目标数据库将简单的使用从源数据库复制过来的数据文件作为可移植表空间的数据文件。所需要做的就是把表空间插入目标数据库中

IMPDP system/password DUMPFILE=sales.dmp TRANSPORT_DATAFILES='sales01.dbf' directory=dump_di r

可移植表空间功能强大同时非常高效,可跨平台。

Oracle数据泵的使用

Oracle数据泵的使用 几乎所有DBA都熟悉oracle的导出和导入实用程序,它们将数据装载进或卸载出数据库,在oracle database 10g和11g中,你必须使用更通用更强大的数据泵导出和导入(Data P ump Export and Import)实用程序导出和导入数据。 以前的导出和导入实用程序在oracle database 11g中仍然可以使用,但是Oracle强烈建议使用数据泵(Data Pump)技术,因为它提供了更多的高级特性。 例如: ●你可以中断导出/导入作业,然后恢复它们; ●可以重新启动已失败的导出和导入作业; ●可以重映射对象属性以修改对象; ●可以容易地从另一个会话中监控数据泵的作业,甚至可以在作业过程中修改其属性; ●使用并行技术很容易快速移动大量的数据; ●因为oracle提供了针对数据泵技术的API,所以可以容易地在PL/SQL程序中包含导出/ 导入作业; ●可以使用更强大的可移植表空间特性来快速移植大量的数据,甚至可在不同操作系统 平台之间移动。 与旧的导出和导入实用程序不同,数据泵程序有一组可以在命令行中使用的参数以及一组只能以交互方式使用的特殊命令,你可以通过在命令行中输入expdp help = y或者impdp help = y快速获取所有数据泵参数及命令的概述 一.数据泵技术的优点 原有的导出和导入技术基于客户机,而数据泵技术基于服务器。默认所有的转储,日志和其他文件都建立在服务器上。 以下是数据泵技术的主要优点: 1.改进了性能 2.重新启动作业的能力 3.并行执行的能力

4.关联运行作业的能力 5.估算空间需求的能力 6.操作的网格方式 7.细粒度数据导入功能 8.重映射能力 二.数据泵导出和导入的用途 1.将数据从开发环境转到测试环境或产品环境 2.在不同的操作系统平台上的oracle数据库直接的传递数据 3.在修改重要表之前进行备份 4.备份数据库 5.把数据库对象从一个表空间移动到另一个表空间 6.在数据库直接移植表空间 7.提取表或其他对象的DDL 注意:数据库不建立完备的备份,因为在导出文件中没有灾难发生时的最新数据。但是对于较小的数据库和个别的表空间的导出,数据导出仍然是一个可行的备份工具。 三.数据泵的组成部分 数据泵技术主要有三个以下部件组成 ●DBMS_DATAPUMP程序包。这是驱动数据字段元数据装载和卸载的主要引擎。DBMS_ DATAPUMP程序包包括数据泵技术的核心部分,此核心部分以过程的形式出现,实际驱动数据装载和卸载。 ●DBMS_METADATA。为了提取并修改元数据,Oracle提供了DBMS_METADATA程序 包。 ●命令行客户机。两个实用程序expdp和impdp进行导出和导入工作

数据泵导入导出

数据泵导入导出 导入imp/导出exp 权限设置: GRANT CREATE USER,DROP USER,ALTER USER,CREATE ANY VIEW, DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE, DBA,CONNECT,RESOURCE,CREATE SESSION TO用户名 数据导出: 1将数据库orcl完全导出,用户名system密码manager导出到D:\expdat.dmp中 exp system/manager@orcl file=d:\expdat.dmp full=y 2将数据库中system用户与sys用户的表导出 exp system/manager@orcl file=d:\expdat.dmp owner=(system,sys) 3将数据库中的表emp、dept导出 exp scott/tiger@orcl file=d:\dump\newsexpdat.dmp tables=(emp,dept) 4将数据库中的表emp中的字段ename以"G"打头的

数据导出 exp scott/tiger@orcl file=d:\expdat.dmp tables=(emp) query=\"where ename like'S%'\" 数据的导入 1将D:\dump\expdat.dmp中的数据导入user数据库中。imp system/manager@orcl file=d:\expdat.dmp imp scott/tiger@orcl full=y file=d:\dump\newexpdat.dmp ignore=y 2将d:\expdat.dmp中的表emp导入 imp test/test@orcl file=d:\db.expdat.dmp tables=(expdat) imp test/test@orcl file=d:\db.expdat.dmp tables=(expdat) 1、exp system/oracle@jlnbd file=d:\temp.dmp tables=(ds.tbdsmf,ds.tbdsaf,ds.tbdsgf)例子(导出数据所在服务器的用户名和密码)

数据库第二次作业 能使用 Oracle 的数据泵进行数据的备份和数据恢复。

实验要求:能使用Oracle 的数据泵进行数据的备份和数据恢复。加深对Oracle 基本锁的类型以及封锁机制的理解,掌握监控Oracle 多粒度封锁机制的方法。 实验内容: 一、使用数据泵进行数据逻辑备份和恢复 用expdp 和impdp 使用程序,导出数据是将数据库中的数据导出到一个操作系统文件中(即导出文件中),导入数据是将导出文件中的数据导入到数据库中。expdp 和impdp 都是服务器端的使用程序,只能在oracle 服务器端使用,不能在客户端使用。而exp 和imp 是客户端实用程序,既可以在客户端使用,也可以在服务器端使用。由于expdp 和impdp 的速度优于exp 和imp ,所以oracle 建议使用expdp 和impdp 。 步骤: 1 、创建目录对象并授权 使用expdp 和impdp 实用程序时,其导出文件只能存放在directory( 目录) 对象指定的OS (操作系统)目录中,而不能直接指定OS 目录。 目录对象是数据库中的一个对象,它是使用create directory 语句建立的对象,而不是操作系统中的某个目录,但它指向操作系统中的某个目录。目录对象不是方案对象,它不属于某个用户,而是属于数据库。 a. 先在操作系统中创建两个目录,如e:\dump1 和e:\dump2 。这两个目录都可以保存导出文件和日志文件。 b. SYS 用户创建两个directory 对象,如dirdp1 和dirdp2 ,用于指向这两个操作系统目录,并为运行expdp 和impdp 实用程序数据库用户,如SCOTT 和pf 用户授权使用这两个directory 对象的权限。导出文件、日志文件就保存在dirdp1 和dirdp2 所指的操作系统目录中。最后,可以从dba_directories 数据字典视图中查询所创建的directory 对象。 SQL> create directory dirdp1 as 'e:\dump1'; SQL> create directory dirdp2 as 'e:\dump2'; SQL> grant read, write on directory dirdp1 to SCOTT; SQL> grant read, write on directory dirdp2 to SCOTT; SQL> select * from dba_directories where directory_name like 'DIR%'; 2 、使用expdp 导出数据 使用expdp 的命令行语法是: expdp username/password parameter [, parameter2,...] 参数tablespace 用于指定要导出的表空间列表,语法如下:

oracle使用数据泵导出和导入

使用数据泵导出和导入 几乎所有DBA都熟悉oracle的导出和导入实用程序,它们将数据装载进或卸载出数据库,在oracle database 10g和11g中,你必须使用更通用更强大的数据泵导出和导入(Data Pump Export and Import)实用程序导出和导入数据。 以前的导出和导入实用程序在oracle database 11g中仍然可以使用,但是Oracle强烈建议使用数据泵(Data Pump)技术,因为它提供了更多的高级特性。例如,你可以中断导出/导入作业,然后恢复它们;可以重新启动已失败的导出和导入作业;可以重映射对象属性以修改对象;可以容易地从另一个会话中监控数据泵的作业,甚至可以在作业过程中修改其属性;使用并行技术很容易快速移动大量的数据;因为oracle提供了针对数据泵技术的API,所以可以容易地在PL/SQL 程序中包含导出/导入作业;可以使用更强大的可移植表空间特性来快速移植大量的数据,甚至可在不同操作系统平台之间移动。 与旧的导出和导入实用程序不同,数据泵程序有一组可以在命令行中使用的参数以及一组只能以交互方式使用的特殊命令,你可以通过在命令行中输入expdp help = y 或者impdp help = y快速获取所有数据泵参数及命令的概述。 一.数据泵技术的优点 原有的导出和导入技术基于客户机,而数据泵技术基于服务器。默认所有的转储,日志和其他文件都建立在服务器上。以下是数据泵技术的主要优点: 1.改进了性能 2.重新启动作业的能力 3.并行执行的能力 4.关联运行作业的能力 5.估算空间需求的能力 6.操作的网格方式 7.细粒度数据导入功能 8.重映射能力 二.数据泵导出和导入的用途 1.将数据从开发环境转到测试环境或产品环境 2.在不同的操作系统平台上的oracle数据库直接的传递数据 3.在修改重要表之前进行备份 4.备份数据库 5.把数据库对象从一个表空间移动到另一个表空间 6.在数据库直接移植表空间 7.提取表或其他对象的DDL 注意:数据库不建立完备的备份,因为在导出文件中没有灾难发生时的最新数据。但是对于较小的数据库和个别的表空间的导出,数据导出仍然是一个可行的备份工具。 三.数据泵的组成部分

数据库数据导入导出方法

数据库数据导入导出方法 1逻辑导入 备份方法: 在主机服务器的DOS提示符下输入: EXP USERID=ZLHIS/HIS BUFFER=4096 FILE=D:\20040101.dmp LOG=D:\20040101.log OWNER=(ZLHIS) ROWS=Y INDEXES =Y CONSTRAINTS =Y GRANTS=Y DIRECT=N 表示只导出zlhis用户的数据对象 Buffer:该值越大,导出的时间略短。 File:表示导出的dmp的文件路径 Log:表示导出的日志文件路径 其余参数可以通过exp help=y查询。 2逻辑导出 在主机服务器的DOS提示符下输入: IMP USERID=ZLHIS/HIS FROMUSER=(ZLHIS) TOUSER=(ZLHIS) BUFFER=30720 FILE=D:\20040101.dmp LOG=D:\20040101.log ROWS=Y INDEXES=Y CONSTRAINTS =Y GRANTS =Y SHOW=N COMMIT =Y IGNORE=Y 表示只导入zlhis用户的数据对象 Buffer:该值越大,导入的时间略短。 File:表示导入的dmp的文件路径 Log:表示导入的日志文件路径 Ignore:Oracle在恢复数据的过程中,当恢复某个表时,该表已经存在,就要根据ignore 参数的设置来决定如何操作。若ignore=y,Oracle不执行CREATE TABLE语句,直接将数据插入到表中,如果插入的记录违背了约束条件,比如主键约束,则出错的记录不会插入,但合法的记录会添加到表中。若ignore=n,Oracle不执行CREATE TABLE语句,

教你如何使用expdp和impdp备份和恢复数据库

教你如何使用expdp和impdp命令备份和恢复Oracle数据库

create directory aa as 'D:\aa'; grant read,write on directory aa to king2; expdp king2/king2test02 schemas=king2 directory=aa dumpfile=expuser.dmp 第一步:创建一个目录(也就是文件路径)来装导出的dmp文件 方法:操作系统—开始—运行输入“cmd”进入dos界面输入“sqlplus/nolog”按回车如下图: 连接数据库,输入:conn sys/king2test02 as sysdba(注意sys用户一定要用sysdba角色登录哦) 回车如下图:

接着,创建DIRECTORY create directory dir_dp as 'D:\oracle\dir_dp'; 这里要注意,路径D:\oracle\dir_dp一定要是系统已经存在的了,如果该路径不存在,下边的导出将会提示 正确创建了路径的显示如下:

第二步:授权(授予要导入数据的用户对该目录(路径)进行读和写的权限),还是在连接数据库的状态下输入: Grant read,write on directory dir_dp to lttfm; 如下图:

就完成了,关闭窗口,重新进入dos界面就可以进行备份了; 第三步:执行导出 expdp lttfm/lttfmfgisdb schemas=lttfm directory=dir_dp dumpfile =expdp_test1.dmp logfile=expdp_test1.log; 连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1 With the Partitioning, OLAP and Data Mining options 启动"LTTFM"."SYS_EXPORT_SCHEMA_01": lttfm/********fgisdb sch ory=dir_dp dumpfile =expdp_test1.dmp logfile=expdp_test1.log; */ 备注: 1、directory=dir_dp必须放在前面,如果将其放置最后,会提示ORA-39002: 操作无效 ORA-39070: 无法打开日志文件。 ORA-39087: 目录名DATA_PUMP_DIR; 无效2、在导出过程中,DATA DUMP 创建并使用了一个名为SYS_EXPORT_SCHEMA_01的对象,此对象就是DATA DUMP导出过程中所用的JOB名字,如果在执行这个命令时如果没有指定导出的JOB名字那么就会产生一个默认的JOB名字,如果在导出过程中指定JOB 名字就为以指定名字出现 如下改成: expdp lttfm/lttfmfgisdb schemas=lttfm directory=dir_dp dumpfile =expdp_test1.dmp logfile=expdp_test1.log,job_name=my_job1; 3、导出语句后面不要有分号,否则如上的导出语句中的job表名为‘my_job1;’,而不是my_job1。因此导致expdp lttfm/lttfm attach=lttfm.my_job1执行该命令时一直提示找不到job表

Oracle数据泵备份与恢复实例

SQL> conn / as sysdba 已连接。 SQL> create directory mydump as 'd:\oracle\mydump'; SQL> Grant read,write on directory mydump to test; 授权成功。 创建目录d:\oracle\mydump。 C:\Users\David>expdp test/test directory=mydump dumpfile=test.dmp logfile=test.l og tables=t1 Export: Release 11.2.0.1.0 - Production on 星期三7月16 22:52:58 2014 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. 连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Produc tion With the Partitioning, OLAP, Data Mining and Real Application Testing options 启动"TEST"."SYS_EXPORT_TABLE_01": test/******** directory=mydump dumpfile=test .dmp logfile=test.log tables=t1 正在使用BLOCKS 方法进行估计... 处理对象类型TABLE_EXPORT/TABLE/TABLE_DATA 使用BLOCKS 方法的总估计: 64 KB 处理对象类型TABLE_EXPORT/TABLE/TABLE 处理对象类型TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS . . 导出了"TEST"."T1" 5.507 KB 5 行 已成功加载/卸载了主表"TEST"."SYS_EXPORT_TABLE_01" ****************************************************************************** TEST.SYS_EXPORT_TABLE_01 的转储文件集为: D:\ORACLE\MYDUMP\TEST.DMP 作业"TEST"."SYS_EXPORT_TABLE_01" 已于22:53:09 成功完成 需要将原表删除。 C:\Users\David>impdp test/test directory=mydump dumpfile=test.dmp tables=t1 Import: Release 11.2.0.1.0 - Production on 星期三7月16 23:00:28 2014 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. 连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Produc

实例:使用expdpimpdp导入导出数据库

实例:使用expdp/impdp导入导出数据库 1.创建数据导出权限的目录 (注意oracle用户一定要有此目录的读写权限): SQL> create directory MY_DIR as '/home/dump'; 公司数据库都已经创建了对应的DIR目录,不建议继续创建新的,如有疑问可以联系我: 可以使用以下命令查看数据库中是否存在DIR目录 SQL> col DIRECTORY_PATH for a50; SQL> set linesize 150; SQL> select * from dba_directories; 查看目录及权限 --查看目录及权限 SQL> SELECT privilege, directory_name, DIRECTORY_PATH FROM user_tab_privs t, all_directories d WHERE t.table_name(+) = d.directory_name ORDER BY 2, 1; 2.给该数据导出用户授予该目录的读写权限 SQL> grant read,write on DIRECTORY MY_DIR to user_name; (其中user_name为用户名称,本示例中user_name为zdyw2) 即: SQL> grant read,write on DIRECTORY MY_DIR to zdyw2; 3.使用expdp导出源数据库 expdp zdyw2/zdyw185test2 schemas=zdyw2 DIRECTORY=dir CONTENT=all DUMPFILE=zdywyf20121109_2.dmp logfile=zdywyf_exp20121109_2.log 其中: 1、zdyw2为导出数据库的用户,zdyw185test2为导出数据库的密码; 2、schemas为导出的用户的schemas,普通请款下为该用户名称; 3、Direcotry,DIR为导出文件的存放目录,此目录需要zdyw2有对应的操作权限, 4、zdywyf20121109_2.dmp为导出的文件名称,

推荐下载-Oracle 数据泵导出和导入 精品

Oracle10g数据导入导出 简介 Oracle 10g引入了DATA PUMP提供的是一种基于服务器的数据提取和恢复的实用程序,DATA PUMP在体系结构和功能上与传统的EXPORT和IMPORT实用程序相比有了显著的提升。DATA PUMP允许您停止和重启作业,查看运行的作业的状态,及对导入和导出的数据做限制。 注意:数据泵文件与传统的EXP/IMP数据转储文件是不兼容的。 以下是DATA PUMP的几个优点介绍: 1.数据泵(Data Pump)的所有工作都有数据库实例来完成,数据库可以并行来处理这些工作,不仅可以通过建立多个数据泵工作进程来读/写正在被导出/导入的数据,也可以建立并行I/O服务器以更快地读取或插入数据,从而,单进程瓶颈被彻底解决。 2.通过数据泵,以前通过EXP/IMP主要基于Client/Server的逻辑备份方式转换为服务器端的快速备份,数据泵主要工作在服务器端,可以通过并行方式快速装入或卸载数据,而且可以在运行过程中调整并行的程度,以加快或减少资源消耗。 3.数据泵通过新的API来建立和管理,这些新的工作主要由DBMS_DATAPUMP来完成。新的导入/导出工具完全成为了一个客户端应用,通过IMPDP/EXPDP执行的命令实际上都是在调用Server端的API在执行操作,所以一旦一个任务被调度或执行,客户端就可以退出连接,任务会在server 端继续执行,随后通过客户端实用程序从任何地方检查任务的状态和进行修改创建DIRECTORY DATA PUMP要求为将要创建和读取的数据文件及日志文件创建目录,这个参数是用来定义一个目录,前面已经提到数据泵主要在Server端工作,导出文件需要写出到Server端本地目录,这个DIRECTORY就是对应的Server 端的目录。将要访问数据泵文件的用户必须要拥有该目录的读/写权限。 注意:在开始操作之前要验证外部目录是否存在,并且下达create directory 命令的用户需要拥有create any directory的系统权限。 下面给出一个创建名为TEST_EXPDP的目录并授予hs_user,hs_his用户访问此目录读/写权限。

Oracle11G数据泵导入导出-changxf-20140926

Oracle11G数据库命令: 1进入SQLPLUS状态 1、打开【附件】-【命令提示符】,以系统管理员的身份运行; 2、输入sqlplus / as sysdba; 3、回车执行语句,进入数据库; 2用户管理 【说明】:在SQLPLUS状态下执行。 2.1创建用户 CREATE USER yonghuming IDENTIFIED BY mima DEFAULT TABLESPACE NNC_DATA01 TEMPORARY TABLESPACE temp; 说明: 1、“yonghuming”——用户名称; 2、“mima”——用户密码; 2.2授权用户:(一般授权) GRANT connect,dba to yonghuming; 说明: 1、“yonghuming”——用户名称; 2.3授权用户:(数据泵模式) GRANT read,write on directory expdir to yonghuming; 说明: 1、“expdir”——数据泵创建的目录名称; 2、“yonghuming”——用户名称;

2.4查看用户 select username from dba_users; 2.5删除用户 drop user yonghuming(用户名)cascade; 3数据泵操作 3.1创建目录 1、在数据库实例上创建directory(sqlplus模式下执行) CREATE OR REPLACE DIRECTORY 目录名称 AS '数据库服务器上的一个目录' 例如 CREATE OR REPLACE DIRECTORY expdir AS 'd:\'; 红字为要命名的目录名称,as后面为实际路径(windows环境),把需要导入的数据直接放入d盘目录下即可。 2、创建后可以用这个命令来查看已存在的目录 (查看所有) select * from dba_directories; (查看制定目录名所在目录) select * from dba_directories WHERE DIRECTORY_name='expdir'; 3.2创建用户并授权 CREATE USER yonghuming IDENTIFIED BY mima DEFAULT TABLESPACE NNC_DATA01 TEMPORARY TABLESPACE temp; GRANT read, write ON DIRECTORY expdir TO orcle; 1、红字“expdir”为创建的目录;

数据库-Oracle数据泵跨版本问题--嘉为科技

Oracle 10g 推出数据泵工具,提高数据迁移的效率,Oracle 10g刚推出的时候,跨版本的问题并不明显,而等到11.2推出之后,数据泵同样存在处理跨版本的问题。 Oracle原始的EXP/IMP导出、导入工具的跨版本特性对于从Oracle8、9版本就接触数据库的人来说,应该是基本常识了——低版本导出,目标版本导入。而对于数据泵来说,很多人并没有意识到这一点,事实上数据泵如果从低版本导出,高版本导入是不需要额外处理的,而大多数的需求不是版本相同,就是版本升级,因此很多人没有注意到数据泵的版本问题。 如果数据泵从高版本导出,低版本导入时,如果不加处理,就会出现下面的错误: [oracle@rhlinux5 ~]$ expdp test/test directory=expdir dumpfile=test.dmp TABLES=tab1 Export: Release 11.2.0.3.0 - Production ON Mon Apr 27 09:50:10 2013 Copyright (c) 1982, 2011, Oracle AND/OR its affiliates. ALL rights reserved. Connected TO: Oracle DATABASE 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production WITH the Partitioning, OLAP, DATA Mining AND REAL Application Testing options Starting "TEST"."SYS_EXPORT_TABLE_01": test/******** dumpfile=test.dmp tables=tab1 Estimate in progress using BLOCKS method... Processing object type TABLE_EXPORT/TABLE/TABLE_DATA

ORACLE EXPDP命令使用详细

ORACLE EXPDP命令使用详细 1. DIRECTORY 指定转储文件和日志文件所在的目录 DIRECTORY=directory_object Directory_object用于指定目录对象名称.需要注意,目录对象是使用CREATE DIRECTORY语句建立的对象,而不是OS目录 Expdp scott/tiger DIRECTORY= DMP DUMPFILE=a.dump Sql>create or replace directory dmp as 'd:/dmp' expdp zftang/zftang@zftang directory=dmp dumpfile=test.dmp content=metadata_only 2. CONTENT 该选项用于指定要导出的内容.默认值为ALL CONTENT={ALL | DATA_ONLY | METADATA_ONLY} 当设置CONTENT为ALL时,将导出对象定义及其所有数据.为DATA_ONLY 时,只导出对象数据,为METADATA_ONLY时,只导出对象定义 expdp zftang/zftang@zftang directory=dmp dumpfile=test.dmp content=metadata_only ----------只导出对象定义 expdp zftang/zftang@zftang directory=dmp dumpfile=test.dmp content=data_only ----------导出出所有数据 3. DUMPFILE DUMPFILE用于指定转储文件的名称,默认名称为expdat.dmp DUMPFILE=[directory_object:]file_name [,….]

Oracle数据的导入导出(数据泵的使用)

Oracle数据泵的使用 使用数据泵导出数据 1、连接Oracle数据库 SQL> conn / as sysdba 已连接。 2、创建一个操作目录 SQL> create directory dump_dir as 'e:\dump'; 注意同时需要使用操作系统命令在硬盘上创建这个物理目录。 目录已创建。 3、使用以下命令创建一个导出文件目录 hr用户操作dump_dir目录的权限, SQL>grant read,write on directory my_dir to scott; 授权成功。 4、使用命令expdp导出数据(可以按照用户模式导出、按照表、按照表空间导出和全库导出) C:\>expdp scott/tiger directory=dump_dir dumpfile=20090517scotttab.dmp tables=dept,emp s= Export: Release 10.2.0.1.0 - Production on 星期三, 18 6月, 2008 15:49: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 启动"SCOTT"."SYS_EXPORT_TABLE_01": scott/******** directory=dump_dir dumpfile=20080601.dmp table dept,emp 正在使用BLOCKS 方法进行估计... 处理对象类型TABLE_EXPORT/TABLE/TABLE_DA TA 使用BLOCKS 方法的总估计: 128 KB 处理对象类型TABLE_EXPORT/TABLE/TABLE 处理对象类型TABLE_EXPORT/TABLE/INDEX/INDEX 处理对象类型TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT 处理对象类型TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT . . 导出了"SCOTT"."DEPT" 5.656 KB 4 行

用数据泵方法迁移oracle11gR2

Oracle11g 数据库迁移 在Oracle11g中,exp默认不能导出空表。用传统的exp,imp进行数据库迁移会比较麻烦,不过可以使用expdp、impdp进行迁移。现对oracle11g数据库迁移进行介绍: 1.安装好数据库后可以通过对数据库参数进行修改,使其能通过exp导出导出空表 1)、Oracle11g默认对空表不分配segment,故使用exp导出Oracle11g 数据库时,空表不会导出。 2)、设置deferred_segment_creation 参数为FALSE后,无论是空表还是非空表,都分配segment。 在sqlplus中,执行如下命令: SQL>alter system set deferred_segment_creation=false; 查看: SQL>show parameter deferred_segment_creation; 如果在执行建库脚本后进行修改该参数,只对后面新增的表产生作用,对之前建立的空表不起作用。 2.通过使用数据泵的方法进行导入导出

2008 to 2008 把32位windows 2008的Oracle11gR2数据库迁移到另一台32位windows 2008的Oracle11gR2数据库中,可以使用expdp、impdp进行迁移数据。 如:A和B均为windows服务器,数据库用户为ccense,把A服务器的数据迁移到B服务器中 在A服务器操作: 1、 SQL>conn / as sysdba SQL> create directory expdp_dir as 'D:\databack '; SQL> grant read,write on directory expdp_dir to ccense; 注:命令行中黑色粗体可以进行更改,下同 2、在windows2008目录中创建目录D:\databack,如果不创建将出现如下报错: 3、在DOS命令窗口导出: 在A服务器的DOS窗口输入如下命令:

数据泵参数详解

Oracle10g数据泵impdp参数详解 2011-6-30 12:29:05 导导入命令Impdp ?ATTACH 连接到现有作业, 例如ATTACH [=作业名]。 ?CONTENT 指定要加载的数据, 其中有效关键字为: (ALL), DATA_ONLY 和 METADATA_ONLY。 ?DIRECTORY 供转储文件, 日志文件和 sql 文件使用的目录对象。 ?DUMPFILE 要从 (expdat.dmp) 中导出的转储文件的列表,例如 DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp。 ?ENCRYPTION_PASSWORD 用于访问加密列数据的口令关键字。此参数对网络导入作业无效。 ?ESTIMATE 计算作业估计值, 其中有效关键字为:(BLOCKS) 和 STATISTICS。 ?EXCLUDE 排除特定的对象类型, 例如EXCLUDE=TABLE:EMP。 ?FLASHBACK_SCN 用于将会话快照设置回以前状态的 SCN。 ?FLASHBACK_TIME 用于获取最接近指定时间的 SCN 的时间。 ?FULL 导出整个数据库 (N)。 ?HELP 显示帮助消息 (N)。 ?INCLUDE 包括特定的对象类型, 例如INCLUDE=TABLE_DATA。 ?JOB_NAME 要创建的导出作业的名称。 ?LOGFILE 日志文件名 (import.log)。

?NETWORK_LINK 链接到源系统的远程数据库的名称。?NOLOGFILE 不写入日志文件 (N)。?PARALLEL 更改当前作业的活动 worker 的数目。 ?PARFILE 指定参数文件。?QUERY 用于导出表的子集的谓词子句。 ?REMAP_DATAFILE 在所有 DDL 语句中重新定义数据文件引用。 ?REMAP_SCHEMA 将一个方案中的对象加载到另一个方案。?REMAP_TABLESPACE 将表空间对象重新映射到另一个表空间。?REUSE_DATAFILES 如果表空间已存在, 则将其初始化 (N)。?SCHEMAS 要导入的方案的列表 (登录方案)。?SKIP_UNUSABLE_INDEXES 跳过设置为无用索引状态的索引。?SQLFILE 将所有的 SQL DDL 写入指定的文件。?STATUS 在默认值 (0) 将显示可用时的新状态的情况下,要监视的频率 (以秒计) 作业状态。?STREAMS_CONFIGURATION 启用流元数据的加载 ?TABLE_EXISTS_ACTION 导入对象已存在时执行的操作。有效关键字: (SKIP), APPEND, REPLACE 和 TRUNCATE。 ?TABLES 标识要导出的表的列表 - 只有一个方案。?TABLESPACES 标识要导出的表空间的列表。?TRANSFORM 要应用于适用对象的元数据转换。 有效转换关键字为: SEGMENT_ATTRIBUTES, STORAGE, OID 和 PCTSPACE。?TRANSPORT_DATAFILES 按可传输模式导入的数据文件的列表。

oracle数据泵应用及常见问题

Oracle数据泵应用及常见问题 1、Oracle数据泵简介 Oracle数据泵(Data Pump)是Oracle10G引进的新技术,在10g之前,传统的导出和导入分别使用EXP工具和IMP工具,从10g开始,不仅保留了原有的EXP和IMP工具,还提供了数据泵导出导入工具EXPDP和IMPDP。经相关测试,Oracle数据泵方式进行数据导入导出要比以前的IMP/EXP快10倍左右,给大数据量的数据库导入导出提供了方便。 数据泵方式与IMP/EXP的主要区别在于EXP和IMP是客户段工具程序,它们既可以在可以客户端使用,也可以在服务端使用。而EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用;IMP只适用于EXP导出文件,不适用于EXPDP 导出文件;IMPDP只适用于EXPDP导出文件,而不适用于EXP导出文件。 2、Oracle数据泵命令及主要参数 a)EXPDP/IMPDP使用前准备 运行命令前必须建立工作目录并赋权限,然后执行命令,具体步骤如下: a1在数据库所在机器上建立工作目录,如:d:\dp。 a2用数据库DBA用户SYS登录数据库,执行语句如下语句: create directory dump_dir as ' d:\dp '; grant read, write on directory dump_dir to db_user;(此处dump_dir 是第上面语句中工作目录名称,非实际目录名称,db_user是数据库用户名)。 a3运行EXPDP命令。 b)EXPDP主要参数 a1DIRECTORY:导出数据的目录(目录是上面的设定的目录dump_dir) a2DUMPFILE:导出的文件名。 a3VERSION:以哪个版本导出数据,如果在不同的版本间导出导入数据,这个参数非常有用,例如将Oracle11G数据导入到Oracle10G(10.2.0.1.0)的数据库中,参数应写为VERSION=10.2.0.1.0,否则无法导入到低版本的数据库中。

数据泵详解及案例

数据泵详解及案例 北京神州泰岳软件股份有限公司2011年5月12日

文档属性 文档变更 文档送呈

目录 1前言 (5) 2准备工作 (6) 3导出常见需求案例 (7) 3.1全库导出 (7) 3.1.1全库导出最简写法 (7) 3.1.2全库并行导出到多个文件 (7) 3.1.3全库导出到多个路径 (7) 3.2按schema导出 (8) 3.3按表导出 (8) 3.3.1导出普通表 (8) 3.3.2导出表分区 (8) 3.4导出表空间 (9) 3.5部分导出(EXCLUDE与INCLUDE) (9) 3.5.1屏蔽部分schema (9) 3.5.2屏蔽部分对象 (9) 3.5.3屏蔽统计信息 (10) 3.5.4INCLUDE对象 (10) 3.6带查询条件导出(QUERY) (10) 3.7估算导出数据大小 (10) 3.8只导出元数据或数据 (11) 3.9其他可选参数 (11) 3.9.1JOB_NAME参数 (11) 3.9.2LOGFILE参数 (11) 3.9.3VERSION参数 (11) 3.9.4STA TUS参数 (12) 3.9.5PARFILE参数 (12) 3.9.6SAMPLE参数 (12)

4导入常见需求案例 (13) 4.1导入到不同SCHEMA中 (13) 4.2导入到不同表空间中 (13) 4.3将元数据以sql形式写入文本文件 (14) 4.4导入时使用新存储属性 (14) 4.5导入表存在时的处理 (14) 5管理维护任务 (15) 6重建数据泵工具 (17)

1 前言 Oracle 10g引入了最新的数据泵(Data Dump)技术,使DBA或开发人员可以将数据库元数据(对象定义)和数据快速移动到另一个oracle数据库中。 数据泵导出导入(EXPDP和IMPDP)的作用: 1)实现逻辑备份和逻辑恢复。 2)在数据库用户之间移动对象。 3)在数据库之间移动对象 4)实现表空间搬移。 数据泵导出导入与传统导出导入的区别:在10g之前,传统的导出和导入分别使用EXP 工具和IMP工具,从10g开始,不仅保留了原有的EXP和IMP工具,还提供了数据泵导出导入工具EXPDP和IMPDP.使用EXPDP和IMPDP时应该注意的事项;EXP和IMP是客户端工具程序,它们既可以在可以客户端使用,也可以在服务端使用。 EXPDP和IMPDP是服务端的工具程序,他们只运行在ORACLE服务端,不受连接会话是否断开的影响。数据泵与传统导入导出产生的dump文件互不兼容,即使用EXPDP导出的文件,无法使用IMP导入,而以EXP导出的文件,无法用IMPDP导入。 在实际工作中,值得注意的是源库字符集尽量与目标库字符集相同。 本文档适用于Oracle10.2版本的数据泵。

Oracle数据泵同步数据方式简要步骤

Oracle数据泵同步数据方式简要步骤1、Oracle数据泵简介 Data Pump 反映了整个导出/导入过程的完全革新。不使用常见的 SQL 命令,而是应用专有 API(direct path api etc) 来以更快得多的速度加载和卸载数据。 以下步骤为从容灾数据库(源端)上,按照用户或者数据表的模式将数据同步到测试数据库(目标端)上的简要步骤。 应用数据泵做数据同步的前提条件是: 1、在源端数据库主机上有足够大的空间存储导出的数据 文件,要求提前对导出的数据文件大小做评估,看预 留多少空间。 2、在目标端主机上也要保证有足够的空间存放导入的数 据文件 3、源端和目标端导入导出所用的数据库用户及密码(明 文) 2、Oracle数据泵数据表同步方式和用户同步方式 2.1.指定数据表同步方式(导出、导入) 以同步客服测试数据库为例: 源端数据库主机:10.220.33.112(存放目录:/dataapp1/expdp) 目标端数据库主机:10.220.64.71(存放目录:/oracle/imp)

导出: 1.滤出需要同步的数据表列表,评估需要同步的表大小,在源端 及目标端主机上留出所需的数据文件的空间。 2.登录(oracle/oracle)源端数据库主机(10.220.3 3.112),执行: $sqlplus / as sysdba 登录数据库,执行如下语句: >create directory dpdata2 as '/dataapp1/expdp '; >grant read, write on directory dpdata2 to kf; 3.按照表名导出的语句如下: $expdp kf/kf@rzkfdb1new tables=co_task,co_task_log,……directory=dpdata2 dumpfile=par%U.dmp parallel=15; 参数说明:tables------要导出的数据表名 Directory------数据文件导出的路径 Dumpfile---------导出的数据文件命名%为通配符,按照导出的进程数递增 Parallel----------数据泵支持多进程导出方式 4.此语句执行后观察在对应的目录是否有*.dmp类别的文件生成导入: 1.数据泵导入操作是在导出操作基础上进行的,在导入操作之前, 需要在目标数据库上建立与源端相同的表空间、schema等元素。 2.登录(oracle)目标端10.220.64.71数据库主机,执行 $Sqlplus / as sysdba 登录数据库,执行如下语句: >create directory dpdata5 as '/oracle/imp'; >grant read, write on directory dpdata2 to kf; 3.把导出的*.dmp文件,传递到导入数据目录/oracle/imp,执行: $impdp kf/kf@kfcsdb directory=dpdata5 dumpfile=par%U.dmp parallel=15 remap_tablespace=TS_KF:KFCSDB_DATA_TBS01,TS_KF_LOG:KFCSDB_DATA_TBS01;

相关文档
最新文档