我们是一家ETL商店,大量使用外部表。通常,将这些表查询到已填充的登台表。对于查询从外部表返回数据所花费的时间,我感到很惊讶。
通常,返回任何结果大约需要15秒的延迟。即使在数据文件不包含数据且数据文件不存在的情况下也是如此。延迟似乎与文件中的行数无关。
我正在登录数据库服务器本身,外部表数据文件位于该数据库服务器上。
这是预期的行为吗?
至少在较小文件上的文件系统操作(ls,vim)没有延迟。
本地磁盘上的所有文件。
甲骨文12.1。
Oracle Linux服务器6.6版
我建议您查看或研究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,以了解它是否适用于您)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句