首页 > 数据库 >小景的Dba之路--Oracle用exp导出dmp文件很慢

小景的Dba之路--Oracle用exp导出dmp文件很慢

时间:2023-10-18 14:46:45浏览次数:42  
标签:Dba 禁用 数据库 导出 dmp -- 参数 SQL 日志

小景最近在系统压测相关的工作,其中涉及了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,禁用,数据库,导出,dmp,--,参数,SQL,日志
From: https://www.cnblogs.com/ailanlan/p/17772288.html

相关文章

  • C# 虚方法virtual详解(转载)
    C#虚方法virtual详解在C++、Java等众多OOP语言里都可以看到virtual的身影,而C#作为一个完全面向对象的语言当然也不例外。虚拟函数从C#的程序编译的角度来看,它和其它一般的函数有什么区别呢?一般函数在编译时就静态地编译到了执行文件中,其相对地址在程序运行期间是不发生变化的......
  • 关于一款软硬一体的RTSP/Onvif协议视频平台EasyNVR安防视频监控平台的介绍
    EasyNVR是一种网络视频录像机(NetworkVideoRecorder),属于软硬一体的产品,支持RTSP/ONVIF协议接入,体积小巧,通电连网即可成功运行,部署操作简单,低功耗,支持7x24小时不间断运行,省去自建视频服务器的高额费用,专属视频服务,免除了与其他硬件的相互影响,可云端运维。作为一种专业的视频监......
  • 财运不好怎么办?如何催旺财运修补财库?
    财富与权贵是人们终其一生所追求的发达、显赫的标志。古人也说“财官多为美好之物,不得损伤”,更有财官印食库藏之说。那么你知道什么是财库吗?为什么要开财库?补财库呢? #什么是财库#所谓财库,就是积存钱财的仓库。我们每个人,自打一生下来就都会有一个财库,财库与一个人的福禄......
  • 11111
    torch.manual_seed(seed)os.environ['PYTHONHASHSEED']=str(seed)torch.cuda.manual_seed(seed)torch.cuda.manual_seed_all(seed)np.random.seed(seed)random.seed(seed)torch.backends.cudnn.benchmark=Falsetorch.backends.cudnn.deter......
  • 软件维护
        ......
  • 如何限制类对象只能建立在堆上或者栈上?
    整理至:链接在C++中,类的对象建立分为两种,一种是静态建立,如Aa;另一种是动态建立,如Aptr=newA;这两种方式是有区别的。栈上:编译器在栈上分配内存,然后调用构造函数初始化内存空间堆上:调用new分配合适的堆内存,然后调用构造函数初始化内存空间1、只能建立在堆上方法一:将构造函数......
  • DCS_HADDOP_Introduction
     Haddop https://www.bilibili.com/video/BV1sb4y1k7cQ?p=1&vd_source=8b9de621639420a0ceb703aceed712f7 第一章、大数据简介一、概述大数据:无论哪个机构对大数据进行定义,实际上都是围绕对海量数据进行快速有效的处理二、特点1.Volumn:数据体量大。2.Variety:种类样......
  • 山西汾酒分析
    山西汾酒交易记录及分析买入时间点:2023-09-28清仓时间点:2023-10-161.2023-09-28买入分析1.1基于五浪分析2023-09-28感觉走到了4浪底部,感觉会即将走五浪1.2基于boll通道来看,到轨道下沿了boll口收紧,会有大概率向中轨反弹,当做震荡行情来做2.2023-10-16清仓分析2.1基......
  • 169. 多数元素
    给定一个大小为n的数组nums,返回其中的多数元素。多数元素是指在数组中出现次数大于⌊n/2⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1:输入:nums=[3,2,3]输出:3思路本题常见的三种解法:哈希表统计法:遍历数组nums,用HashMap......
  • 新手教程系列:群晖QuickConnect:最简单的群晖外网访问NAS工具
    通过群晖Synology免费提供的QuickConnect服务,您可在外部网络轻松连接到群晖SynologyNAS,而无需设置端口转发规则或其它复杂的网络设置。QuickConnect可让您通过一个简单的可自定义地址(如 quickconnect.to/example)进行连接。这是一个简单易用,快捷部署的外网访问方式,适合群晖......