我们是ETL商店并且大量使用外部表格。通常会将这些表查询到已填充的登台表。我很惊讶查询从外部表返回数据所花费的时间。
通常在返回任何结果之前有大约15秒的延迟。即使在数据文件不包含数据且数据文件不存在的情况下也是如此。延迟似乎与文件中的行数无关。
我正在登录数据库服务器本身,外部表数据文件位于该数据库服务器上。
这是预期的行为吗?
文件系统操作(ls,vim)至少在较小的文件上发生,没有延迟。
本地磁盘上的所有文件。
Oracle 12.1。
Oracle Linux Server 6.6版
答案 0 :(得分:2)
我建议您查看或查看Oracle 12.2发行说明。 Exadata的大数据设备固件(22911748)和12.2中的修补程序都有一个修补程序。
它解决了特定于访问外部表的视图。您可能会受到此视图的影响。视图名称为LOADER_DIR_OBJS,用于查询外部表指向的目录。
我们的客户遇到了非常类似的问题,Oracle建议安装包含补丁的12.2版本。
因此,我们目前正在测试12.2版本。无论何时读取外部表,它都必须能够访问LOADER_DIR_OBJS系统视图。通常,性能较差来自此视图,该视图访问SYS.OBJ $和SYS.X $ DIR系统对象,因为查询计划不是最佳的。有些人找到了工作。 (请参阅Oracle变通方法文档ID 2034938.1以了解它是否适用于您)。