小景最近在系统压测相关的工作,其中涉及了Oracle数据库相关的知识,之前考的OCP证书也在此地起了作用。今天的问题是:Oracle用exp导出dmp文件很慢,究竟是什么原因,具体的解决方案都有哪些呢?

下面我逐一来说下,首先列举了一些常见的原因:

1. 数据量大:如果你要导出的数据库包含大量数据,导出时间会显著增加。

2. 硬件资源不足:导出操作可能受到服务器硬件资源的限制,如CPU、内存或磁盘速度。确保服务器具有足够的资源来支持导出操作。

3. 并发操作:如果有其他活动同时在数据库上运行,导出可能会变慢。确保在导出时尽量减少其他数据库活动。

4. 导出参数设置:导出操作的参数设置也可能影响导出速度。检查你的导出参数是否合理配置,可能需要调整它们以提高性能。

5. 数据库对象复杂性:如果数据库包含复杂的表、索引、视图等对象,导出操作可能会变慢。确保数据库对象的结构不过于复杂。

6. 网络带宽限制:如果你是在网络上进行导出,网络带宽可能会成为瓶颈。确保网络连接畅通。

7. 日志和约束:导出操作可能受到数据库中启用的日志和约束的影响。在导出前,考虑禁用或暂时关闭不必要的日志和约束。

那么针对上述原因,使用exp的前提下,将会有什么解决方案呢?

1.可以分多次、小批量导出。

2.提升硬件资源,如:CPU内存、磁盘空间等等。

3.针对并发操作:

1. **查询V$SESSION视图:** 使用以下SQL查询可以列出当前连接到数据库的会话和其活动状态。

SELECT * FROM V$SESSION;

这将显示有关每个会话的信息,包括会话的状态、SQL语句、用户等。

2. **查询V$SQL视图:** 这个视图可以显示当前在数据库中执行的SQL语句。你可以使用以下SQL查询:

SELECT * FROM V$SQL;

这将列出所有当前执行的SQL语句。

3. **查询V$LOCK视图:** 这个视图可以显示当前锁定的对象和会话信息。你可以使用以下SQL查询:

SELECT * FROM V$LOCK;

这将列出所有当前的锁定信息,以帮助你确定是否有并发操作。

4. **Enterprise Manager或监控工具:** 如果你使用Oracle Enterprise Manager或其他监控工具,通常会提供可视化界面,用于监视数据库活动和并发操作。

4.针对导出参数设置,

导出参数的合理配置取决于你的具体需求和环境。以下是一些常见的导出参数及其配置建议:

1. **FILE参数:** FILE参数用于指定导出文件的名称。确保指定一个合适的文件名和路径。如果要分割导出文件,可以使用FILE参数的FILESIZE选项来指定文件大小。

2. **OWNER参数:** OWNER参数用于指定要导出的数据库用户或模式。确保只导出你需要的用户的数据,以减少导出的数据量。

3. **TABLES参数:** TABLES参数可用于指定要导出的表。只导出你需要的表,而不是整个数据库。

4. **ROWS参数:** ROWS参数可用于限制导出的行数。这对于部分数据导出很有用,以减少导出文件的大小。

5. **COMPRESS参数:** COMPRESS参数可用于启用或禁用数据压缩。启用压缩可以减小导出文件的大小,但可能会导致导出操作变慢。

6. **CONSISTENT参数:** CONSISTENT参数可用于指定一致性级别。如果你需要一致性导出,可以启用这个选项,但这可能会增加导出时间。

7. **BUFFER参数:** BUFFER参数用于指定导出操作的缓冲区大小。增加缓冲区大小可能会提高性能,但也会增加内存消耗。

8. **PARALLEL参数:** PARALLEL参数用于启用导出的并行操作。如果你的系统支持并行操作,可以通过适当配置PARALLEL参数来加快导出速度。

9. **LOG参数:** LOG参数用于指定导出操作的日志文件。建议始终指定一个日志文件,以便跟踪导出的进度和任何错误。

总之,合理配置导出参数需要考虑到你的具体需求、数据库大小和硬件资源。调整这些参数以获得最佳性能可能需要一些试验和测试。确保在生产环境之前在测试环境中进行导出并验证结果。

5.针对数据库对象复杂性,确保数据库对象的结构不过于复杂。

6.针对网络带宽限制,可以提高网络带宽,确保网络连接畅通。

7.针对日志和约束,可以在导出前,考虑禁用或暂时关闭不必要的日志和约束。具体操作如下:

**1. 禁用外键约束:** 如果你知道外键约束不会在导出期间违反,你可以禁用它们,然后在导出后重新启用。示例 SQL 命令:

