Це дійсно має бути коментарем до відповіді Бреда Ріппе , але, на жаль, недостатньо реп. Ця відповідь отримала мені 90% шляху туди. У моєму випадку встановлення та конфігурація баз даних містять записи у файлі tnsnames.ora для баз даних, які я працював. По-перше, я зміг підключитися до бази даних, встановивши змінні середовища (Windows):
set ORACLE_SID=mydatabase
set ORACLE_HOME=C:\Oracle\product\11.2.0\dbhome_1
а потім підключення за допомогою
sqlplus / as sysdba
Далі, запустивши команду з відповіді Бреда Ріппе:
select value from v$parameter where name='service_names';
показали, що імена точно не відповідають. Записи, створені за допомогою помічника з налаштування бази даних Oracle, де спочатку:
MYDATABASE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = mylaptop.mydomain.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = mydatabase.mydomain.com)
)
)
Ім'я служби з запиту було просто, mydatabase
а не mydatabase.mydomain.com
. Я відредагував файл tnsnames.ora лише базове ім’я без частини домену, щоб вони виглядали так:
MYDATABASE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = mylaptop.mydomain.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = mydatabase)
)
)
Я перезапустив послугу слухача TNS (я часто використовую lsnrctl stop
і lsnrctl start
з вікна команд адміністратора [або Windows Powershell] замість панелі управління Служби, але обидва працюють.) Після цього я зміг підключитися.