针对之前在生产环境中使用sql*loader的性能问题,最近一直在想使用外部表的oracle_datapump来替代它。 昨天下午做了大量数据的测试,比较了这两种方案。最后发现在一定的限定条件下,从很多细节来看 oracle_datapump要更胜一筹。 首先使用sql*loader对于clob,blob的数据相比普通表的处理要一些额外的工作,但是这些限制或者额外工作再oracle_datapump中就可以很方便的使用,oracle_datapump支持的数据类型要更丰富。 在生产环境中,迁移数据的时候,
今天,系统中的一个业务处理莫名地执行了6个小时都没有结束,正常处理也就是3分钟左右,对原因进行定位,发现是在Oracle客户端上同步执行一个命令没有响应。今天来分享一下这个问题,让更多的人避开这个坑。
前面一文简单介绍了 Oracle 大数据量导出工具——sqluldr2 的安装与使用,sqluldr2 的诞生主要是用于将大批量的 Oracle 数据快速导出成 CSV/Text 文本格式,方便导入到其他数据库中,如今国产化进行的如火如荼,这个工具也是在国产数据库迁移中使用比较广泛的工具,值得大家去学习与使用,今天要说的是 Oracle 数据库自带的数据导入工具 SQL*Loader(sqlldr),只要你安装了 Oracle 数据库,那么这个工具就存在于 ORACLE_HOME/bin 目录下,它的功能是将从其他数据库中导出的 DAT/CSV/Text 文件加载到 Oracle 数据库中。数据泵导入需要 dmp 文件才可以,执行 insert 语句插入需要 .sql 文件才行,当然外部表的形式也可以,但外部表没法编辑且文件位于数据库外,不能 update 编辑数据则考虑 sqlldr 直接加载到 Oracle 数据库中更为方便。
今年以来,在某客户现场遇到了2次HPUX IA64平台11g及12c某些版本登陆速度缓慢的问题(包含本地及远程sqlplus/jdbc登陆都慢),经过大量测试分析,最终确定Oracle的某些PSU存在缺陷,导致在HPUX IA64平台上登陆时间大幅增加。
外部表只能在Oracle 9i 之后来使用。简单地说,外部表,是指不存在于数据库中的表。通过向Oracle提供描述外部表的元数据,我们
SQL*Loader由一个输入控制文件来控制整个装载的相关描述信息,一个或多个数据文件作为原始数据,其详细组成结构包括
1.创建序列 CREATE SEQUENCE SEQ_ROAD_NETWORK_PLAN MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 10 NOORDER NOCYCLE ; 2.查看建表DDL语句 SELECT DBMS_METADATA.GET_DDL('TABLE','表名大写','用户大写') FROM DUAL; 同理可以更换第一个参数的名字查看其他对象的DDL。 3
最近根据业务需要加载一批数据,在生产环境中不到半个小时就完了,可是到了测试环境,竟然跑了6个多小时,另外测试环境和生产环境的数据情况都基本差不多,主机配置也基本类似。 大家的注意力都集中到了sqlldr的加载性能上。等到他们找到我时,已经讨论了不少关于direct,convention加载的各种情况了,看似工作也做了不少了。 然后我通过邮件历史记录看到大家还讨论了可能是index导致的结果。 等到邮件转到我这的时候,已经问题算升了一个等级了。我首先要确定的就是具体的环境,在那台服务器上跑sqlldr,要把
近期在做一些国产数据库的 POC 工作,在数据迁移导出时用到了数据导出工具 sqluldr2,它是一款十分不错的 oracle 数据导出工具,还支持导出时同时生成 sqlldr 的控制文件,它可以将数据以 TXT/CSV 等格式导出,能导出亿级数据为 excel 文件,包含32、64 位程序,不仅在大数据量导出方面速度超快,导入速度也是非常快速。
使用sql*loader是大型项目中数据迁移的利器。如果是外部系统,其他数据库到oracle的数据迁移,使用文本式文件是最兼容的方式。 sqlldr的加载效率是很高的,同时在oracle 10g以后推出的oracle_loader效率也不容小视。 sqlldr提供了额外的功能来生成external_table的创建和insert脚本,不过control file是关键,今天尝试的时候就出现了一些问题。 > sqlldr n1/n1 control=NAME_DATA_sqlldr.ctl externa
SQL*LOADER是ORACLE的数据加载工具,通常用来将操作系统文件(数据)迁移到ORACLE数据库中。SQL*LOADER是大型数据仓库选择使用的加载方法,因为它提供了最快速的途径(DIRECT,PARALLEL)。
使用root用户创建目录 示例:mkdir /orctmp 将目录授权给oracle用户 示例:chown -R oracle:oracle /orctmp
今天说的这个案例发生在年初,某银行的一个数仓系统整体性能不佳,其中还有个奇怪的问题就是,两个结构比较类似的表,用sqlldr加载4000万左右的数据,一个需要1.5小时,另一个就要4.5小时,这对一个跑批业务来说影响是非常大的。客户自查了挺长时间也没找到原因。
一直以来我们想要推进内部的自动化系统,但是总是会遇到各种各样具体的问题,有时候我们准备好了,但是总是会有一些因素的干扰,再加上工作时间的安排,有些事情就一拖再拖。《人民的名义》里说得好,打铁还需自身硬
在测试环境中做了3轮数据迁移的演练,最终到了生产环境中,还是出现了不少问题,经过大半夜的奋战,终于是数据都迁移成功了。 1)共享存储的配置问题 共享存储使用NFS来共享存储,但是在实际操作中发现配置出了问题,原因是因为两台服务器上的用户不同在,目标机器上没有任何写权限。 -rw-r--r-- 1 3160 dba 6608 Jun 26 23:35 tmp_gunzip.sh -rw-r--r-- 1 3160 dba 624 Jun 26 23:30 tmp_gzip
有多种方式可以将文本文件的数据导入到数据库中,例如,利用PLSQL Developer软件进行复制粘贴,利用外部表,利用SQL*Loader等方式。至于EXCEL中的数据可以另存为csv文件(csv文件其实是逗号分隔的文本文件),然后导入到数据库中。
数据库表: • 表输出 • 更新,删除,插入/更新 • 批量加载(mysql,oracle) • 数据同步 文件: • SQL 文件输出 • 文本文件输出 • XML 输出 • Excel Output/Excel Writer 其他(报表、应用)
在生产环境的数据迁移中,发生误操作真是很不愿意看到,今天自己总结了一下,从个人的经验来看有以下的几种操作或者是失误导致的问题。有一些错误自己已经犯过。 外键 不管是使用imp/impdp,sqlldr还是使用Insert append的方式导入数据,如果存在外键的约束,在数据导入前最好都设置为disable,要不数据导入的时候很可能发生冲突,因为批量的数据导入很可能开启多个并发进程,如果你不能完全控制导入的先后顺序,最好还是disable掉。 触发器 触发器在数据导入前最好和开发组确认,如果忽略了这个
最近碰到这样一个问题,类似下面的架构形式。 目前应用1是一个另外一个网段的系统,负责一块业务,而应用2是目前我所负责的数据库所在的环境里。 现在因为业务需要,需要从应用1来推送一部分数据到应用2,只在
若是少量数据;可选择的解决方案有很多。常用的用 Pl/SQL developer工具,或者手动转换为 INSERT 语句,或者通过API。但数据量大;用上面的方法效率太烂了。本文来说说 Oracle 数据的加载和卸载。
ETL是数据抽取(Extract)、清洗(Cleaning)、转换(Transform)、装载(Load)的过程
作者:eygle 原文链接: http://www.eygle.com/archives/2007/02/dul_vs_aul.html ----
说起数据迁移,感觉也算是有些感受了,但是最近参与的几个迁移案例还是和以前大大不同,以前的迁移项目是比拼停机维护时间,尽可能在短时间诶导入大批量的 数据,有参与表空间传输的场景,还有跨平台的数据迁移,数据库迁移式升级等等,相对难度大一些的算是增量数据的迁移场景。为此也算把 sqlldr,datapump和exp/imp玩了一圈,最后写了一个小的工具使用外部表迁移,也算是有了一些谈资。 最近的迁移项目还是有些特殊,有schema级别的迁移,这种情况数据库版本的影响就没有那么大了,基本就是schema级别
exp/imp 对于数据结构的复制和同步,还是比较理想的工具。 在数据量比较小的情况下,这个工具的性能要远远好于datapump,而且重点推荐,他对于各种常用数据类型的支持还是很不错的。 有一些特性,在某种程度上要好于datapump,在做数据迁移的时候,commit特性还是很重要的。因为通过datapump碰到了很多undo空间不足带来的问题。 datapump 在10g版本开始,就开始推荐使用的datapump,算是对exp/imp的补充说明。在使用数据量中等的数据迁移中,是比较好的方案,它有几个亮
DBA和开发都是两个可爱的团队,如果合作起来,那战斗力可是杠杠的。如果合作不愉快,那就是一件简单至极的事情都能扯皮几天几夜,而且还解决不了。 今天出公司的时候碰见一个开发同事,因为最近和开发同事打交道太多了,我都分不清到底他到底是哪个team的,然后就迷迷糊糊搭上了话,然后简单问了几句话,发现我潜意识里认错人了。不过最近碰到的有些开发同事都还比较配合。值得赞扬,但是还是有一些代沟的。 案例1: 偶尔会接到开发同事的紧急求助 开发同事 [10:46]: 建荣 10月20号xxxx给你下过工单开通数据库访问
环境: 服务端:RHEL6.4 + Oracle 11.2.0.4 客户端:WIN10 + Oracle 11.2.0.1 client 目录:
导入sql表结构 • 用sqlplus命令登录Oracle sqlplus system/password@orcl • 使用@命令导入sql文件 SQL> @/path/to/file/sample.sql 导入数据 • 导入ctl文件 在命令行中,执行 sqlldr userid=username/password control=sample.ctl ---- Previous Oracle数据库列出所有表
今天需要导一些数据,从excel导入到数据库中。 没有装现成的plsqldev,只能用sql*loader来弄了。 首先我把excel文件的内容转换成csv文件,以逗号分隔,在另存外excel文件的时候有那个选项。 然后我在目标库中创建了如下的表。 create table sql_summary(sql_time varchar2(100),sql_id varchar2(100),cpu_time varchar2(100),disk_time varchar2(100),exec_time varch
You want to access employee details contained in flat files created by an application.
sqlldr是在处理大数据量的操作中建议采用的方式,它有许多性能想关的开关,能最大程度的减少redo,undo的生成,控制数据的处理方式(insert,append,replace,truncate) 因为项目需要,对比datapump性能还是不理想,所以还是希望采用sqlldr来做。个人做了简单的测试。 根据thomas kyte的介绍,并行执行路径加载时最快的方式,能够直接写只格式化的数据块,最大限度的减少redo,undo的生成。 先写了如下的脚本。可以动态的从某个用户的表中生成元数据。 sqlp
Oracle的数据恢复处理,有各种方法工具支持,在这方面,我算是一个新手,也是处于不断的学习中。
1.上传oracle精简版客户端到服务器/tmp目录下,解压到/opt目录下,改名为oracleclient
Oracle创建数据库时指定字符集,一般不能修改,整个数据库都是一个字符集。虽然还支持指定国家字符集,用于nvarchar2类型,不过很少用到。常用的字符集:AL32UTF8和ZHS16GBK,其中AL32UTF8与UTF8几乎是等价的。一个汉字在AL32UTF8中占三个字节,而在ZHS16GBK中占用两个字节。
bindsize -- 常规路径绑定数组的大小 (以字节计) (默认 256000)
本文介绍了如何使用ODU(Oracle Data User)从快照中恢复数据,并使用ODU将数据导出为CSV文件。通过使用ODU,可以方便地恢复被删除的数据,并将其导出为CSV文件,方便后续使用。
PostgreSQL官方文档指定了以下三种备份方法,详见:https://www.postgresql.org/docs/current/backup.html
SQL> create user oracle identified by oracle;
在使用Python进行数据库开发时,您可能会遇到各种各样的错误。其中一个常见的错误是pymysql.err.InterfaceError: (0, '')。这个错误通常与数据库连接相关,表示在连接到数据库时出现了问题。
🐱🐯 猫头虎博主在此!今天我为大家带来了一个深入探讨的话题:如何远程连接PostgreSQL,并给出一些建议确保连接的安全。在这篇文章中,我们将深入挖掘PostgreSQL的远程连接机制,配置方法,以及如何确保这种连接方式的安全性。对于经常搜索“如何远程连接PostgreSQL”或“PostgreSQL远程连接安全建议”的读者来说,这篇文章是一份不可多得的宝典。🚀
在第一个 Python 项目中,需要等待记录被插入 Oracle 表中,一旦记录存在,就调用 Python 函数。目前使用 cx_Oracle 库,采用一种无限循环的方式来查询表。如果记录存在,就调用函数,然后等待 5 秒后重新开始循环。但这种方式效率不高,等待时间太长,并且系统看起来很慢。如果不想要每秒都向数据库发送查询,是否有其他方法来等待记录并执行操作?
在这篇文章中,我们将详细介绍如何在Python中使用pymysql模块来操作MySQL数据库。pymysql是一个在Python程序中用来连接MySQL服务器并进行相关操作的库,它提供了丰富的API接口,可以满足各种操作MySQL数据库的需求。
认证是一种安全措施,用于识别用户并验证他们是否有权访问系统或服务器。它能够保护系统免受未经授权的访问,确保只有经过验证的用户才能使用系统。
MySQL是一种关系型数据库管理系统,用于存储数据。在高并发的场景下,MySQL的读写性能往往成为瓶颈。为了提高应用程序的性能和响应速度,可以使用缓存技术,将经常访问的数据缓存到内存中,避免频繁地读取数据库。
Navicat Premium 16 for Mac中文激活版是一个可多重连接的数据库开发工具,Navicat 的功能足以符合专业开发人员的所有需求,但是对数据库服务器的新手来说又相当容易学习。它可让你以单一程序同時连接到目前世面上所有版本的主流数据库并进行管理和操作,支持的数据库有:MySQL、SQL Server、SQLite、Oracle 及 PostgreSQL。让管理不同类型的数据库更加方便。
已解决:pymssql._pymssql.OperationalError: (20009, b’DB-Lib error message 20009, severity 9:\nUnable to connect: Adaptive Server is unavailable or does not exist (服务器地址)\nNet-Lib error during Unknown error (10060)\nDB-Lib error message 20009, severity 9:\nUnable to connect: Adaptive Server is unavailable or does not exist (服务器地址)\nNet-Lib error during Unknown error (10060)\n’)
在计算机领域,SAN(Storage Area Network)和NAS(Network Attached Storage)都是常见的存储解决方案。它们在数据存储、访问方式和应用场景上有着显著的区别。本文将详细介绍SAN和NAS的定义、特点以及它们之间的区别。
语音数据库作为缓存和储存服务当中非常重要的一环,他在使用各项设备以及完成各项业务开发常见的时候尤为重要。所以我们在使用云数据库的时候,能够更全面的进行各种数据服务的操作。但是不熟悉云数据库的朋友就不知道该如何使用云数据库接口,自然也就无法使用云数据库当中的各项功能了。
概念:主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主。
在《MySQL的体系结构》一文中,说互联网应用的数据是数据库的数据,这种是说法不够严谨的,其实对于网站来说所有的信息都可以看成是数据,包括图片、文本、文档、音视频等,这些数据按照存储分类可以分为非结构化数据、结构化数据、半结构化数据。
领取专属 10元无门槛券
手把手带您无忧上云