gpt4 book ai didi

假脱机到文件时 Oracle 查询输出不完整

转载 作者:行者123 更新时间:2023-12-01 15:17:14 25 4
gpt4 key购买 nike

最近我不得不增加数据提取脚本的容量,我发现输出缺少源表中存在的一些数据。谁能就可能导致此问题的原因提出一些想法?

背景

提取过程是我从 sqlplus 客户端(在 Windows Server 2008 中运行)执行的一个 sql 脚本,它将查询结果假脱机到输出文件。

提取的数据包括客户记录及其交易记录。每个客户每个月可能有几百条交易记录。在增加负载之前,我们在过去 3 个月的交易中提取了大约 10 万个客户。现在已经增加到 100 万。我预计输出文件约为 30GB。

交易表按月划分。提取脚本包括一个单独的查询假脱机每个分区。似乎输出了 3 个月的第一笔交易,而第二个月和第三个月的交易丢失了(尽管进程日志显示它仍然花时间查询所有分区)。

一些有趣的进展

此 sql 脚本在 perl 脚本中调用。本来sql脚本是一次性调用的。我决定拆分 sql 并依次调用每个查询,输出的大小似乎增加了三倍(大约 30GB)。为什么会发生这种情况? (这可能有助于解决下面的实际问题。)

当前问题

第二个数据库有 5 倍多的客户和 2 种类型的交易表,每个都划分为日常分区。因此,为了提取 3 个月的事务,脚本查询 2 个单独表上的 90 个分区。同样,第1个月的数据好像输出成功了,但是第2个月和第3个月的数据都不见了。上述解决方案不适用于此数据库。

其他不寻常的是,从 2 个事务表输出的 2 个文件的大小几乎都是 4GB(4,294,967,362 字节)。会不会是 Oracle 或其他东西限制了提取大小?

最佳答案

Windows 的版本是什么?磁盘上的文件系统是什么?从内存来看,FAT32 文件系统有文件大小限制。认为您需要 NTFS 超过 2G(或者可能是 4G)。我怀疑您在 Windows 或 sqlplus 本身中达到了该限制。

你可以通过尝试缩小范围

sqlplus > file.txt

与使用 spool 命令相反。如果可行,则看起来像是 sqlplus 问题。如果不是,则更有可能是文件系统问题。

关于假脱机到文件时 Oracle 查询输出不完整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6690732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com