生产环境一套历史库,oracle 12.1.0.2,PSU打到20170718,在做expdp导出的时候很慢,同等数据量,其他环境十分钟解决战斗,该环境需要四十分钟左右,而且版本相同。
查看下expdp进程对应的会话等待事件:latch:shared pool
对应的语句是:
SELECT process_order, processing_state, processing_status
像这种情况,大多数情况下都是踩到oracle的bug,果不其然,在MOS上找到了如标题所示的bug,沾沾自喜后发现,我当前环境已经应用了该bug的补丁。
好在这样的问题并非首次遇到,定是oracle为了修复某个bug,结果导致其它某个bug被重新打开这样类似的情况。对于这样的问题,只能在MOS上不厌其烦的查找文档资料。
由于现在是事后追写,很多当时的细节,包括当时找到的文档资料都没了,只剩下一个结果。便是我当时打一个合并补丁21554480解决了该问题,当时有多个类似的补丁,但做补丁检查的时候会有冲突,最后选择了该补丁。
补丁应用后,expdp问题得以解决。
究其原因,怀疑跟该历史库上的分区表建了大量的空分区有关系,导致踩了oracle的bug。