Не удалось подключиться к серверу Oracle 12 c с веб-сайта, когда он размещен на веб-сервере. Вызвано исключение нулевой ссылки - PullRequest
0 голосов
/ 14 июля 2020

Мы недавно перенесли нашу базу данных с 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». Я пинал ногу за это простое решение. Обновите это, чтобы другие люди могли обнаружить проблему раньше. Примечание: НЕ ЗАБУДЬТЕ СБРОСИТЬ ПАРОЛЬ !!!!!!

...