Є кілька речей, які можуть викликати цю проблему, але перед тим, як розпочати роботу з JDBC, ви повинні бути впевнені, що зможете підключитися до бази даних за допомогою SQL * Plus. Якщо ви не знайомі з SQL * Plus, це інструмент командного рядка для підключення до баз даних Oracle, який вже давно є стандартною частиною Oracle і входить до програми Oracle XE.
Під час підключення до бази даних Oracle за допомогою JDBC ви не підключаєтесь безпосередньо до бази даних. Натомість ви підключаєтесь до слухача TNS, який потім підключає вас до бази даних. Помилка ORA-12505
означає, що слухач був налаштований і ви могли з ним підключитися, але він не міг підключити вас до бази даних, оскільки він не знає, що ця база даних працює. Для цього є дві причини:
- база даних не була запущена,
- база даних не зареєстрована у слухача, наприклад, тому що база даних була запущена перед слухачем. (Коли запускається база даних, вона реєструється у слухача, якщо вона вже працює. Якщо слухач не працює, база даних не реєструється, і якщо слухач запускається, він не шукає бази даних, які можуть зареєструйся.)
ORA-12505 означає, що слухач знає про цю базу даних, але слухач не отримав повідомлення від бази даних про те, що база даних працює. (Якщо ви намагалися підключитися до неправильної бази даних, використовуючи неправильний SID, ви отримаєте помилку ORA-12154 "TNS: не вдалося вирішити вказаний ідентифікатор з'єднання".)
Які сервіси Oracle запускаються у оснастці Сервісів? (Відкрийте це на Панелі управління> Адміністративні інструменти> Служби або просто Пуск> Виконати> services.msc
.) Вам потрібні послуги OracleServiceXE та OracleXETNSListener.
Якщо послуги були запущені, чи можете ви підключитися до бази даних в SQL * Plus за допомогою будь-якого з наведених нижче в командному рядку? (Я припускаю, що ви працюєте на машині, на якій встановлено Oracle XE.)
sqlplus system / system-password @XE
sqlplus система / система-пароль
sqlplus / як sysdba
(Замініть system-password
паролем, який ви встановили для користувачів SYS та SYSTEM під час встановлення Oracle XE.)
Перший з цих трьох підключається через слухач TNS, а другі два підключаються безпосередньо до бази даних, не переходячи через слухача, і працюють лише у тому випадку, якщо ви знаходитесь на тій же машині, що і база даних. Якщо перший не вдасться, але інші два досягнуть успіху, тоді з'єднання JDBC також не вдасться. Якщо так, підключіться до бази даних за допомогою будь-якого з двох інших і запустіть ALTER SYSTEM REGISTER
. Потім вийдіть із SQL * Plus та спробуйте першу форму ще раз.
Якщо третій не працює, але другий працює, додайте свій обліковий запис користувача до групи ora_dba. Зробіть це на Панелі керування> Керування комп'ютером> Місцеві користувачі та групи.
Після того, як ви зможете отримати з'єднання форми
sqlplus system / system-password @XE
щоб працювати, ви повинні мати можливість підключитися до Oracle XE через JDBC. (Між іншим, ви не показали нам код JDBC, який ви використовуєте для підключення до бази даних, але я б підозрював, що це цілком вірно; якщо інші частини рядка з'єднання були неправильними, були б різні інші помилки.)