-- 禁用外键约束
ALTER TABLE your_table_name DISABLE CONSTRAINT constraint_name;

-- 启用外键约束
ALTER TABLE your_table_name ENABLE CONSTRAINT constraint_name;

**2. 禁用触发器:** 如果你的数据库中有触发器,你可以禁用它们,然后在导出后重新启用。示例 SQL 命令:

-- 禁用触发器
ALTER TRIGGER trigger_name DISABLE;

-- 启用触发器
ALTER TRIGGER trigger_name ENABLE;

**3. 禁用检查约束:** 你可以禁用检查约束,然后在导出后重新启用。示例 SQL 命令:

-- 禁用检查约束
ALTER TABLE your_table_name DISABLE CONSTRAINT constraint_name;

-- 启用检查约束
ALTER TABLE your_table_name ENABLE CONSTRAINT constraint_name;

**4. 临时禁用日志记录:** 你可以将表设置为不记录日志,以减少写入日志文件的操作。示例 SQL 命令:

-- 临时禁用日志记录
ALTER TABLE your_table_name NOLOGGING;

-- 恢复正常日志记录
ALTER TABLE your_table_name LOGGING;

请注意,禁用或暂时关闭不必要的日志和约束是一个谨慎的操作,需要小心执行,以免影响数据完整性和数据库性能。同时禁用这些约束和日志记录可能会影响数据完整性和数据库操作的追踪,确保在导出操作完成后及时启用它们,并在生产环境中小心操作。此外,建议在非生产环境中进行测试以确保不会引入问题。

以上是针对exp命令导出慢的一些优化建议,那么如果不用exp命令,有没有其他好的解决方案呢?小景列出了以下具体方案:

当不使用传统的`exp`工具时,以下是一些备选方案的更详细说明:

1. 使用RMAN备份:
- **步骤:**
- 使用Oracle Recovery Manager (RMAN) 工具创建数据库备份。
- 在备份完成后,将备份文件(通常是`.bak`或`.dbf`文件)复制到另一个位置,以便进一步处理。
- 可以使用RMAN来还原备份到另一个数据库,然后从那里导出数据。

2. 使用数据库复制工具:
- **步骤:**
- 使用数据库复制工具(如GoldenGate、Dbvisit Replicate等)创建一个数据库的副本。
- 从副本中导出数据而不会对生产数据库造成影响。
- 这个方法适合需要实时或定期导出数据的情况。

3. 使用ETL工具:
- **步骤:**
- 使用ETL工具配置数据提取任务,连接到数据库并选择要导出的数据。
- 转换和处理数据,然后将其导出到目标文件或数据库。
- ETL工具通常提供强大的数据转换和处理功能,适合大规模、复杂的数据导出需求。

4. 使用SQL查询导出数据:
- **步骤:**
- 编写SQL查询来选择要导出的数据,可以使用`SELECT`语句。
- 将查询结果保存为文本文件(如CSV)或其他格式,可以使用SQL*Plus或其他数据库客户端工具来实现。
- 这适用于小规模的数据导出或特定查询的情况。

5. 使用其他导出工具:
- 一些第三方导出工具可能提供不同的导出选项。你可以选择与你的需求和数据库兼容的工具,按照其文档进行操作。

每种备选方案都有自己的优点和限制,需要根据你的具体情况来选择。例如,如果需要全量数据库备份并进行还原操作,RMAN可能是最合适的选择。如果只需要将一部分数据导出到其他系统,使用ETL工具或SQL查询可能更方便。数据库复制工具适用于需要实时或定期导出数据的情况。

选择合适的备选方案通常取决于你的需求、数据库大小、性能需求和可用资源。

以上就是小景为您带来的全部内容,希望可以实际解决您的问题。

