网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.实现Oracle数据库复制.
.oracle 使用杂记1.
.什么是Oracle OTN?.
.Oracle库的Hang.
.oracle9.2.0.1升级到9.2.0.6.
.ORACLE的外部调用的实现.
.教你在Oracle中实现SELECT TOP N.
.浅谈权限管理的对象模型和实现.
.MSSQL通过link导数据至oracle出错.
.Oracle中使用自治事务保存日志表.
.Ellison:Oracle将在技术圈地中胜.
.表中出现block错误的恢复方法及具.
.卸载oracle表结构到文本中的脚本.
.安装Ora9i_9204要用到的补丁,刚.
.如果处理Oracle数据库中的坏块问.
.Oracle Rman/tivoli-TDP/下数据恢.
.Oracle数据库共享连接和专用连接.
.FLASHBACK TABLE对全文索引的影响.
.用orabm测试oracle服务器的TPS值.
.对Oracle的Web运营所进行的幕后观.

利用Oracle数据泵完成数据导入和导出

发表日期:2008-2-9



  在Oracle 10g中, eXP 和 imp 被重新设计为Oracle Data Pump(虽然Oracle 仍然装载了exp 和imp,并完全地支持它们)。假如你以前使用过exp 和 imp,那么Data Pump 的命令行程序的语法对你来说就不生疏了。
  
  Data Pump 是运行在数据库内部的, 而不是像一个独立的客户端应用程序一样存在。这就意味着这部分的工作在一定程度上独立于发起执行导入或者导出任务的进程 。 在一台机器上 (例如一个定期任务) 可以开始执行导出的任务,而另一台机器上 (例如 DBA 的 手提电脑) 可以对任务的运行状态进行监控。 也正因为任务是运行在数据库内部的,所以假如你要将数据导出到一个文件中,那么你首先要做的事情就是为输出路径建立一个数据库的DirectorY 对象,然后给将要进行数据导入和导出的用户授权访问,命令如下:
  
  create or replace directory dumpdir as 'c:\';
  
  grant read,write on directory dumpdir to scott;
  
  一旦该路经被授权后,就可以通过以下的命令参数导出用户的对象,这些命令与 exp 和 imp 中的命令非常相似:
  
  expdp scott/tiger directory=dumpdir dumpfile=scott.dmp
  
  当导出工作开始执行以后,可以通过按下[Ctrl]C (或者是客户端中具有相同功能的按键) 来“中止”导出任务。这样就不会再有数据发送到你的客户端了,但是该任务在数据库中仍然还在运行。你的客户端会进入交互模式(出现Export>提示符)。 在提示符后输入status就可以查看到当前有哪些任务正在运行。假如在客户端输入expdp attach=<任务名>,你就可以连接到一个正在运行的任务上。
  
  Data Pump 并不是一定要写入到文件中。现在可以通过选项设置就可以将数据库对象通过SQL*Net直接导到一个远程数据库中。你所要做的就仅仅是指定remote 选项,然后加上与远程数据库连接的连接字符串。 这就有点类似于对数据库的一次性复制过程。
  
  Data Pump 执行起来要比原来的exp 和 imp 客户端命令快得多。Data Pump 运行得更快是因为它有一个新特性——“parallel”选项。选定这个选项后,Data Pump 将会以四个不同的线程同时压送数据。下面举个例子,我先执行下面的任务,然后按 [Ctrl]C,接着察看后台任务的状态:
  
  expdp scott/tiger directory=dumpdir dumpfile=scott2.dmp parallel=4
  job_name=scott2
  
  Export: Release 10.1.0.2.0 - ProdUCtion on Friday, 31 December, 2004 14:54
  
  Copyright (c) 2003, Oracle. All rights reserved.
  
  Connected to: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 -
  Production
  With the Partitioning, OLAP and Data Mining options
  FLASHBACK automatically enabled to preserve database integrity.
  Starting "SCOTT"."SCOTT2": scott/******** directory=dumpdir
  dumpfile=scott2.dmp parallel=4 job_name=scott2
  Estimate in progress using BLOCKS method...
  
  Export> status
  
  Job: SCOTT2
  Operation: EXPORT
  Mode: SCHEMA
  State: EXECUTING
  Bytes Processed: 0
  Current Parallelism: 4
  Job Error Count: 0
  Dump File: C:\SCOTT2.DMP
  bytes written: 4,096
  
  Worker 1 Status:
  State: EXECUTING
  
  Worker 2 Status:
  State: WORK WAITING
  
  Worker 3 Status:
  State: WORK WAITING
  
  Worker 4 Status:
  State: WORK WAITING
  
  其实不仅仅只有Data Pump 是在数据库内部运行的,事实上大部分的命令行性质的命令都是在数据库内部运行的,只不过是通过一个PL/SQL API—— DBMS_DATAPUMP显示出来。
例如,可以通过以下的PL/SQL代码来实现通过PL/SQL 包启动导出任务:
  
  declare
  handle number;
  begin
  handle := dbms_datapump.open('EXPORT','SCHEMA');
  dbms_datapump.add_file(handle,'SCOTT3.DMP','DUMPDIR');
  dbms_datapump.metadata_filter(handle,'SCHEMA_EXPR','= ''SCOTT''');
  dbms_datapump.set_parallel(handle,4);
  dbms_datapump.start_job(handle);
  dbms_datapump.detach(handle);
  end; /
  
  仔细研究 Data Pump ,你可以了解到 Data Pump 其他更多的新特性。例如,Data Pump 可以对数据文件重命名,可以将对象移动到不同的表空间中,还可以通过使用通配符结构或者是语句来查找图表对象或是图表。Data Pump 还可以用作外部表的接口 (例如,可以将一个表与存储在一个数据泵导出文件中的数据关联起来,这就像Oracle 9i 以及更高版本中的Oracle Loader 接口一样)。
上一篇:Oracle安全全接触(完整版)二 人气:943
下一篇:Oracle:怎样备份控制文件? 人气:623
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