- 浏览: 1591366 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (289)
- java 语法基础 (51)
- spring (8)
- mvc struct /Ant --build.xml (8)
- SOA (0)
- oracle 9i/10g (23)
- sql server 2000-2005 (3)
- 数据库基础知识 (6)
- 设计模式与软件架构 (10)
- Hibernate 持久化 (9)
- J2SE/J2EE/J2ME/AJAX 技术 (8)
- JSF 技术 (3)
- JAVA 图形化 (0)
- JMS (40)
- Eclipse 3.2 IDE 开发技巧 (13)
- 项目处理方法集合 (2)
- html/jsp/javascript (2)
- Unix/Linux (9)
- j2me/ARM/windriver/嵌入式 (4)
- 电信科学 (8)
- jsp (1)
- c/c++ (1)
- LZW压缩算法(java) (2)
- Android (77)
- 版本管理git/svn (2)
最新评论
-
huihai:
有demo吗?
NamingStrategy实现动态表名映射 -
cangbaotu:
推荐给大家一些有用的爬虫源码:https://github.c ...
网络爬虫(源代码参考) -
tuspark:
除了.classpath文件以外,.project文件也应该了 ...
Eclipse .classpath文件浅谈 -
tuspark:
造成eclipse自动关闭的原因有很多,这里有很多介绍:ecl ...
eclipse 自动关闭 解决方案 -
DEMONU:
网上都是这些,这种文章。。。
ActiveMQ中的消息持久性
Oracle Exp/Imp工具是一个操作简单、方便灵活的备份恢复和数据迁移工具,它可以实施全库级、用户级、表级的数据备份和恢复。对于数据量在G级或G级以内,强调高可用性,可以容忍少量数据丢失的数据库系统,Exp/Imp是普遍使用的逻辑备份方式。目前现网很多生产系统均使用Exp/Imp进行备份恢复。数据量达到G级以后,备份恢复的时间明显拉长了,有没有方法能够有效提高Exp/Imp的速度呢?答案是肯定的,某些方法还可以成倍的提高速度,本文就从Exp、Imp两个工具分别探讨优化备份恢复性能的方法。
1 Exp调优
1.1 使用DIRECT和RECORDLENGTH选项
DIRECT参数定义了导出是使用直接路径方式(DIRECT=Y),还是常规路径方式(DIRECT=N)。常规路径导出使用SQL SELECT语句从表中抽取数据,直接路径导出则是将数据直接从磁盘读到PGA再原样写入导出文件,从而避免了SQL命令处理层的数据转换过程,大大提高了导出效率。在数据量大的情况下,直接路径导出的效率优势更为明显,可比常规方法速度提高三倍之多。
和DIRECT=Y配合使用的是RECORDLENGTH参数,它定义了Export I/O缓冲的大小,作用类似于常规路径导出使用的BUFFER参数。建议设置RECORDLENGTH参数为最大I/O缓冲,即65535(64kb)。其用法如下:
exp userid=system/manager full=y direct=y recordlength=65535 file=exp_full.dmp log=exp_full.log
直接路径导出根据Oracle版本不同,有一些使用限制。比较重要的限制有,8i及以下版本不支持导出客户端和数据库的字符集转换,因此导出前必须保证NLS_LANG设置正确;8.1.5及以下版本不支持导出含LOBs对象的表;不能使用QUERY参数等。
1.2 使用管道技术
管道是从一个程序进程向另一个程序进程单向传送信息的技术。通常,管道把一个进程的输出传给另一进程作为输入。如果导出的数据量很大,可以利用管道直接生成最终的压缩文件,所耗费的时间和不压缩直接导出的时间相当。这样一来,不仅能够解决磁盘空间不足的问题,而且省去了单独压缩文件的时间;如果需要传输导出文件,还可以减少网络传输的时间。比如,一个10G的文件单独压缩可能需要半小时以上的时间。虽然管道技术不能够直接缩短Exp/Imp本身的时间,但节省出来的压缩时间非常可观。管道和Exp结合的具体使用方法如下:
导出数据示例:
% mknod /tmp/exp_pipe p # Make the pipe
% compress < /tmp/exp_pipe > export.dmp.Z & # Background compress
% exp file=/tmp/exp_pipe # Export to the pipe
2 Imp调优
Oracle Import进程需要花比Export进程数倍的时间将数据导入数据库。某些关键时刻,导入是为了应对数据库的紧急故障恢复。为了减少宕机时间,加快导入速度显得至关重要。没有特效办法加速一个大数据量的导入,但我们可以做一些适当的设定以减少整个导入时间。
2.1 使用管道技术
前面已经说明了Exp时如何使用管道,在导入时管道的作用是相同,不仅能够解决磁盘空间不足的问题,而且省去了单独解压缩文件的时间。在大数据量导入导出的时候,推荐一定要使用管道。
导入数据示例:
2.2 避免I/O竞争
Import是一个I/O密集的操作,避免I/O竞争可以加快导入速度。如果可能,不要在系统高峰的时间导入数据,不要在导入数据时运行job等可能竞争系统资源的操作。
2.3 增加排序区
Oracle Import进程先导入数据再创建索引,不论INDEXES值设为YES或者NO,主键的索引是一定会创建的。创建索引的时候需要用到排序区,在内存大小不足的时候,使用临时表空间进行磁盘排序,由于磁盘排序效率和内存排序效率相差好几个数量级。增加排序区可以大大提高创建索引的效率,从而加快导入速度。
8i及其以下版本:导入数据前增加数据库的sort_area_size大小,可设为正常值的5-10倍。但这个值设定会影响到所有会话,设的过高有可能导致内存不足出现paging, swapping现象。更为稳妥的方法是,对于大表和索引特别多的表,只导数据不导索引。导完数据后,创建一个会话,设定当前会话的sort_area_size一个足够大的值,再手工创建索引。
9i:在workarea_size_policy=AUTO的情况下,所有会话的UGA共用pga_aggregate_target定义的内存,不必单独设定sort_area_size。导入数据前增加pga_aggregate_target大小,如果机器内存够大,可从通常设定的500M提高到1-2G。pga_aggregate_target大小可以动态调整,导入完成后可在线调回原值。
2.4 调整BUFFER选项
Imp参数BUFFER定义了每一次读取导出文件的数据量,设的越大,就越减少Import进程读取数据的次数,从而提高导入效率。BUFFER的大小取决于系统应用、数据库规模,通常来说,设为百兆就足够了。其用法如下:
imp user2/pwd fromuser=user1 touser=user2 file=/tmp/imp_db_pipe1 commit=y feedback=10000 buffer=10240000
2.5 使用COMMIT=Y选项
COMMIT=Y表示每个数据缓冲满了之后提交一次,而不是导完一张表提交一次。这样会大大减少对系统回滚段等资源的消耗,对顺利完成导入是有益的。
2.6 使用INDEXES=N选项
前面谈到增加排序区时,说明Imp进程会先导入数据再创建索引。导入过程中建立用户定义的索引,特别是表上有多个索引或者数据表特别庞大时,需要耗费大量时间。某些情况下,需要以最快的时间导入数据,而索引允许后建,我们就可以使用INDEXES=N 只导入数据不创建索引,从而加快导入速度。
我们可以用INDEXFILE选项生成创建索引的DLL脚本,再手工创建索引。我们也可以用如下的方法导入两次,第一次导入数据,第二次导入索引。其用法如下:
imp user2/pwd fromuser=user1 touser=user2 file=/tmp/imp_db_pipe1 commit=y feedback=10000 buffer=10240000 ignore=y rows=y indexes=n
imp user2/pwd fromuser=user1 touser=user2 file=/tmp/imp_index_pipe1 commit=y feedback=10000 buffer=10240000 ignore=y rows=n indexes=y
2.7 增加LARGE_POOL_SIZE
如果在init.ora中配置了MTS_SERVICE,MTS_DISPATCHERS等参数,tnsnames.ora中又没有(SERVER=DEDICATED)的配置,那么数据库就使用了共享服务器模式。在MTS模式下,Exp/Imp操作会用到LARGE_POOL,建议调整LARGE_POOL_SIZE到150M。
检查数据库是否在MTS模式下:
SQL>select distinct server from v$session;
如果返回值出现none或shared,说明启用了MTS。
发表评论
-
oacle数据库服务器字符集更改步骤
2009-11-20 11:25 192910 数据库服务器字符集更改步骤问题描述:在客户端插入字符“咪 ... -
ResultSet 的Type属性 TYPE_FORWARD_ONLY, TYPE_SCROLL_I
2009-04-10 23:06 13161说明:Statement stmt = con.createS ... -
OracleOraHome92TNSListener 无法启动
2009-03-30 19:44 2943先看如下有没有 如果路径不见了: 1 ... -
oracle导出文件字符集修改
2009-02-22 17:49 7097我们知道在导出文件中,记录着导出使用的字符集id,通过查看导出 ... -
oracle字符集的更改2
2009-02-21 21:47 1667前面我们提到,通过修改props$的方式更改字符集在Oracl ... -
oracle字符集的更改
2009-02-21 20:53 23622. 字符集的更改 数 ... -
oracle 字符集
2009-02-21 16:10 32121、字符集的一些基本知 ... -
Oracle安装的一些问题收集
2009-01-13 17:18 6901Oracle安装的一些问题收 ... -
请教 EXP-00056: 遇到 ORACLE 错误 6550 的问题
2009-01-13 16:43 11005这个问题解决了已经。与其他机器的9201版本进行比对,发现db ... -
Oracle 9i 在Linux 下的安装
2009-01-13 16:42 1890Oracle 9i 在Linux 下的安装 2008-09-0 ... -
Oracle新手常碰到的错误及解决方案
2008-11-27 18:12 12721、ORA-12541:TNS:没有监听器 原因:没有 ... -
MS-SQL的游标
2008-11-27 15:57 1643与windows或DOS的“ ... -
存储过程基本语法
2008-11-27 15:46 11901.基本结构 CREATE OR REPLACE PROCE ... -
UTL_FILE
2008-11-27 14:22 3181最近用到了Oracle的包UTL_ ... -
ORACLE SQL PLUS 使用技巧:
2008-11-27 14:05 1995---- 一. ORACLE SQL PLUS 使 ... -
pl/sql中读入一个文本文件到一个UTL_FILE.FILE_TYPE变量中,如何对该变量中的数据
2008-11-27 13:51 2933create or replace procedu ... -
浅谈Oracle数据库的建模与设计
2008-10-17 23:49 1223要开发一个基于数据库的应用系统,其中最关键的一步就是整个系统 ... -
Oracle平台应用数据库系统的设计与开发
2008-10-17 23:47 1367Oracle是目前应用最广泛的数据库系统。一个完整的数据库系 ... -
oracle10g下JDBC驱动包的区别
2008-09-05 18:17 7446oracle10g下JDBC驱动包的区别 2008年06月27 ... -
Oracle触发器应用
2008-08-21 12:57 3127触发器 是特定事件出现的时候,自动执行的代码块。类似于存储过 ...
相关推荐
1. 数据迁移的基本概念和操作流程,如数据导出导入工具的使用(exp/imp或expdp/impdp),在线和离线迁移的策略,以及迁移过程中可能遇到的数据一致性和完整性问题。 2. 性能调优的策略和方法,包括监控数据库性能...
随着 Oracle 数据库版本的发展,Oracle 推出了新的导入导出工具 `expdp` 和 `impdp` 来替代旧版的 `exp` 和 `imp`,这些新工具提供了更好的性能和更多的特性。 1. **expdp (Export Data Pump)** - **功能**:`...
在大数据量导入导出的时候,推荐一定要使用管道。 2.2 避免 I/O 竞争 Import 是一个 I/O 密集的操作,避免 I/O 竞争可以加快导入速度。如果可能,不要在系统高峰的时间导入数据,不要在导入数据时运行 job 等可能...
- **性能优化**:根据数据量大小和网络条件,可能需要优化导入导出的并行度和缓冲区大小。 4. **文档的讲解内容**:根据描述,文档会详细介绍exp/IMP的特性,这包括但不限于: - **命令行参数**:如何使用各种...
6. **Oracle Data Pump**:用于高效的数据迁移和导出导入操作,Data Pump比传统的EXP/IMP工具更快,并且支持并行处理,适用于大规模数据传输。 7. **Net Services (formerly known as SQL*Net)**:Oracle的网络组件...
Oracle提供了多种数据导入导出工具,如`expdp`和`impdp`(Data Pump导出和导入)以及传统的`exp`和`imp`。这些工具允许用户将数据库对象和数据导出到文件,然后在需要时导入到另一个数据库,这对于备份、恢复、迁移...
1. **exp imp命令详解**:这是Oracle数据库中的数据导出(exp)和导入(imp)工具,用于在不同数据库之间迁移数据或者备份和恢复数据。exp负责将数据库对象和数据导出到一个二进制文件,而imp则负责从这个文件中重新...
6. **数据导入导出**:Oracle的`IMP`和`EXP`工具是进行数据备份和恢复的重要手段。`IMP`用于导入数据,`EXP`用于导出。在导入时,如果导入的数据包含已存在的记录,但主键不同,新数据不会覆盖旧数据,而是追加到已...
在数据库管理方面,需要掌握的关键知识点包括但不限于:数据字典视图的使用、数据表的创建和管理、索引的创建及优化、数据完整性的维护以及数据导入导出工具(如exp/imp或Data Pump)的使用。这些操作对于确保数据库...
例如,完全导出数据库TEST的命令为`exp system/test12 file=test.dmp full=y`,而导入时则使用`imp system/test12 file=test.dmp fromuser=system touser=system`. 总结起来,Oracle数据库操作实例涵盖了从基础配置...
9. **数据导入导出**:使用EXP和IMP工具进行数据的导出和导入,以及数据泵(Data Pump)的使用,这在数据库迁移和数据备份中非常实用。 10. **数据库故障诊断与解决**:学习如何识别和解决常见的Oracle错误,以及...
这个压缩包的核心内容是“imp”和“sqlldr”这两个工具,它们在数据库管理、数据导入导出方面扮演着关键角色。 1. **Oracle 11.2.0.4**: 这是Oracle Database的一个特定版本,发布于2013年,提供了增强的安全性、...
2. **数据泵(Data Pump)**:这是一个快速的数据导入导出工具,替代了之前的SQL*Loader和EXP/IMP,提供了更高的数据迁移速度和更灵活的数据转换能力。 3. **互联网数据库连接(iDBC)**:Oracle 9i加强了与Web的...
除此之外,Unix下的Oracle命令还包括数据导入导出(`exp`和`imp`)、表空间管理、性能监控(如`v$视图`)、进程管理(`kill`命令)、备份和恢复操作等。例如,`expdp`和`impdp`用于数据泵导出和导入,`lsnrctl`用于...
- **数据导入导出**:演示如何利用impdp/imp命令将数据导入导出到其他数据库。 #### 数据字典与动态视图 - **数据字典**:介绍Oracle 11g的数据字典及其重要性。 - **动态视图**:学习如何利用v$视图获取有关数据库...
**PL/SQL对象和数据迁移工具**:掌握PL/SQL编程基础,以及Oracle的数据导入导出工具,如exp/imp和Data Pump。 28. **SQL*Loader**:使用SQL*Loader快速批量加载数据到数据库。 29-34. **数据一致性、Undo机制、...
Oracle提供多种备份方法,如物理备份(使用RMAN或操作系统的复制工具)和逻辑备份(使用EXP/IMP或导出导入)。恢复则根据备份类型和策略,可能涉及还原、恢复、归档日志切换等步骤。 7. **什么是视图?** 视图是从...
2. 数据泵(Data Pump):Oracle 10g引入了数据泵来替代传统的EXP/IMP工具,提供更快的数据导入导出速度,并支持并行操作。 三、高级特性 1. Real Application Clusters (RAC):Oracle 10g的RAC允许数据库在多个...