Skip to content

Решения распространенных ошибок Oracle Data Connection

1. Обзор

В этой статье описаны некоторые ошибки и их решения в Oracle Data Connections.

Примечание 1: Все ошибки, начинающиеся с ORA, являются ошибками базы данных Oracle, и вы можете устранить их путем поиска в Интернете.

Примечание 2: Пул соединений BI-платформы Oracle будет автоматически освобожден после периода неиспользования, причина, по которой пул соединений просматривается с предыдущими соединениями, заключается в том, что он снова включается, когда пользователь подключается позже, поэтому это не вызовет проблем из-за того, что соединение не было освобождено.

Примечание 3: В Oracle 9i значения полей с точностью 0 распознаются как текстовые, а не числовые значения "Значение поля вычисляется column.getSize() как 38, поэтому оно распознается как текстовый атрибут"; в других версиях Oracle это не так.

2. Одно подключение данных к нескольким базам данных Oracle

Описание проблемы:

Обычно одно соединение данных соответствует базе данных Oracle, но иногда, по сетевым или другим причинам, база данных не подключается или не работает, и весь проект не может быть запущен.

Решение:

Настройте обе базы данных Oracle с одинаковым именем пользователя и паролем для входа в базу данных, а затем настройте url таким образом, чтобы это подключение к данным могло подключаться к обеим машинам, т. е. используйте одно подключение к данным для подключения к нескольким базам данных.

Формат URL:

jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = IP1)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST =IP2)(PORT = 1521))(LOAD_ BALANCE=yes)(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = database name))))

Пример 1: На машинах 192.168.100.168 и 192.168.100.170, имеющих базы данных с именем orcl10g, URL для подключения к данным изменяется на:

jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.168)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168. 100.170)(PORT = 1521))(LOAD_BALANCE=yes)(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = orcl10g)))))
Пример 2: В env.finedevelop.com есть база данных initfantlam на порту 55602, и есть также база данных initfantlam на порту 55502, поэтому соединение с базой данных изменяется на:

jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST =env.finedevelop.com)(PORT = 55602))(ADDRESS = (PROTOCOL = TCP)(HOST =env. finedevelop.com)(PORT = 55502))(LOAD_BALANCE=yes)(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = initfantlam))))

3. Не удалось выполнить конфигурацию ONS

Описание проблемы:

Ошибка подключения к данным Oracle19c: ошибка создания соединения java.lang.IllegalArgumentException: конфигурация ONS не удалась

Решение:

Linux/Unix Измените файл startWebLogic.sh, найдите "setDomainENV.sh" и вставьте "JAVA_OPTIONS="-Doracle.jdbc.fanEnabled" в строку над предложением ". ${DOMAIN_HOME}", вставьте "JAVA_OPTIONS="-Doracle.jdbc.fanEnabled = false"" в строку над предложением ".

4. Невозможно установить соединение

Описание проблемы:

При подключении к базе данных Oracle в фоновом журнале появляется ошибка "java.lang.RuntimeException: Query:Cannot get a connection, pool error Timeout waiting for idle object".

Решение:

Измените пул соединений, чтобы увеличить максимальное количество соединений в пуле, подробнее см. в разделе 4.2 "Дополнительные параметры" раздела "Настройка подключений к данным ".

5. искажение данных

Описание проблемы:

(1) Предварительный просмотр данных Oracle, данные искажены, ошибка даты.

2) Подключение к данным Oracle, добавление таблицы DB, имя таблицы / заголовок таблицы в мусорном виде.

5.1 Несогласованные форматы кодирования баз данных

Анализ причин:

Несоответствие между форматом кодирования базы данных и форматом кодирования соединения с данными

Решение:

1) Подтверждение формата кодирования базы данных

выберите userenv('language') из dual

2) Измените формат кодирования соединения данных

Если формат кодировки базы данных - GBK, то формат кодировки соединения с данными должен быть GBK

Если формат кодировки базы данных - US7ASCII, то формат кодировки соединения с данными должен быть ISO-8859-1

Поскольку набор символов US7ASCII является подмножеством набора символов ISO, это гарантирует, что он не будет искажен.

5.2 Несоответствия драйверов баз данных

Драйверы, используемые разными версиями баз данных, сильно отличаются друг от друга.

Обязательно обратитесь к разделу Oracle Data Connections, чтобы выбрать подходящий драйвер для вашей версии базы данных.

6. слушатель в данный момент не знает SID, указанный в дескрипторе соединения

Описание проблемы:

При подключении к базе данных Oracle в фоновом журнале появляется ошибка "ORA-12505:TNS:listener does not currently know of SID given in connect descriptor The Connection descriptor used by the client was:172.30.10.15:1521:slsdb".

6.1 Ошибки форматирования URL

Анализ причин:

URL-адрес отформатирован неправильно.

Решение:

Настройте стиль URL-адреса соединения с данными и измените его на:

jdbc:oracle:thin:@localhost:1521:databaseName в jdbc:oracle:thin:@localhost:1521/databaseName

6.2 Ошибка в имени_стороны

Анализ причин:

slsdb не является правильным именем sid_name, возможно, имя_сервиса

Решение:

1) Посмотрите на URL-адрес соединения для передачи данных, чтобы убедиться, что sid после порта написан неверно.

2) Используйте tnsping внутри Oracle, проверьте, запущен ли слушатель, и посмотрите, записан ли в файле конфигурации слушателя SID.

