首页 oracle逻辑导入导出

oracle逻辑导入导出

举报
开通vip

oracle逻辑导入导出移动数据课程目标 学完本课后,应能完成以下工作: 描述移动数据的方式 创建和使用目录对象 使用SQL*Loader加载非OracleDB(或用户文件)中的数据 使用外部表并通过与平台无关的文件移动数据 说明Oracle数据泵的通用体系结构 使用数据泵导出和导入在OracleDB之间移动数据移动数据:通用体系结构DBMS_DATAPUMP数据/元数据移动引擎移动数据:通用体系结构主要功能组件:DBMS_DATAPUMP:包括高速导出与导入实用程序的API,可用于成批地移动数据和元数据。直接路径API(DPAPI):O...

oracle逻辑导入导出
移动数据课程目标 学完本课后,应能完成以下工作: 描述移动数据的方式 创建和使用目录对象 使用SQL*Loader加载非OracleDB(或用户文件)中的数据 使用外部表并通过与平台无关的文件移动数据 说明Oracle数据泵的通用体系结构 使用数据泵导出和导入在OracleDB之间移动数据移动数据:通用体系结构DBMS_DATAPUMP数据/元数据移动引擎移动数据:通用体系结构主要功能组件:DBMS_DATAPUMP:包括高速导出与导入实用程序的API,可用于成批地移动数据和元数据。直接路径API(DPAPI):OracleDatabase11g支持直接路径API接口,可在卸载和加载时将数据转换与语法分析工作量降至最低。DBMS_METADATA:Worker进程使用该组件卸载或加载所有元数据。数据库对象定义是使用XML存储的,而不是SQL。外部表API:使用ORACLE_DATAPUMP和ORACLE_LOADER访问驱动程序,可将数据存储在外部表中(即与平台无关的文件中)。使用SELECT语句可读取外部表,好像外部表存储在OracleDB中一样。SQL*Loader:与外部表集成在一起,因此可为外部表访问参数提供自动移植加载程序控制文件的功能。expdp和impdp:瘦客户机层,可通过调用DBMS_DATAPUMP程序包启动和监视数据泵操作。其它客户机:得益于这个基础结构的应用程序(如DatabaseControl、复制应用程序、可传输表空间应用程序和用户应用程序)。SQL*Plus也可用作DBMS_DATAPUMP的一个客户机,但只提供实时操作的状态查询。目录对象:概览目录对象:概览目录对象是一些代表服务器文件系统上的物理目录的逻辑结构。这些对象包含特定操作系统目录的位置。此目录对象名可用在EnterpriseManager中,所以不需要对目录路径说明进行硬编码。因此文件管理可获得更大的灵活性。目录对象由SYS用户拥有。目录名在数据库中是唯一的,因为所有目录都位于一个名称空间(即SYS)中。为数据泵指定文件位置时需要用到目录对象,因为数据泵访问的文件在服务器上,而不是在客户机上。在EnterpriseManager中,选择“Schema>DatabaseObjects>DirectoryObjects( 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 >数据库对象>目录对象)”。要编辑或删除一个目录对象,请选择该对象,然后单击相应按钮。创建目录对象43215创建目录对象1. 在“DirectoryObjects(目录对象)”页中,单击“Create(创建)”按钮。2. 输入目录对象名称及目录对象映射到的操作系统路径。应先创建操作系统目录,之后才能使用这些目录。通过单击“TestFileSystem(测试文件系统)”按钮可测试这一点。为了进行测试,请提供主机登录身份证明(即有权对这个操作系统目录进行操作的操作系统用户)。3. 目录对象的权限不同于服务器文件系统物理目录的操作系统权限。您可以管理各个目录对象的用户权限。这样做提高了安全级别,同时还允许对这些对象进行粒度级控制。在“Privileges(权限)”页中,单击“Add(添加)”,选择要向其授予读权限、写权限或读写权限的用户。4. 单击“ShowSQL(显示SQL)”查看基础语句。完成后单击“Return(返回)”。5. 单击“OK(确定)”创建对象。SQL*Loader:概览SQL*Loader:概览SQL*Loader可将外部文件中的数据加载到OracleDB表中。它具有一个功能强大的数据分析引擎,因此对数据文件中数据的格式没有什么限制。SQL*Loader使用以下文件:输入数据文件:SQL*Loader从控制文件中指定的一个或多个文件(或操作系统的文件副本)中读取数据。从SQL*Loader的角度看,数据文件中的数据是按记录组织的。特定数据文件可以为固定记录格式、可变记录格式或流记录格式。可通过控制文件中的INFILE参数指定记录格式。如果未指定记录格式,默认格式为流记录格式。控制文件:控制文件是一个文本文件,它是使用SQL*Loader可识别的语言编写的。控制文件指示SQL*Loader在何处查找数据、如何分析和解释数据,以及在何处插入数据等。尽管不能精确地定义,但可认为控制文件包含三个段。第一段包含如下面所示的会话范围信息:全局选项,如输入数据文件名和要跳过的记录用于指定输入数据位置的INFILE子句要加载的数据SQL*Loader:概览(续)第二个段包括一个或多个INTOTABLE块。其中每一个块都包含要在其中加载数据的表的信息(如表名和表列)。第三个段是可选段,如果该段存在,则包含输入数据。日志文件:SQL*Loader开始执行时,它会创建日志文件。如果不能创建日志文件,执行就会终止。日志文件包含加载操作的详细概要,包括加载过程中发生的任何错误的说明。坏文件:坏文件包含被SQL*Loader或OracleDB拒绝的记录。当输入格式无效时,SQL*Loader就会拒绝数据文件记录。SQL*Loader接受待处理的某一数据文件记录后,会将该数据文件记录发送到OracleDB,以便可作为一行插入到表中。如果OracleDB确定该行有效,就会将该行插入到表中。如果确定该行无效,就会拒绝该记录,此时SQL*Loader会将该记录置于坏文件中。放弃文件:仅当需要这种文件并且指定了应启用放弃文件时,才会创建这种文件。放弃文件中包含因不符合控制文件中指定的任何记录选择 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 而被过滤掉的记录。有关SQL*Loader的详细信息,请参阅《Oracle数据库实用程序》指南。使用SQL*Loader加载数据使用SQL*Loader加载数据使用“LoadDatafromUserFiles(从用户文件加载数据)”向导,可将平面文件中的数据加载到OracleDB中。要显示这个向导,请选择EnterpriseManager中的“DataMovement>MoveRowData>LoadDatafromUserFiles(数据移动>移动行数据>从用户文件加载数据)”。SQL*Loader控制文件 SQL*Loader控制文件通知SQL*Loader以下信息: 要加载数据的位置 数据格式 配置详细资料: 内存管理 记录拒绝 中断的加载处理详细资料 数据操纵详细资料SQL*Loader控制文件SQL*Loader控制文件是一个文本文件,其中包含数据定义语言(DDL)指令。DDL用来控制SQL*Loader会话的以下方面:SQL*Loader可从何处找到要加载的数据SQL*Loader将处理怎样的数据格式SQL*Loader在加载数据时采用哪些配置(包括内存管理、选择与拒绝标准、中断的加载处理等等)SQL*Loader如何处理正在加载的数据SQL*Loader控制文件(续)1 --Thisisasamplecontrolfile2LOADDATA3INFILE’SAMPLE.DAT’4BADFILE’sample.bad’5DISCARDFILE’sample.dsc’6APPEND7INTOTABLEemp8WHEN(57)=’.’9TRAILINGNULLCOLS10(hiredateSYSDATE, deptnoPOSITION(1:2)INTEGEREXTERNAL(3) NULLIFdeptno=BLANKS, jobPOSITION(7:14)CHARTERMINATEDBYWHITESPACE NULLIFjob=BLANKS"UPPER(:job)", mgrPOSITION(28:31)INTEGEREXTERNAL TERMINATEDBYWHITESPACE,NULLIFmgr=BLANKS, enamePOSITION(34:41)CHAR TERMINATEDBYWHITESPACE"UPPER(:ename)", empnoPOSITION(45)INTEGEREXTERNAL TERMINATEDBYWHITESPACE, salPOSITION(51)CHARTERMINATEDBYWHITESPACE "TO_NUMBER(:sal,’$99,999.99’)", commINTEGEREXTERNALENCLOSEDBY’(’AND’%’ ":comm*100" )此控制文件示例的说明(按行号)如下所示:1. 注释可出现在文件命令段中的任何位置,但绝不能出现在数据内部。任何注释之前都有两个连字符。双连字符右边的所有文本(直至行尾)都会被忽略。2. LOADDATA语句通知SQL*Loader开始新数据加载操作。如果继续执行已中断的加载操作,请使用CONTINUELOADDATA语句。3. INFILE关键字指定要加载的数据所在的数据文件的名称。4. BADFILE关键字指定在其中放置拒绝记录的文件名。5. DISCARDFILE关键字指定在其中放置放弃记录的文件名。6. APPEND关键字是将数据加载到非空表时可使用的选项之一。要将数据加载到空表中,请使用INSERT关键字。7. 使用INTOTABLE关键字可标识表、字段和数据类型。这个关键字定义了数据文件记录与数据库表之间的关系。8. WHEN子句指定SQL*Loader加载数据之前每条记录必须匹配的一个或多个字段条件。在此示例中,SQL*Loader只在第57个字符为小数点时才加载记录。这个小数点用于分隔字段中的美元和美分,如果SAL不包含任何值,这个小数点会导致记录被拒绝。9. TRAILINGNULLCOLS子句提示SQL*Loader将记录中不存在的所有相关占位列视为空列。10. 控制文件的余下部分包含一些字段列表,用于提供正在加载的表中列格式的信息。加载 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 表块写入数HWM数据插入 常规加载 直接路径加载 使用COMMIT 使用数据保存(操作速度更快) 始终生成重做项 只在特定条件下生成重做项 强制所有约束条件 只强制PRIMARYKEY、UNIQUE和NOTNULL 触发INSERT触发器 不触发INSERT触发器 可加载到聚簇表中 不加载到集群中 允许其他用户在加载操作过程中修改表 阻止其他用户在加载操作过程中更改表 在每次插入时维护索引条目 在加载结束时合并新的索引条目直接路径加载与常规路径加载的比较保存数据的方法常规路径加载执行SQL语句INSERT来填充OracleDB中的表。直接路径加载会格式化Oracle数据块,并将数据块直接写入数据库文件,从而可消除大量OracleDB开销。直接加载不与其他用户竞争数据库资源,因此通常可以用接近磁盘速度的速度加载数据。常规路径加载使用SQL处理和数据库COMMIT操作来保存数据。插入记录数组后会执行COMMIT操作。每次数据加载可能涉及多个事务处理。直接路径加载使用数据保存将数据块写入Oracle数据文件。这就是为什么直接路径加载比常规路径加载快很多的原因。数据保存与COMMIT的区别在于:在数据保存期间,仅将整个数据库块写入数据库中。这些块是在表的高水位标记(HWM)之后写入的。完成数据保存后,HWM会移动。完成数据保存后不会释放内部资源。完成数据保存不会结束事务处理。每次执行数据保存时不会更新索引。直接路径加载与常规路径加载的比较(续)注:直接路径加载与并行直接路径加载非常相似(就DML活动方面而言),因此就不另外进行比较了。事件记录更改常规路径加载可生成与任何DML语句相似的重做条目。使用直接路径加载时,如果存在以下条件,则不会生成重做项:数据库处于NOARCHIVELOG模式数据库处于ARCHIVELOG模式,但是禁用了事件记录(通过为表设置NOLOGGING属性或者在控制文件中使用UNRECOVERABLE子句,可以禁用事件记录)强制约束条件在常规路径加载过程中,所有启用的约束条件都按照在执行DML操作过程中所采用的方式强制执行。在直接路径加载过程中,按以下方式处理约束条件:构建数组时检查NOTNULL约束条件。FOREIGNKEY和CHECK约束条件处于禁用状态,加载结束时可使用控制文件中的相应命令启用这两个约束条件。FOREIGNKEY约束条件因引用了其它行或表而被禁用;CHECK约束条件因可能使用了SQL 函数 excel方差函数excelsd函数已知函数     2 f x m x mx m      2 1 4 2拉格朗日函数pdf函数公式下载 而被禁用。如果只在大型表中插入少量的行,则使用常规加载。加载期间及加载结束时会检查PRIMARYKEY和UNIQUE约束条件;如果违反这两个约束条件,就会禁用它们。触发INSERT触发器在常规加载过程中会触发WHILEINSERT触发器;这些触发器在进行直接路径加载之前已禁用,在加载结束时会重新启用。如果运行结束时,不能访问某个被引用对象,这些触发器可能会保持为禁用状态。请考虑使用常规路径加载将数据加载到带有INSERT触发器的表中。加载到聚簇表中不能使用直接加载将行加载到聚簇表中。只可使用常规路径加载来加载聚簇表。锁定直接路径加载正在进行时,其它事务处理不能更改正在加载的表。此规则的唯一例外情况发生在同时使用多个并行直接加载会话时。外部表填充 使用ORACLE_DATAPUMP访问驱动程序将数据卸载到外部文件 不修改外部表外部文件(专有格式)CREATETABLE…ASSELECT表卸载表加载INSERT…SELECT外部表填充外部表由与操作系统无关的专有格式(即直接路径API)平面文件组成。由于数据是从OracleDB提取并“卸载”到文件中的,因此,数据从Oracle内部表示法转换为等同的Oracle本机外部表示法(即DPAPI)是透明进行的。可使用CREATETABLEASSELECT命令填充外部表。创建并填充了外部表之后,就不能在外部表中添加、更新或删除行。在外部表中修改数据的任何尝试都会失败。外部表不能包含索引。使用数据泵访问驱动程序可对外部表执行卸载和加载操作。在OracleDatabase11g中,可以先压缩和加密数据,然后再将其写入转储文件集。使用外部表 可直接使用外部文件中的数据或将数据加载到另一个数据库。 只能使用ORACLE_DATAPUMP访问驱动程序读取生成的文件。 可组合来自不同源的已生成文件用于加载。来自OracleDB来自外部文件使用外部表为外部表创建的数据文件是可移动的数据文件,可用作同一数据库或不同数据库中另一外部表的数据文件。只能使用ORACLE_DATAPUMP访问驱动程序读取这些数据文件。可选择让应用程序使用SELECT命令直接访问外部表,也可选择先将数据加载到目标数据库。可在另一外部表的LOCATION子句中指定由不同外部表填充的所有数据文件。这样,可轻松地将多个源中的数据汇集到一起。唯一的限制是,所有外部表的元数据必须完全相同。使用ORACLE_DATAPUMP填充外部表CREATETABLEemp_ext(first_name,last_name,department_name)ORGANIZATIONEXTERNAL(TYPEORACLE_DATAPUMPDEFAULTDIRECTORYext_dirLOCATION('emp1.exp','emp2.exp','emp3.exp'))PARALLELASSELECTe.first_name,e.last_name,d.department_nameFROMemployeese,departmentsdWHEREe.department_id=d.department_idANDd.department_namein('Marketing','Purchasing');使用ORACLE_DATAPUMP填充外部表本示例显示如何通过这种新的外部表填充操作来帮助导出由联接的EMPLOYEES和DEPARTMENTS两个表生成的一组选择记录。由于外部表可能非常大,因此可使用并行填充操作将数据卸载到外部表。与外部表的并行查询相反,并行填充操作的并行度受到访问驱动程序可写入的并行文件的数目所限制。在特定时间点,决不能有多个并行执行服务器写入同一个文件。LOCATION子句中的文件数必须与指定的并行度匹配,因为每个输入/输出(I/O)服务器进程都需要使用自己的文件。此时,会忽略指定的任何附加文件。如果指定的并行度没有足够的文件数,就会通过降低并行度来匹配LOCATION子句中的文件数。注:有关ORACLE_DATAPUMP访问驱动程序参数的详细信息,请参阅《Oracle数据库实用程序》指南。使用ORACLE_LOADER填充外部表 CREATETABLEextab_employees (employee_idNUMBER(4), first_nameVARCHAR2(20), last_nameVARCHAR2(25), hire_dateDATE) ORGANIZATIONEXTERNAL (TYPEORACLE_LOADERDEFAULTDIRECTORYextab_dat_dir ACCESSPARAMETERS (recordsdelimitedbynewline badfileextab_bad_dir:'empxt%a_%p.bad' logfileextab_log_dir:'empxt%a_%p.log' fieldsterminatedby',' missingfieldvaluesarenull (employee_id,first_name,last_name, hire_datechardate_formatdatemask"dd-mon-yyyy“)) LOCATION('empxt1.dat','empxt2.dat')) PARALLELREJECTLIMITUNLIMITED;使用ORACLE_LOADER填充外部表ORACLE_LOADER访问驱动程序使用SQL*Loader语法来创建外部表。幻灯片中的示例显示创建的三个目录对象(extab_dat_dir、extab_bad_dir和extab_log_dir),并且这三个目录对象已映射到用户有权访问的现有操作系统目录。最佳方案提示:如果有大量的数据要加载,请为加载操作启用PARALLEL:ALTERSESSIONENABLEPARALLELDML;Oracle数据泵:概览 是一种基于服务器的用于高速移动数据与元数据的工具,Oracle数据泵具有以下特点: 可通过DBMS_DATAPUMP调用 可提供以下工具: expdp impdp 基于Web的界面 可提供以下数据访问方法: 直接路径 外部表 可与长时间运行的作业分离,然后与之重新挂接 可重新启动数据泵作业Oracle数据泵:概览使用Oracle数据泵可快速加载或卸载OracleDB的数据与元数据。数据泵基础结构是通过DBMS_DATAPUMPPL/SQL程序包调用的。因此,通过使用数据泵可构建自定义的数据移动实用程序。OracleDatabase11g提供以下工具:命令行导出与导入客户机,分别称为expdp和impdp基于Web的导出与导入界面,通过DatabaseControl可访问数据泵会自动确定要使用的数据访问方法;访问方法可以是直接路径或外部表。如果表结构允许使用直接路径加载和卸载,而且希望单个流的性能尽可能高时,数据泵会使用直接路径加载和卸载。但是,如果存在聚簇表、引用完整性约束条件、加密列或一些其它项,数据泵会使用外部表,而不是使用直接路径来移动数据。由于数据泵能够在与长时间运行的作业分离后与之重新挂接并且不影响作业本身,所以您可以监视多个位置正在运行的作业。只要元信息未受干扰,就可重新启动所有停止的数据泵作业而不会丢失数据。无论作业是自发停止的,还是由于崩溃而非自发停止的,都无关紧要。Oracle数据泵:优点 细粒度级的对象和数据选择 显式指定数据库版本 并行执行 估计导出作业占用的空间 分布式环境中的网络模式 导入过程中的重新映射功能 数据采样率和元数据压缩 在导出期间压缩数据 通过加密增强安全性 重新映射数据 能够将XMLType数据作为CLOB导出Oracle数据泵:优点EXCLUDE、INCLUDE和CONTENT参数用于细粒度级的对象和数据选择。您可以通过指定要移动对象的数据库版本(使用VERSION参数)来创建与OracleDB(支持数据泵)的前一个版本兼容的转储文件集。可以使用PARALLEL参数指定代表导出作业而运行的活动执行服务器的最大线程数。使用ESTIMATE_ONLY参数可估计导出作业占用的空间量(实际上并不执行导出)。使用网络模式可从远程数据库直接导出到转储文件集。使用指向源系统的数据库链接可完成此操作。在导入过程中,可以更改目标数据文件名、方案和表空间。此外,还可指定执行数据泵导出时,要从源数据库采样和卸载的数据的百分比。指定SAMPLE参数可完成此操作。使用COMPRESSION参数可指示是否在导出转储文件中压缩元数据,以便减少其占用的磁盘空间。如果压缩了元数据,导入过程中会自动执行解压缩。OracleDatabase11g中的数据泵增强功能在OracleDatabase11g中新增了一些功能,使您可以:在导出期间同时压缩数据和元数据,仅压缩数据,仅压缩元数据或者不压缩数据。指定以下几个方面的附加加密选项:可选择在导出期间同时加密数据和元数据,仅加密数据,仅加密元数据,不加密数据或仅加密列。可指定要在导出期间使用的特定加密算法。可指定在导出期间要用于执行加密和解密的安全类型。例如,转储文件集可能会导入到其它数据库或远程数据库,因此必须在传输过程中保障其安全性。转储文件集可能会使用OracleEncryptionWallet进行现场导入,但当OracleEncryptionWallet不可用时可能还需要进行现场外导入。使用可传输方法执行表模式导出和导入;指定在执行导入操作期间应如何处理分区表。在导出操作期间覆盖现有转储文件。在执行导入操作期间重命名表。指定即使遇到非延迟约束条件违例,也继续执行数据加载(这仅适用于使用外部表访问方法的导入操作)。指定无论是否为XMLType列定义了XMLType存储格式,都要用未压缩的CLOB格式导出这些列。在导出期间指定重新映射功能,该功能将指定列的原始值视为源,并返回将替换转储文件中原始值的重新映射值。在将数据导入到新数据库时重新映射数据。数据泵导出和导入:概览Expdp客户机转储文件集数据库源主表服务器进程转储文件集服务器进程目标Impdp客户机数据库主表数据库链接“网络模式”数据泵作业数据泵作业数据泵导出和导入:概览数据泵导出是一个实用程序,可用于将数据和元数据卸载到名为“转储文件集”的操作系统文件集。数据泵导入用于将导出转储文件集中存储的元数据和数据加载到目标系统。数据泵API会访问服务器上的相应文件,而不是在客户机上的文件。还可以使用这些实用程序直接从远程数据库导出到转储文件集,或者直接从源数据库加载目标数据库,而不使用任何干预文件。这称为“网络模式”。从只读源数据库导出数据时,此模式尤其有用。每个数据泵操作的核心是主表(MT),这是在运行数据泵作业的用户方案中创建的表。MT保留了作业的各个方面。MT是在执行基于文件的导出作业期间构建的,在最后一步中会写入转储文件集。而在基于文件的导入操作中,将MT加载到当前用户方案是第一步,用于确定所有导入对象的创建顺序。注:按 计划 项目进度计划表范例计划下载计划下载计划下载课程教学计划下载 或不按计划停止作业时,MT是数据泵重新启动功能的关键。数据泵作业正常完成时,MT会停止。数据泵实用程序:接口与模式 数据泵导出和导入接口: 命令行 参数文件 交互式命令行 EnterpriseManager 数据泵导出和导入模式: 全部 方案 表 表空间 可移动表空间数据泵实用程序:接口与模式使用下列一种接口可与数据泵导出和导入进行交互:命令行接口:用于直接在命令行上指定大多数导出参数参数文件接口:用于在参数文件中指定所有命令行参数。唯一例外是PARFILE参数。交互式命令接口:停止登录到终端,显示导出或导入提示符,在这些提示符下可输入各种命令。在使用命令行接口或参数文件接口启动导出操作过程中,按[Ctrl]+[C]可启用这种模式。另外,挂接到正在执行的作业或已停止的作业时,也能启用交互式命令模式。Web接口:在DatabaseControl主页上,单击“Maintenance(维护)”选项卡,然后从“Utilities(实用程序)”区域选择下列一个链接:“ExporttoFiles(导出到文件)”、“ImportfromFiles(从文件导入)”或“ImportfromDatabase(从数据库导入)”。数据泵导出和导入对卸载或加载数据库的不同部分提供不同的模式。在命令行上使用相应参数可指定提供的模式。可用模式已在幻灯片中列出,它们与原始导出和导入实用程序中的模式相同。细粒度级的对象选择细粒度级的对象选择数据泵作业实际上可以包括(或排除)任何类型的对象。使用EXCLUDE参数可从导出或导入操作中排除任何数据库对象类型。使用可选名称限定符可在指定的每个对象类型中进行更细的选择,如下面几个示例所示:EXCLUDE=VIEWEXCLUDE=PACKAGEEXCLUDE=INDEX:"LIKE'EMP%'"INCLUDE参数可在操作中只包含指定的对象类型和对象。语法:INCLUDE=object_type[:"name_expr"]使用CONTENT参数可在当前操作中只请求元数据、只请求数据,或者请求元数据和数据。语法:CONTENT=ALL|METADATA_ONLY|DATA_ONLYQUERY参数与原始导出实用程序的工作方式相似,但前者具有两个重要的增强功能:一个功能是可使用一个表名称限定此参数,所以此参数只适用于该表;另一个功能是还可以在导入过程中使用此参数。下面就是一个示例:QUERY=hr.employees:"WHEREdepartment_idin(10,20)andsalary<1600ORDERBYdepartment_id"高级功能:采样率 任务:创建测试数据。 方法:指定要从源数据库采样和卸载的数据的百分比。 示例:卸载HR.EMPLOYEES表的44% 示例:卸载整个导出作业的30%(由于未指定表名)expdphr/hrDIRECTORY=DATA_PUMP_DIRDUMPFILE=sample1.dmpSAMPLE=30SAMPLE="HR"."EMPLOYEES":44高级功能:采样率使用SAMPLE参数时,可指定在执行数据泵导出时,要从源数据库采样和卸载的数据的百分比。语法:SAMPLE=[[schema_name.]table_name:]sample_percent采样百分比指示包含行块的可能性。sample_percent的值范围介于.000001到100(但不包含上限值)之间。注:SAMPLE参数对网络导出无效。导出选项:文件导出选项:文件数据泵作业管理以下三种类型的文件:要移动的数据和元数据的转储文件消息的日志文件用作SQLFILE操作的输出的SQL文件由于数据泵基于服务器而不基于客户机,因此会使用Oracle相对目录路径访问数据泵文件。出于安全原因,不支持绝对路径。数据泵文件位置 文件位置的优先级顺序: 每个文件的目录 DIRECTORY参数 DATA_PUMP_DIR环境变量 DATA_PUMP_DIR目录对象数据泵文件位置幻灯片显示了数据泵客户机定位文件时采用的优先级顺序。可按文件为每个转储文件、日志文件和SQL文件指定目录对象。如果指定了对象,则需要使用冒号(:)将对象与文件名分隔开来。数据泵导出和导入客户机提供了一个DIRECTORY参数,这个参数指定了目录对象的名称。这些目录对象说明了访问文件的位置。此外,还可选择通过定义环境变量DATA_PUMP_DIR来指定目录对象名,而不使用DIRECTORY参数。如果未指定显式目录对象,则数据泵客户机会查找这个环境变量。已经为每个数据库创建了默认目录对象。该目录对象名为DATA_PUMP_DIR。会自动为EXP_FULL_DATABASE和IMP_FULL_DATABASE角色授予访问DATA_PUMP_DIR目录的权限。数据泵文件位置(续)不需要在使用数据泵导出之前手动创建目录对象。已经为每个数据库创建了一个名为DATA_PUMP_DIR的默认目录对象,这个目录对象可能是新建对象,也可能是由UNIX或Windows平台上的脚本升级后得到的对象。系统会自动将访问DATA_PUMP_DIR目录的权限授予给EXP_FULL_DATABASE和IMP_FULL_DATABASE角色。DATA_PUMP_DIR目录是在下列一个位置创建的:<ORACLE_BASE>/admin/DB_UNIQUE_NAME/dpdump<ORACLE_HOME>/admin/DB_UNIQUE_NAME/dpdump DATA_PUMP_DIR的确切目录路径说明会有所不同,具体取决于ORACLE_BASE和ORACLE_HOME系统环境变量值,以及是否存在DATA_PUMP_DIR子目录。如果在目标系统上定义了ORACLE_BASE,则使用该值。否则,使用ORACLE_HOME值。如果因某种原因而未找到DATA_PUMP_DIR子目录,则使用以下默认路径:ORACLE_HOME/rdbms/log注:在任何情况下,必须有目录对象的相应访问权限才能执行所尝试的操作。导出时,需要有所有文件的写权限;导入时,需要有转储文件的读权限,以及日志文件和SQL文件的写权限。数据泵文件的命名和大小数据泵文件的命名和大小DUMPFILE参数指定了基于磁盘的转储文件的名称和(可选)目录。可以逗号分隔列表的形式或者以不同DUMPFILE参数说明的形式提供多个文件说明。文件名可包含替代变量%U,这个变量表示可生成多个文件。在生成的文件名中%U被扩展为双字符、固定宽度、从01.开始的单调递增整数。如果未指定DUMPFILE,则默认情况下使用expdat.dmp。默认情况下,会自动扩展创建的转储文件。如果指定了FILESIZE,则每个文件的大小为FILESIZE字节且不可扩展。如果需要更多的转储空间,并且提供了带%U的模板,则会自动创建具有FILESIZE字节的新文件;否则,客户机会收到要添加新文件的消息。如果指定了带%U的模板,则最初创建的文件数目等于PARALLEL参数。默认情况下,不会覆盖与所生成文件重名的预先存在的文件,这些文件会导致错误并导致作业中止。如果希望覆盖这些文件,请设置REUSE_DUMPFILES=Y。注:如果提供了多个转储文件模板,则会使用这些模板以循环方式生成转储文件。调度和运行作业调度和运行作业OracleEnterpriseManagerDatabaseControl可以将数据泵作业(通过此向导创建)作为可重复作业进行调度。数据泵导入数据泵导入数据泵导入是一个可将导出转储文件集加载到目标系统的实用程序。这个转储文件集由一个或多个包含表数据、数据库对象元数据和控制信息的磁盘文件构成。这些文件以专有的二进制格式编写。在执行导入操作期间,数据泵导入使用这些文件定位转储文件集中的每个数据库对象。使用命令行、参数文件或交互式命令模式可与数据泵导入实用程序交互:可直接在命令行上使用impdp命令并指定参数。可在文件中输入命令行参数(因为无法嵌套参数文件,所以不包括PARFILE参数)。在交互命令模式下,当前作业会继续运行,但是,终端登录会停止,同时会显示“Import(导入)”提示。例如,可将其它作业挂接到正在执行的作业或已停止的作业。数据泵导入:转换 您可以: 使用REMAP_DATAFILE重新映射数据文件 使用REMAP_TABLESPACE重新映射表空间 使用REMAP_SCHEMA重新映射方案 使用REMAP_TABLE重新映射表 使用REMAP_DATA重新映射数据REMAP_DATAFILE='C:\oradata\tbs6.f':'/u1/tbs6.f'数据泵导入:转换由于对象元数据是以XML形式存储在转储文件集中,因此,在导入过程中形成DDL时比较容易进行转换。数据泵导入支持多种转换:在具有不同文件系统语义的平台之间移动数据库时,REMAP_DATAFILE十分有用。使用REMAP_TABLESPACE可将对象从一个表空间移至另一个表空间。REMAP_SCHEMA提供原有FROMUSER/TOUSER的功能,可用于更改对象所有权。REMAP_TABLE提供重命名整个表的功能。REMAP_DATA提供在插入数据时重新映射数据的功能。数据泵导入:转换 使用TRANSFORM,还可以: 从表和索引中排除以下项: STORAGE和TABLESPACE子句 仅STORAGE子句 重新创建抽象数据类型的对象标识符 更改区分配和文件大小TRANSFORM=SEGMENT_ATTRIBUTES|STORAGE|OID|PCTSPACE:{y|n|v}[:objecttype]数据泵导入:转换(续)使用TRANSFORM参数可更改特定对象或要加载的所有适用对象的创建对象DDL。如幻灯片所示,请指定TRANSFORM参数。请注意,可能的选项如下所示:SEGMENT_ATTRIBUTES:如果该值指定为Y,则包含段属性(物理属性、存储属性、表空间和事件记录)。STORAGE:如果将该值指定为Y,则包含STORAGE子句。OID:确定是重用还是重新创建抽象数据类型的对象ID(OID)。如果将该值指定为N,则禁止生成对象类型的导出OID子句。如果需要使用导出和导入跨数据库复制方案,但是不能保证对象类型在这些数据库中具有相同的OID值时,这个选项会十分有用。PCTSPACE:通过对表空间存储分配执行收缩操作来减少表空间所需的空间量。为这个转换提供的值必须是大于零的数。该参数表示用于更改区分配和数据文件大小的百分比乘数。数据泵:性能注意事项 使用PARALLEL参数最大化作业性能 示例:主协调程序并行执行生成的文件expdphr/hrFULL=yDUMPFILE=dpdir1:full1%U.dmp,dpdir2:full2%U.dmp,dpdir3:full3%U.dmpFILESIZE=2GPARALLEL=3LOGFILE=dp_dir1:expfull.logJOB_NAME=expfull数据泵:性能注意事项使用PARALLEL参数可提高作业的吞吐量。并行度设置是由主进程强制设置的,因此可将要执行的工作分配到在操作中负责执行数据和元数据处理的那些Worker进程。这些Worker进程以并行方式运行。一般而言,应将并行度设置为实例中CPU数的两倍以上。要最大化并行度,必须至少为每个并行度提供一个文件。如果转储文件数不够,就不能优化性能,因为执行的多个线程会尝试访问同一个转储文件。执行作业期间可随时重置并行度。幻灯片示例中显示了一个完整的数据库导出过程。将导出数据库中的所有数据和元数据。将在dp_dir1、dp_dir2和dpdir3目录对象指向的目录中,以循环方式创建转储文件(full101.dmp、full201.dmp、full301.dmp等)。为实现最佳性能,这些文件应位于不同的I/O通道。每个文件的最大大小为2GB(具体视需要而定)。最初,最多会创建三个文件;如有需要,会创建更多的文件。作业与主表具有相同的名称:expfull。日志文件会写入到dpdir1目录中的expfull.log。性能初始化参数 以下设置会影响数据泵性能: DISK_ASYNCH_IO DB_BLOCK_CHECKING DB_BLOCK_CHECKSUM 将以下参数设置为较大值可实现最大并行度: PROCESSES SESSIONS PARALLEL_MAX_SERVERS 大幅度调整以下项的大小: 共享池 还原表空间性能初始化参数可以尝试使用幻灯片中列出的参数来改善性能,尽管效果在各平台上可能不尽相同。此外,应大幅度调整SHARED_POOL_SIZE和UNDO_TABLESPACE初始化参数的大小。具体值将取决于数据库的大小。通过仅禁用DB_BLOCK_CHECKING和DB_BLOCK_CHECKSUM来提高数据泵性能时,会影响块损坏的检测,因此不建议这样做。数据泵访问路径:注意事项 数据泵会自动选择以下访问路径之一: 直接路径 外部表,如果数据包括: 加密列 聚簇表 卸载和加载时不同的分区 其它数据泵直接路径:注意事项数据泵可为每个表自动选择适当的访问方法。直接路径:如果表结构允许使用直接路径加载和卸载,而且希望单个流的性能尽可能高时,数据泵会使用直接路径加载和卸载。外部表:如果存在以下任一条件,数据泵会使用外部表:在插入和选择模式下启用了带有细粒度级访问控制的表LOB列有域索引定义了活动触发器的表带有单分区负载的分区表上有全局索引BFILE或不透明类型的列引用完整性约束条件嵌入式不透明类型的VARRAY列注:由于这两种方法都支持相同的外部数据表示法,因此,可使用一种方法加载使用另一种方法卸载的数据。使用OracleEnterpriseManager监视数据泵作业使用OracleEnterpriseManager监视数据泵作业使用EnterpriseManager图形用户界面(GUI)可监视所有数据泵作业,包括使用expdp或impdp命令行界面创建的作业,或者使用DBMS_DATAPUMP程序包创建的作业。可查看作业的当前状态,还可将状态更改为EXECUTE、STOP或SUSPEND。要访问“ExportandImportJobs(导出和导入作业)”页,请在“Maintenance(维护)”页的“MoveRowData(移动行数据)”区域中单击“MonitorExportandImportJobs(监视导出和导入作业)”链接。数据字典 可在以下位置查看关于外部表的信息: [DBA|ALL|USER]_EXTERNAL_TABLES [DBA|ALL|USER]_EXTERNAL_LOCATIONS [DBA|ALL|USER]_TABLES [DBA|ALL|USER]_TAB_COLUMNS数据字典幻灯片中的数据字典视图列出了以下表信息:[DBA|ALL|USER]_EXTERNAL_TABLES:数据库中外部表的特定属性[DBA|ALL|USER]_EXTERNAL_LOCATIONS:外部表的数据源[DBA|ALL|USER]_TABLES:数据库中关系表的说明[DBA|ALL|USER]_TAB_COLUMNS:数据库中表列、视图和集群的说明。小结 在本课中,您应该已经学会: 描述移动数据的方式 创建和使用目录对象 使用SQL*Loader加载非OracleDB(或用户文件)中的数据 使用外部表并通过与平台无关的文件移动数据 说明Oracle数据泵的通用体系结构 使用数据泵导出和导入在OracleDB之间移动数据练习17概览:移动数据 本练习包含以下主题: 使用数据泵导出向导选择要导出的数据库对象 监视数据泵导出作业 使用数据泵导入向导将表导入数据库 使用加载数据向导将数据加载到数据库 使用命令行加载数据移动数据:通用体系结构主要功能组件:DBMS_DATAPUMP:包括高速导出与导入实用程序的API,可用于成批地移动数据和元数据。直接路径API(DPAPI):OracleDatabase11g支持直接路径API接口,可在卸载和加载时将数据转换与语法分析工作量降至最低。DBMS_METADATA:Worker进程使用该组件卸载或加载所有元数据。数据库对象定义是使用XML存储的,而不是SQL。外部表API:使用ORACLE_DATAPUMP和ORACLE_LOADER访问驱动程序,可将数据存储在外部表中(即与平台无关的文件中)。使用SELECT语句可读取外部表,好像外部表存储在OracleDB中一样。SQL*Loader:与外部表集成在一起,因此可为外部表访问参数提供自动移植加载程序控制文件的功能。expdp和impdp:瘦客户机层,可通过调用DBMS_DATAPUMP程序包启动和监视数据泵操作。其它客户机:得益于这个基础结构的应用程序(如DatabaseControl、复制应用程序、可传输表空间应用程序和用户应用程序)。SQL*Plus也可用作DBMS_DATAPUMP的一个客户机,但只提供实时操作的状态查询。目录对象:概览目录对象是一些代表服务器文件系统上的物理目录的逻辑结构。这些对象包含特定操作系统目录的位置。此目录对象名可用在EnterpriseManager中,所以不需要对目录路径说明进行硬编码。因此文件管理可获得更大的灵活性。目录对象由SYS用户拥有。目录名在数据库中是唯一的,因为所有目录都位于一个名称空间(即SYS)中。为数据泵指定文件位置时需要用到目录对象,因为数据泵访问的文件在服务器上,而不是在客户机上。在EnterpriseManager中,选择“Schema>DatabaseObjects>DirectoryObjects(方案>数据库对象>目录对象)”。要编辑或删除一个目录对象,请选择该对象,然后单击相应按钮。创建目录对象1. 在“DirectoryObjects(目录对象)”页中,单击“Create(创建)”按钮。2. 输入目录对象名称及目录对象映射到的操作系统路径。应先创建操作系统目录,之后才能使用这些目录。通过单击“TestFileSystem(测试文件系统)”按钮可测试这一点。为了进行测试,请提供主机登录身份证明(即有权对这个操作系统目录进行操作的操作系统用户)。3. 目录对象的权限不同于服务器文件系统物理目录的操作系统权限。您可以管理各个目录对象的用户权限。这样做提高了安全级别,同时还允许对这些对象进行粒度级控制。在“Privileges(权限)”页中,单击“Add(添加)”,选择要向其授予读权限、写权限或读写权限的用户。4. 单击“ShowSQL(显示SQL)”查看基础语句。完成后单击“Return(返回)”。5. 单击“OK(确定)”创建对象。SQL*Loader:概览SQL*Loader可将外部文件中的数据加载到OracleDB表中。它具有一个功能强大的数据分析引擎,因此对数据文件中数据的格式没有什么限制。SQL*Loader使用以下文件:输入数据文件:SQL*Loader从控制文件中指定的一个或多个文件(或操作系统的文件副本)中读取数据。从SQL*Loader的角度看,数据文件中的数据是按记录组织的。特定数据文件可以为固定记录格式、可变记录格式或流记录格式。可通过控制文件中的INFILE参数指定记录格式。如果未指定记录格式,默认格式为流记录格式。控制文件:控制文件是一个文本文件,它是使用SQL*Loader可识别的语言编写的。控制文件指示SQL*Loader在何处查找数据、如何分析和解释数据,以及在何处插入数据等。尽管不能精确地定义,但可认为控制文件包含三个段。第一段包含如下面所示的会话范围信息:全局选项,如输入数据文件名和要跳过的记录用于指定输入数据位置的INFILE子句要加载的数据SQL*Loader:概览(续)第二个段包括一个或多个INTOTABLE块。其中每一个块都包含要在其中加载数据的表的信息(如表名和表列)。第三个段是可选段,如果该段存在,则包含输入数据。日志文件:SQL*Loader开始执行时,它会创建日志文件。如果不能创建日志文件,执行就会终止。日志文件包含加载操作的详细概要,包括加载过程中发生的任何错误的说明。坏文件:坏文件包含被SQL*Loader或OracleDB拒绝的记录。当输入格式无效时,SQL*Loader就会拒绝数据文件记录。SQL*Loader接受待处理的某一数据文件记录后,会将该数据文件记录发送到OracleDB,以便可作为一行插入到表中。如果OracleDB确定该行有效,就会将该行插入到表中。如果确定该行无效,就会拒绝该记录,此时SQL*Loader会将该记录置于坏文件中。放弃文件:仅当需要这种文件并且指定了应启用放弃文件时,才会创建这种文件。放弃文件中包含因不符合控制文件中指定的任何记录选择标准而被过滤掉的记录。有关SQL*Loader的详细信息,请参阅《Oracle数据库实用程序》指南。使用SQL*Loader加载数据使用“LoadDatafromUserFiles(从用户文件加载数据)”向导,可将平面文件中的数据加载到OracleDB中。要显示这个向导,请选择EnterpriseManager中的“DataMovement>MoveRowData>LoadDatafromUserFiles(数据移动>移动行数据>从用户文件加载数据)”。SQL*Loader控制文件SQL*Loader控制文件是一个文本文件,其中包含数据定义语言(DDL)指令。DDL用来控制SQL*Loader会话的以下方面:SQL*Loader可从何处找到要加载的数据SQL*Loader将处理怎样的数据格式SQL*Loader在加载数据时采用哪些配置(包括内存管理、选择与拒绝标准、中断的加载处理等等)SQL*Loader如何处理正在加载的数据SQL*Loader控制文件(续)1 --Thisisasamplecontrolfile2LOADDATA3INFILE’SAMPLE.DAT’4BADFILE’sample.bad’5DISCARDFILE’sample.dsc’6APPEND7INTOTABLEemp8WHEN(57)=’.’9TRAILINGNULLCOLS10(hiredateSYSDATE, deptnoPOSITION(1:2)INTEGEREXTERNAL(3) NULLIFdeptno=BLANKS, jobPOSITION(7:14)CHARTERMINATEDBYWHITESPACE NULLIFjob=BLANKS"UPPER(:job)", mgrPOSITION(28:31)INTEGEREXTERNAL TERMINATEDBYWHITESPACE,NULLIFmgr=BLANKS, enamePOSITION(34:41)CHAR TERMINATEDBYWHITESPACE"UPPER(:ename)", empnoPOSITION(45)INTEGEREXTERNAL TERMINATEDBYWHITESPACE, salPOSITION(51)CHARTERMINATEDBYWHITESPACE "TO_NUMBER(:sal,’$99,999.99’)", commINTEGEREXTERNALENCLOSEDBY’(’AND’%’ ":comm*100" )此控制文件示例的说明(按行号)如下所示:1. 注释可出现在文件命令段中的任何位置,但绝不能出现在数据内部。任何注释之前都有两个连字符。双连字符右边的所有文本(直至行尾)都会被忽略。2. LOADDATA语句通知SQL*Loader开始新数据加载操作。如果继续执行已中断的加载操作,请使用CONTINUELOADDATA语句。3. INFILE关键字指定要加载的数据所在的数据文件的名称。4. BADFILE关键字指定在其中放置拒绝记录的文件名。5. DISCARDFILE关键字指定在其中放置放弃记录的文件名。6. APPEND关键字是将数据加载到非空表时可使用的选项之一。要将数据加载到空表中,请使用INSERT关键字。7. 使用INTOTABLE关键字可标识表、字段和数据类型。这个关键字定义了数据文件记录与数据库表之间的关系。8. WHEN子句指定SQL*Loader加载数据之前每条记录必须匹配的一个或多个字段条件。在此示例中,SQL*Loader只在第57个字符为小数点时才加载记录。这个小数点用于分隔字段中的美元和美分,如果SAL不包含任何值,这个小数点会导致记录被拒绝。9. TRAILINGNULLCOLS子句提示SQL*Loader将记录中不存在的所有相关占位列视为空列。10. 控制文件的余下部分包含一些字段列表,用于提供正在加载的表中列格式的信息。直接路径加载与常规路径加载的比较保存数据的方法常规路径加载执行SQL语句INSERT来填充OracleDB中的表。直接路径加载会格式化Oracle数据块,并将数据块直接写入数据库文件,从而可消除大量OracleDB开销。直接加载不与其他用户竞争数据库资源,因此通常可以用接近磁盘速度的速度加载数据。常规路径加载使用SQL处理和数据库COMMIT操作来保存数据。插入记录数组后会执行COMMIT操作。每次数据加载可能涉及多个事务处理。直接路径加载使用数据保存将数据块写入Oracle数据文件。这就是为什么直接路径加载比常规路径加载快很多的原因。数据保存与COMMIT的区别在于:在数据保存期间,仅将整个数据库块写入数据库中。这些块是在表的高水位标记(HWM)之后写入的。完成数据保存后,HWM会移动。完成数据保存后不会释放内部资源。完成数据保存不会结束事务处理。每次执行数据保存时不会更新索引。直接路径加载与常规路径加载的比较(续)注:直接路径加载与并行直接路径加载非常相似(就DML活动方面而言),因此就不另外进行比较了。事件记录更改常规路径加载可生成与任何DML语句相似的重做条目。使用直接路径加载时,如果存在以下条件,则不会生成重做项:数据库处于NOARCHIVELOG模式数据库处于ARCHIVELOG模式,但是禁用了事件记录(通过为表设置NOLOGGING属性或者在控制文件中使用UNRECOVERABLE子句,可以禁用事件记录)强制约束条件在常规路径加载过程中,所有启用的约束条件都按照在执行DML操作过程中所采用的方式强制执行。在直接路径加载过程中,按以下方式处理约束条件:构建数组时检查NOTNULL约束条件。FOREIGNKEY和CHECK约束条件处于禁用状态,加载结束时可使用控制文件中的相应命令启用这两个约束条件。FOREIGNKEY约束条件因引用了其它行或表而被禁用;CHECK约束条件因可能使用了SQL函数而被禁用。如果只在大型表中插入少量的行,则使用常规加载。加载期间及加载结束时会检查PRIMARYKEY和UNIQUE约束条件;如果违反这两个约束条件,就会禁用它们。触发INSERT触发器在常规加载过程中会触发WHILEINSERT触发器;这些触发器在进行直接路径加载之前已禁用,在加载结束时会重新启用。如果运行结束时,不能访问某个被引用对象,这些触发器可能会保持为禁用状态。请考虑使用常规路径加载将数据加载到带有INSERT触发器的表中。加载到聚簇表中不能使用直接加载将行加载到聚簇表中。只可使用常规路径加载来加载聚簇表。锁定直接路径加载正在进行时,其它事务处理不能更改正在加载的表。此规则的唯一例外情况发生在同时使用多个并行直接加载会话时。外部表填充外部表由与操作系统无关的专有格式(即直接路径API)平面文件组成。由于数据是从OracleDB提取并“卸载”到文件中的,因此,数据从Oracle内部表示法转换为等同的Oracle本机外部表示法(即DPAPI)是透明进行的。可使用CREATETABLEASSELECT命令填充外部表。创建并填充了外部表之后,就不能在外部表中添加、更新或删除行。在外部表中修改数据的任何尝试都会失败。外部表不能包含索引。使用数据泵访问驱动程序可对外部表执行卸载和加载操作。在OracleDatabase11g中,可以先压缩和加密数据,然后再将其写入转储文件集。使用外部表为外部表创建的数据文件是可移动的数据文件,可用作同一数据库或不同数据库中另一外部表的数据文件。只能使用ORACLE_DATAPUMP访问驱动程序读取这些数据文件。可选择让应用程序使用SELECT命令直接访问外部表,也可选择先将数据加载到目标数据库。可在另一外部表的LOCATION子句中指定由不同外部表填充的所有数据文件。这样,可轻松地将多个源中的数据汇集到一起。唯一的限制是,所有外部表的元数据必须完全相同。使用ORACLE_DATAPUMP填充外部表本示例显示如何通过这种新的外部表填充操作来帮助导出由联接的EMPLOYEES和DEPARTMENTS两个表生成的一组选择记录。由于外部表可能非常大,因此可使用并行填充操作将数据卸载到外部表。与外部表的并行查询相反,并行填充操作的并行度受到访问驱动程序可写入的并行文件的数目所限制。在特定时间点,决不能有多个并行执行服务器写入同一个文件。LOCATION子句中的文件数必须与指定的并行度匹配,因为每个输入/输出(I/O)服务器进程都需要使用自己的文件。此时,会忽略指定的任何附加文件。如果指定的并行度没有足够的文件数,就会通过降低并行度来匹配LOCATION子句中的文件数。注:有关ORACLE_DATAPUMP访问驱动程序参数的详细信息,请参阅《Oracle数据库实用程序》指南。使用ORACLE_LOADER填充外部表ORACLE_LOADER访问驱动程序使用SQL*Loader语法来创建外部表。幻灯片中的示例显示创建的三个目录对象(extab_dat_dir、extab_bad_dir和extab_log_dir),并且这三个目录对象已映射到用户有权访问的现有操作系统目录。最佳方案提示:如果有大量的数据要加载,请为加载操作启用PARALLEL:ALTERSESSIONENABLEPARALLELDML;Oracle数据泵:概览使用Oracle数据泵可快速加载或卸载OracleDB的数据与元数据。数据泵基础结构是通过DBMS_DATAPUMPPL/SQL程序包调用的。因此,通过使用数据泵可构建自定义的数据移动实用程序。OracleDatabase11g提供以下工具:命令行导出与导入客户机,分别称为expdp和impdp基于Web的导出与导入界面,通过DatabaseControl可访问数据泵会自动确定要使用的数据访问方法;访问方法可以是直接路径或外部表。如果表结构允许使用直接路径加载和卸载,而且希望单个流的性能尽可能高时,数据泵会使用直接路径加载和卸载。但是,如果存在聚簇表、引用完整性约束条件、加密列或一些其它项,数据泵会使用外部表,而不是使用直接路径来移动数据。由于数据泵能够在与长时间运行的作业分离后与之重新挂接并且不影响作业本身,所以您可以监视多个位置正在运行的作业。只要元信息未受干扰,就可重新启动所有停止的数据泵作业而不会丢失数据。无论作业是自发停止的,还是由于崩溃而非自发停止的,都无关紧要。Oracle数据泵:优点EXCLUDE、INCLUDE和CONTENT参数用于细粒度级的对象和数据选择。您可以通过指定要移动对象的数据库版本(使用VERSION参数)来创建与OracleDB(支持数据泵)的前一个版本兼容的转储文件集。可以使用PARALLEL参数指定代表导出作业而运行的活动执行服务器的最大线程数。使用ESTIMATE_ONLY参数可估计导出作业占用的空间量(实际上并不执行导出)。使用网络模式可从远程数据库直接导出到转储文件集。使用指向源系统的数据库链接可完成此操作。在导入过程中,可以更改目标数据文件名、方案和表空间。此外,还可指定执行数据泵导出时,要从源数据库采样和卸载的数据的百分比。指定SAMPLE参数可完成此操作。使用COMPRESSION参数可指示是否在导出转储文件中压缩元数据,以便减少其占用的磁盘空间。如果压缩了元数据,导入过程中会自动执行解压缩。OracleDatabase11g中的数据泵增强功能在OracleDatabase11g中新增了一些功能,使您可以:在导出期间同时压缩数据和元数据,仅压缩数据,仅压缩元数据或者不压缩数据。指定以下几个方面的附加加密选项:可选择在导出期间同时加密数据和元数据,仅加密数据,仅加密元数据,不加密数据或仅加密列。可指定要在导出期间使用的特定加密算法。可指定在导出期间要用于执行加密和解密的安全类型。例如,转储文件集可能会导入到其它数据库或远程数据库,因此必须在传输过程中保障其安全性。转储文件集可能会使用OracleEncryptionWallet进行现场导入,但当OracleEncryptionWallet不可用时可能还需要进行现场外导入。使用可传输方法执行表模式导出和导入;指定在执行导入操作期间应如何处理分区表。在导出操作期间覆盖现有转储文件。在执行导入操作期间重命名表。指定即使遇到非延迟约束条件违例,也继续执行数据加载(这仅适用于使用外部表访问方法的导入操作)。指定无论是否为XMLType列定义了XMLType存储格式,都要用未压缩的CLOB格式导出这些列。在导出期间指定重新映射功能,该功能将指定列的原始值视为源,并返回将替换转储文件中原始值的重新映射值。在将数据导入到新数据库时重新映射数据。数据泵导出和导入:概览数据泵导出是一个实用程序,可用于将数据和元数据卸载到名为“转储文件集”的操作系统文件集。数据泵导入用于将导出转储文件集中存储的元数据和数据加载到目标系统。数据泵API会访问服务器上的相应文件,而不是在客户机上的文件。还可以使用这些实用程序直接从远程数据库导出到转储文件集,或者直接从源数据库加载目标数据库,而不使用任何干预文件。这称为“网络模式”。从只读源数据库导出数据时,此模式尤其有用。每个数据泵操作的核心是主表(MT),这是在运行数据泵作业的用户方案中创建的表。MT保留了作业的各个方面。MT是在执行基于文件的导出作业期间构建的,在最后一步中会写入转储文件集。而在基于文件的导入操作中,将MT加载到当前用户方案是第一步,用于确定所有导入对象的创建顺序。注:按计划或不按计划停止作业时,MT是数据泵重新启动功能的关键。数据泵作业正常完成时,MT会停止。数据泵实用程序:接口与模式使用下列一种接口可与数据泵导出和导入进行交互:命令行接口:用于直接在命令行上指定大多数导出参数参数文件接口:用于在参数文件中指定所有命令行参数。唯一例外是PARFILE参数。交互式命令接口:停止登录到终端,显示导出或导入提示符,在这些提示符下可输入各种命令。在使用命令行接口或参数文件接口启动导出操作过程中,按[Ctrl]+[C]可启用这种模式。另外,挂接到正在执行的作业或已停止的作业时,也能启用交互式命令模式。Web接口:在DatabaseControl主页上,单击“Maintenance(维护)”选项卡,然后从“Utilities(实用程序)”区域选择下列一个链接:“ExporttoFiles(导出到文件)”、“ImportfromFiles(从文件导入)”或“ImportfromDatabase(从数据库导入)”。数据泵导出和导入对卸载或加载数据库的不同部分提供不同的模式。在命令行上使用相应参数可指定提供的模式。可用模式已在幻灯片中列出,它们与原始导出和导入实用程序中的模式相同。细粒度级的对象选择数据泵作业实际上可以包括(或排除)任何类型的对象。使用EXCLUDE参数可从导出或导入操作中排除任何数据库对象类型。使用可选名称限定符可在指定的每个对象类型中进行更细的选择,如下面几个示例所示:EXCLUDE=VIEWEXCLUDE=PACKAGEEXCLUDE=INDEX:"LIKE'EMP%'"INCLUDE参数可在操作中只包含指定的对象类型和对象。语法:INCLUDE=object_type[:"name_expr"]使用CONTENT参数可在当前操作中只请求元数据、只请求数据,或者请求元数据和数据。语法:CONTENT=ALL|METADATA_ONLY|DATA_ONLYQUERY参数与原始导出实用程序的工作方式相似,但前者具有两个重要的增强功能:一个功能是可使用一个表名称限定此参数,所以此参数只适用于该表;另一个功能是还可以在导入过程中使用此参数。下面就是一个示例:QUERY=hr.employees:"WHEREdepartment_idin(10,20)andsalary<1600ORDERBYdepartment_id"高级功能:采样率使用SAMPLE参数时,可指定在执行数据泵导出时,要从源数据库采样和卸载的数据的百分比。语法:SAMPLE=[[schema_name.]table_name:]sample_percent采样百分比指示包含行块的可能性。sample_percent的值范围介于.000001到100(但不包含上限值)之间。注:SAMPLE参数对网络导出无效。导出选项:文件数据泵作业管理以下三种类型的文件:要移动的数据和元数据的转储文件消息的日志文件用作SQLFILE操作的输出的SQL文件由于数据泵基于服务器而不基于客户机,因此会使用Oracle相对目录路径访问数据泵文件。出于安全原因,不支持绝对路径。数据泵文件位置幻灯片显示了数据泵客户机定位文件时采用的优先级顺序。可按文件为每个转储文件、日志文件和SQL文件指定目录对象。如果指定了对象,则需要使用冒号(:)将对象与文件名分隔开来。数据泵导出和导入客户机提供了一个DIRECTORY参数,这个参数指定了目录对象的名称。这些目录对象说明了访问文件的位置。此外,还可选择通过定义环境变量DATA_PUMP_DIR来指定目录对象名,而不使用DIRECTORY参数。如果未指定显式目录对象,则数据泵客户机会查找这个环境变量。已经为每个数据库创建了默认目录对象。该目录对象名为DATA_PUMP_DIR。会自动为EXP_FULL_DATABASE和IMP_FULL_DATABASE角色授予访问DATA_PUMP_DIR目录的权限。数据泵文件位置(续)不需要在使用数据泵导出之前手动创建目录对象。已经为每个数据库创建了一个名为DATA_PUMP_DIR的默认目录对象,这个目录对象可能是新建对象,也可能是由UNIX或Windows平台上的脚本升级后得到的对象。系统会自动将访问DATA_PUMP_DIR目录的权限授予给EXP_FULL_DATABASE和IMP_FULL_DATABASE角色。DATA_PUMP_DIR目录是在下列一个位置创建的:<ORACLE_BASE>/admin/DB_UNIQUE_NAME/dpdump<ORACLE_HOME>/admin/DB_UNIQUE_NAME/dpdump DATA_PUMP_DIR的确切目录路径说明会有所不同,具体取决于ORACLE_BASE和ORACLE_HOME系统环境变量值,以及是否存在DATA_PUMP_DIR子目录。如果在目标系统上定义了ORACLE_BASE,则使用该值。否则,使用ORACLE_HOME值。如果因某种原因而未找到DATA_PUMP_DIR子目录,则使用以下默认路径:ORACLE_HOME/rdbms/log注:在任何情况下,必须有目录对象的相应访问权限才能执行所尝试的操作。导出时,需要有所有文件的写权限;导入时,需要有转储文件的读权限,以及日志文件和SQL文件的写权限。数据泵文件的命名和大小DUMPFILE参数指定了基于磁盘的转储文件的名称和(可选)目录。可以逗号分隔列表的形式或者以不同DUMPFILE参数说明的形式提供多个文件说明。文件名可包含替代变量%U,这个变量表示可生成多个文件。在生成的文件名中%U被扩展为双字符、固定宽度、从01.开始的单调递增整数。如果未指定DUMPFILE,则默认情况下使用expdat.dmp。默认情况下,会自动扩展创建的转储文件。如果指定了FILESIZE,则每个文件的大小为FILESIZE字节且不可扩展。如果需要更多的转储空间,并且提供了带%U的模板,则会自动创建具有FILESIZE字节的新文件;否则,客户机会收到要添加新文件的消息。如果指定了带%U的模板,则最初创建的文件数目等于PARALLEL参数。默认情况下,不会覆盖与所生成文件重名的预先存在的文件,这些文件会导致错误并导致作业中止。如果希望覆盖这些文件,请设置REUSE_DUMPFILES=Y。注:如果提供了多个转储文件模板,则会使用这些模板以循环方式生成转储文件。调度和运行作业OracleEnterpriseManagerDatabaseControl可以将数据泵作业(通过此向导创建)作为可重复作业进行调度。数据泵导入数据泵导入是一个可将导出转储文件集加载到目标系统的实用程序。这个转储文件集由一个或多个包含表数据、数据库对象元数据和控制信息的磁盘文件构成。这些文件以专有的二进制格式编写。在执行导入操作期间,数据泵导入使用这些文件定位转储文件集中的每个数据库对象。使用命令行、参数文件或交互式命令模式可与数据泵导入实用程序交互:可直接在命令行上使用impdp命令并指定参数。可在文件中输入命令行参数(因为无法嵌套参数文件,所以不包括PARFILE参数)。在交互命令模式下,当前作业会继续运行,但是,终端登录会停止,同时会显示“Import(导入)”提示。例如,可将其它作业挂接到正在执行的作业或已停止的作业。数据泵导入:转换由于对象元数据是以XML形式存储在转储文件集中,因此,在导入过程中形成DDL时比较容易进行转换。数据泵导入支持多种转换:在具有不同文件系统语义的平台之间移动数据库时,REMAP_DATAFILE十分有用。使用REMAP_TABLESPACE可将对象从一个表空间移至另一个表空间。REMAP_SCHEMA提供原有FROMUSER/TOUSER的功能,可用于更改对象所有权。REMAP_TABLE提供重命名整个表的功能。REMAP_DATA提供在插入数据时重新映射数据的功能。数据泵导入:转换(续)使用TRANSFORM参数可更改特定对象或要加载的所有适用对象的创建对象DDL。如幻灯片所示,请指定TRANSFORM参数。请注意,可能的选项如下所示:SEGMENT_ATTRIBUTES:如果该值指定为Y,则包含段属性(物理属性、存储属性、表空间和事件记录)。STORAGE:如果将该值指定为Y,则包含STORAGE子句。OID:确定是重用还是重新创建抽象数据类型的对象ID(OID)。如果将该值指定为N,则禁止生成对象类型的导出OID子句。如果需要使用导出和导入跨数据库复制方案,但是不能保证对象类型在这些数据库中具有相同的OID值时,这个选项会十分有用。PCTSPACE:通过对表空间存储分配执行收缩操作来减少表空间所需的空间量。为这个转换提供的值必须是大于零的数。该参数表示用于更改区分配和数据文件大小的百分比乘数。数据泵:性能注意事项使用PARALLEL参数可提高作业的吞吐量。并行度设置是由主进程强制设置的,因此可将要执行的工作分配到在操作中负责执行数据和元数据处理的那些Worker进程。这些Worker进程以并行方式运行。一般而言,应将并行度设置为实例中CPU数的两倍以上。要最大化并行度,必须至少为每个并行度提供一个文件。如果转储文件数不够,就不能优化性能,因为执行的多个线程会尝试访问同一个转储文件。执行作业期间可随时重置并行度。幻灯片示例中显示了一个完整的数据库导出过程。将导出数据库中的所有数据和元数据。将在dp_dir1、dp_dir2和dpdir3目录对象指向的目录中,以循环方式创建转储文件(full101.dmp、full201.dmp、full301.dmp等)。为实现最佳性能,这些文件应位于不同的I/O通道。每个文件的最大大小为2GB(具体视需要而定)。最初,最多会创建三个文件;如有需要,会创建更多的文件。作业与主表具有相同的名称:expfull。日志文件会写入到dpdir1目录中的expfull.log。性能初始化参数可以尝试使用幻灯片中列出的参数来改善性能,尽管效果在各平台上可能不尽相同。此外,应大幅度调整SHARED_POOL_SIZE和UNDO_TABLESPACE初始化参数的大小。具体值将取决于数据库的大小。通过仅禁用DB_BLOCK_CHECKING和DB_BLOCK_CHECKSUM来提高数据泵性能时,会影响块损坏的检测,因此不建议这样做。数据泵直接路径:注意事项数据泵可为每个表自动选择适当的访问方法。直接路径:如果表结构允许使用直接路径加载和卸载,而且希望单个流的性能尽可能高时,数据泵会使用直接路径加载和卸载。外部表:如果存在以下任一条件,数据泵会使用外部表:在插入和选择模式下启用了带有细粒度级访问控制的表LOB列有域索引定义了活动触发器的表带有单分区负载的分区表上有全局索引BFILE或不透明类型的列引用完整性约束条件嵌入式不透明类型的VARRAY列注:由于这两种方法都支持相同的外部数据表示法,因此,可使用一种方法加载使用另一种方法卸载的数据。使用OracleEnterpriseManager监视数据泵作业使用EnterpriseManager图形用户界面(GUI)可监视所有数据泵作业,包括使用expdp或impdp命令行界面创建的作业,或者使用DBMS_DATAPUMP程序包创建的作业。可查看作业的当前状态,还可将状态更改为EXECUTE、STOP或SUSPEND。要访问“ExportandImportJobs(导出和导入作业)”页,请在“Maintenance(维护)”页的“MoveRowData(移动行数据)”区域中单击“MonitorExportandImportJobs(监视导出和导入作业)”链接。数据字典幻灯片中的数据字典视图列出了以下表信息:[DBA|ALL|USER]_EXTERNAL_TABLES:数据库中外部表的特定属性[DBA|ALL|USER]_EXTERNAL_LOCATIONS:外部表的数据源[DBA|ALL|USER]_TABLES:数据库中关系表的说明[DBA|ALL|USER]_TAB_COLUMNS:数据库中表列、视图和集群的说明。
本文档为【oracle逻辑导入导出】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_597436
暂无简介~
格式:ppt
大小:1MB
软件:PowerPoint
页数:0
分类:企业经营
上传时间:2020-05-18
浏览量:1