El proveedor ODP.Net de Oracle utiliza el enlace por posición de forma predeterminada. Para cambiar el comportamiento para enlazar por nombre. Establezca la propiedad BindByName en verdadero. Entonces puede descartar la doble definición de parámetros.
using(OracleCommand cmd = con.CreateCommand()) {
...
cmd.BindByName = true;
...
}