Whenever Oracle is prevented from sharing an execution plan of an already seen parent cursor, it hard parses a new plan and externalizes the corresponding non-sharing reason in the gv$sql_shared_cursor dedicated view. As of Oracle 12cR2 there are as many as 66 non-sharing reasons of which I have already explained 10 in the following series of articles I wrote for Toad World:
- Part 1 :hash_match_failed and load_optimizer_stats
- Part 2 : roll_invalid_mismatch and top_level_rpi_cursor
- Part 3 : bind_mismatch and stb_object_mismatch
- Part 4 : pq_slave_mismatch and optimizer_mismatch
- Part 5 : language_mismatch and auth_check_mismatch
- Part 6 :
- Part 7 :
- Part 8 :
- Part 9 :
