I had a simple query where I was pulling data on a user, but binding with :user, as in
select * from user_table u join other_table o on u.user_id = o.user_id where u.user_id = :user
It took a good fifteen minutes of getting the above error (and scratching my head… and maybe a bit of cursing) before it dawned on me that the reason for this was the use of a reserved word in Oracle. Changing the binding to :u_name worked instantly. Other reserved words can be found here; binding on those words will cause some grief.