小景的Dba之路--Oracle用exp导出dmp文件很慢的更多相关文章

  1. oracle用exp导出dmp文件时发现空表没有导出来

    问题: 今天,从同事电脑考oracle11g中dmp文件,在自己电脑导入,发现少了很多表,而且少的这些表都是空表. 原因: oracle11g 默认的deferred_segment_creation ...

  2. Oracle 数据库导入导出 dmp文件

    转自: http://hi.baidu.com/ooofcu/blog/item/ec5d1f9580d41f007af48077.html 首先询问对方数据库的表空间名称和大小,然后在你的oracl ...

  3. 转载-Oracle 数据库导入导出 dmp文件

    首先询问对方数据库的表空间名称和大小,然后在你的oracle中建立相应表空间,最后使用命令导入.导出数据.补充:1.要新建一个数据库: Oracle数据导入导出imp/exp就相当于oracle数据还 ...

  4. Oracle的导入导出 DMP 文件

    普通 导入: 将数据库完全导入,用户名userName 密码PassWord导入文件位置 E:\work\dmp\xxxxx.dmp (注意:导入的用户必须要跟导出时候的用户一致) imp userN ...

  5. oracle导入及导出dmp文件

    导出数据库步骤: exp 用户名/密码@实例名 file=导出的dmp文件存放路径(绝对路径) log=导出日志存放路径(建议记录log文件,方便后续核实数据是否完整导出和导入) 导入数据库步骤: 1 ...

  6. oracle数据库导入导出dmp文件oracle命令

    在控制台下导入imp scott/密码@orcl file=文件路径 full=Y 导出 整个数据库TEST 用户名system  密码1234 exp system/1234@TEST file=文 ...

  7. Oracle导入导出dmp文件

    目 录 目             录...3 1      说明...3 2      导出dmp文件...3 3      导入dmp文件...5 3.1            环境准备...5 ...

  8. Oracle数据库导入、导出dmp文件

    oracle导出数据: 1.该处的导出数据需要在dos命令行下执行,进入到oracle客户端路径下执行(该处也可为oracle客户端路径配置系统变量),如: E:\oraclexe\app\oracl ...

  9. oracle 如何查询/修改dmp文件的字符集

    1.如何查询dmp文件的字符集 用oracle的exp工具导出的dmp文件也包含了字符集信息,dmp文件的第2和第3个字节记录了dmp文件的字符集.如果dmp文件不大,比如只有几M或几十M,可以用Ul ...

  10. oracle导入导出 dmp文件

    oracle导入导出 dmp文件: 打开cmd窗口,在cmd窗口下,按照个人需要输入以下对应的命令: 1.imp 用户名/密码@网络服务名 file=XXX.dmp fromuser=XXX tous ...

随机推荐

  1. 基于python+django的宠物商店-宠物管理系统设计与实现

    该系统是基于python+django开发的宠物商店-宠物管理系统.是给师妹开发的课程作业.现将源码开放给大家.大家学习过程中,如遇问题可以在github咨询作者. 演示地址 前台地址: http:/ ...

  2. 即构推出低延迟直播产品L3,可将直播延迟降到1s

    近日,全球云通讯服务提供商ZEGO即构科技推出低延迟直播产品Low-Latency Live,简称L3.这款产品对传统CDN直播中"延迟较大.弱网抗性差.观众端内容不同步"等问题进 ...

  3. Matlab背景颜色修改

    背景 将修改内容添加到matlab的matlab.prf文件中,文件路径为在matlab中运行prefdir的结果,直接添加这些内容保存就好. github主题制作地址,里面有多种matlab主题配色 ...

  4. 【做题笔记】树形 dp

    luoguP1122 最大子树和 Solve 设计状态 \(dp[i]\) 表示子树 \(i\) 的最大点权和,则有: 当 \(dp[son[i]] > 0\) 时,选以 \(son[i]\) ...

  5. loopback4:单元测试冻结时间

    解决方案 import {expect} from '@loopback/testlab'; import sinon from 'sinon'; describe('example test', ( ...

  6. Unity的IPreprocessBuildWithReport:深入解析与实用案例

    Unity IPreprocessBuildWithReport Unity IPreprocessBuildWithReport是Unity引擎中的一个非常有用的功能,它可以让开发者在构建项目时自动 ...

  7. webpack是如何处理css/less资源的呢

    上一篇文章 体验了webpack的打包过程,其中js文件不需要我们手动配置就可以成功解析,可其它类型的文件,比如css.less呢? css-loader 首先,创建一个空文件夹,通过 npm ini ...

  8. Java BigDecimal 分析

    1.使用理由: Double类和Float类可以对16位有效数字的数进行精确运算,但对于超过16位有效数字的数,会丢失精度.所以使用BigDecimal类来精确计算超过16位有效数字的数. 2.引入包 ...

  9. 如何在达梦数据库中追踪慢SQL

    在达梦数据库中,我们可以通过开启日志记录和设置最小执行时间来追踪慢SQL.下面是具体的步骤: 1. 修改dm.ini文件 使用以下命令编辑dm.ini文件: cd /home/dmdba/dmdbms ...

  10. 【技术积累】Java里的volatile关键字到底能干嘛?

    7.4 最害怕的一集 - volatile 7.4.1 最简单的一集 - volatile 语义 (难度 : ) 读 -> 读一个 volatile 必须从 主内存读 写 -> 写一个 v ...