Мы недавно перенесли нашу базу данных с Oracle 11g на 12 c в PROD. Следовательно, на нашем веб-сайте я изменил ConnectionString для подключения к новому серверу. Но при подключении к серверу PROD возникает ошибка. Ошибка возникает при выполнении вызова Oracle DB.
Code: Changed only the host names in below connection string:
<add key="ConnectStringOracle_p" value="Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = XXXX-scan.astrazeneca.net)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = scp))); User Id=aaaa; Password=samplepwd"/>
DB Call:
try
{
Oracle oracle = this.ConfigureOracle(new Oracle(connectString));
System.Data.OracleClient.OracleConnection con = new System.Data.OracleClient.OracleConnection(connectString);
System.Data.OracleClient.OracleCommand cmd = new System.Data.OracleClient.OracleCommand(command, con);
foreach (AZ.CISS.ARCH.DBController.Parameter p in param)
{
if (!String.IsNullOrEmpty(p.Key) && p.Value != null)
cmd.Parameters.AddWithValue(p.Key.Trim(), p.Value);
}
System.Data.OracleClient.OracleDataAdapter apap = new System.Data.OracleClient.OracleDataAdapter(cmd);
DataSet ds = new DataSet();
returnTable = new ExtendedDataTable();
apap.Fill(ds);
}
Ошибка при использовании 32-битного oracle клиента v12.2: ИСТОЧНИК: System.Data.OracleClient СООБЩЕНИЕ: Попытка load Oracle клиентские библиотеки сгенерировали исключение BadImageFormatException. Эта проблема возникает при работе в 64-битном режиме с установленными 32-битными Oracle клиентскими компонентами
Ошибка при использовании 64-битного клиента v12.2: ИСТОЧНИК: System.Data.OracleClient СООБЩЕНИЕ : ORA-01017: неверное имя пользователя / пароль; вход в систему запрещен
Во время тестирования я сделал такое же изменение файла конфигурации в предварительном продакшене, и все работало нормально, без каких-либо проблем.
При сравнении я обнаружил, что предварительный просмотр имеет Oracle установлен клиент 12.1 64 бит и Prod имеет установленную версию 11.2 64 бит. Я установил 12,2-битную версию в среде PROD, но все еще сталкиваюсь с проблемой подключения. (Примечание: я установил версию 12.2, думая, что версия 12.2 будет лучше совместима с базой данных Oracle 12 c. Стоит ли мне попробовать oracle установлен клиент V12.1?)
Ниже приведены сведения об этих серверах : И PROD, и Pre-Prod - сервер 2012 R2 Oracle Client -> 12,1 64Bit в PROD и 12,2v 64Bit в Pre-Prod
Для других Windows приложений я получал "Invalid Username / Password error », которая исчезла после использования oracle .manageddataaccess.dll. Но я не могу изменить dll на этом веб-сайте, так как это старое приложение и требует большого количества изменений кода.
Думаю, это Oracle ошибка клиента. Но не знаю, как это исправить.
Изменить: ПРОБЛЕМА ИСПРАВЛЕНА !!!! Похоже, это было глупо. Это была проблема на стороне БД. «Версии пароля» должны были быть «10G 11G 12 C» в таблице «dba_users». Вместо этого было «11G 12 C», которое вызывало проблему при подключении через Oracle клиента. Я получил это из нескольких других статей, в которых упоминалось изменение SQ LNET .ALLOWED_LOGON_VERSION_SERVER = 8 в файле sq lnet .ora на сервере, и сброс пароля поможет. К счастью для меня, SQ LNET .ALLOWED_LOGON_VERSION_SERVER все еще был = 11. Просто сброс пароля помог, и теперь я могу видеть версии пароля как «10G 11G 12 C». Я пинал ногу за это простое решение. Обновите это, чтобы другие люди могли обнаружить проблему раньше. Примечание: НЕ ЗАБУДЬТЕ СБРОСИТЬ ПАРОЛЬ !!!!!!