3) Зайдите на сервер и посмотрите на файл listener.ora, например

SID_LIST_LISTENER= (SID_DESC= (GLOBAL_DBNAME=oracle9i) (ORACLE_HOME=/opt/oracle9i/product/9.2.0) (SID_NAME=ORCL) )

Внутри URL вы можете использовать значение GLOBAL_DBNAME, как указано выше, то есть использовать SERVICE_NAME и заменить его на SID_NAME, а также войти на сервер sqlplus.

$sqlplus/as sysdba SQL>SELECT * FROM V$instance;Просмотр имени sid на этой машине

6.3 Слишком много соединений

Анализ причин:

Слишком много соединений

Решение:

1) Проверьте количество соединений

sql>show user; просмотр текущего пользователя

select count(*) from v$process;C номер текущего соединения

select value from v$parameter where name = 'processes' -- максимальное количество разрешенных соединений с базой данных

2) Внесите изменения в текущее количество соединений, только не превышайте максимальное количество соединений:

SQL> alter system set processes = 2000 scope = spfile;

3) Перезапустите, чтобы обновить базу данных.

7. Oracle 11 не может прочитать таблицу DB

Описание проблемы:

Oracle11 не может получить таблицу DB, и журнал сообщает об ошибке, как показано ниже:

3.png

Решение:

Нажмите скачать: orai18n.jar, поместите orai18n.jar в webapps\webroot\WEB-INF\lib проекта и перезапустите проект.

8. Получили минус один от вызова на чтение

Описание проблемы:

Соединение с данными не удалось с ошибкой: Получено минус один от вызова чтения

1603179045829725.png

Анализ причин:

При подключении к базе данных соединение осуществляется через механизм пула соединений. Параметр базы данных: max-session определяет размер пула соединений, а в приложении также есть параметр, который указывает минимальное количество ресурсов, необходимых для подключения к пулу соединений базы данных.

Например: есть 10 приложений, которым нужно подключиться к базе данных, если минимальное количество соединений для каждого приложения для подключения к базе данных равно 10, то всего будет 100 соединений для 10 приложений, что требует, чтобы max-session пула соединений базы данных было больше 100, иначе он сообщит об ошибке вызова чтения Got минус один.

Решение:

1) Проверьте параметры процессов и сеансов

показать процессы параметров

показать сеансы параметров

2) Измените значения процессов и сеансов

alter system set processes=300 scope=spfile;

alter system set sessions=335 scope=spfile;

3) Перезапустите Oracle

немедленное отключение.

стартап.

9. Невозможно выбрать режим после успешного подключения данных

Описание проблемы:

Oracle версии 9.2.0.4, использующий JAR 2020-01-15, не может выбрать режим и не показывает значение после успешного подключения.

Анализ причин:

Версия драйвера не адаптирована.

Решение:

В соответствии с реальной ситуацией, чтобы изменить на поддерживаемый драйвер, ссылка на скачивание драйвера: драйвер скачать официальную ссылку

Пример: перейдите на драйвер ojdbc6, чтобы правильно отображать данные и выбирать режим.

10. Нет подходящего протокола аутентификации

Описание проблемы:

Ошибка подключения Oracel: ORA-28040: Нет подходящего протокола аутентификации;

Анализ причин:

Версия драйвера не адаптирована.

Решение:

Нажмите Download: ojdbc7.jar, поместите ojdbc7.jar в webapps\webroot\WEB-INF\lib проекта и перезапустите проект.

11. Процесс слушателя не может разрешить SERVICE_NAME, указанное в дескрипторе соединения.

Описание проблемы:

Ошибка журнала при подключении к базе данных Oracle: ORA-12514:TNS:The listening process cannot resolve the SERVICE_NAME given in the connection descriptor.

11.1 SID_NAME - это то же самое, что и ORACLE_SID в установке Oracle.

Анализ причин:

SID_NAME - это то же самое, что и ORACLE_SID при установке Oracle.

SERVICE_NAME=DBNAME.DB_DOMAINDBNAME - это имя базы данных, которое является внутренним идентификатором базы данных Oracle и не должно быть изменено после установки.

Решение:

1) Перезапустите связанные с oracle "службы" и попробуйте подключиться снова.

2) Правильно настройте файл listener.ora, добавьте соответствующее имя экземпляра, перезапустите сервер базы данных, проверьте, запущены ли службы, и попробуйте подключиться.

11.2 Проблемы с вводом в эксплуатацию

Анализ причин:

Проблемы с началом рутинной работы

Решение:

1) Запустите oracle

net start oracleserviceorcl

2) Запустите cmd администратора, введите следующий код

sqlplus /nolog

connect/as sysdba

ALTER USER SYSTEM IDENTIFIED BY newpass.

3) Процедуры запуска

sql> запуск

12. периодические сбои в соединении данных

Проблемные явления:

Нормальная работа проекта, вдруг все базы данных oracle не могут быть подключены, telnet на сервере, сеть проходит, не пароль ошибка, локальная база данных инструменты также могут подключиться. После перезагрузки, он может быть восстановлен.

Причина проблемы:

Для подключения данных используется встроенный драйвер, который в основном адаптирован под jdk1.4.

Решение:

Если вы столкнулись с вышеперечисленными проблемами, рекомендуется обновить драйвер.