Я могу только догадываться по причинам, указанным в комментариях
con.OpenWithNewPassword("panther"); // What call is this making with the database?
Вероятно, он принимает существующее соединение со всей его проанализированной строкой подключения и любым внутренним состоянием et c и изменяет только пароль , затем снова пытается установить соединение. Строка подключения содержит множество данных (пользователь, пароль, хост и т. Д. c), которые будут анализироваться и использоваться внутри на протяжении всего жизненного цикла объекта подключения. Может быть допустимый вариант использования, чтобы не делать все это снова, а просто изменить пароль и снова подключиться к базе данных. (Я лично не могу придумать ни одного, если только транзакции не сохранятся при циклическом подключении; я бы просто установил новое соединение с новым паролем)
По крайней мере, не нарушая лицензионного соглашения, вы вероятно, можно было бы использовать окно локальных переменных отладчика, чтобы посмотреть на ваше соединение с его внутренней переменной для хранения пароля (под узлом не-publi c members, потому что OracleConnection, похоже, не имеет свойства пароля publi c, как это делает другой материал), получите его хэш-код или значения скриншота и c, затем вызовите OpenWithNewPassword и посмотрите, изменится ли пароль, но все остальное останется таким же, как до открытия соединения .. Это было бы разумным показателем того, что он делает