#sql #oracle19c #tnsnames
Вопрос:
Не мог бы кто-нибудь мне помочь. У меня есть локальная база данных 19c, работающая в Oracle Enterprise Linux 8.3. Я создал pdb с именем orclpdb1, к которому я мог подключаться. На данный момент я не настроил прослушиватель на постоянную работу, и теперь все, к чему я могу удаленно подключиться, — это cdb.
Вот некоторые выходные данные некоторых команд и tnsnames.ora и listener.ora. Я новичок в этом, и имена tnsnames.ora и listener.ora чертовски сбивают меня с толку в отношении служб, слушателей и реестров.
SQL> show parameter instance_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string ORCLCDB*
*SQL> show parameter local_listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
local_listener string (ADDRESS=(PROTOCOL=tcp)(HOST=1
92.168.1.235)(PORT=1522))*
*SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCLPDB1 MOUNTED*
[oracle@localhost admin]$ more listener.ora
# listener.ora Network Configuration File: /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
PDB_LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.235)(PORT=1521))
)
SID_LIST_LISTENER_PDB1 =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = ORCLPDB1)
(SID_NAME = ORCL)
(ORACLE_HOME = /opt/oracle/product/19c/dbhome_1)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
[oracle@localhost admin]$ more tnsnames.ora
# tnsnames.ora Network Configuration File: /opt/oracle/product/19c/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
ORCLCDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCLCDB)
)
)
ORCLPDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.235)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME=ORCLCDB)
)
)
[oracle@localhost admin]$
Комментарии:
1. Почему разные номера портов. 1522 в параметре show и 1521 в файлах *.ora. ?.каков вывод
lsnrctl status
, и orcldpdb1 находится в смонтированном состоянии. Имя службы дляORCLPDB1
intnsnames.ora
должно бытьORCLPDB1
2. Привет, Суреш, Это хороший вопрос. Я думаю, что могу изменить местного слушателя на 1521. Я сделал имя службы orclcdb причиной того, что при входе в pdb в sql параметр service_name указан как orclcdb. Я изменил его в tnsnames.ora и изменил local_listener на 1521. Я все еще получаю ошибку. Я опубликую статус lsnrctl ниже.
3. ]$ статус lsnrctl LSNRCTL для Linux: Версия 19.0.0.0.0 — Производство 21 апреля 2021 г. 08:44:10 Авторское право (c) 1991, 2019, Oracle. Все права защищены. Подключение к (ОПИСАНИЕ=(АДРЕС=(ПРОТОКОЛ=TCP)(ХОСТ=локальный хост)(ПОРТ=1521))) TNS-12541: TNS:нет прослушивателя TNS-12560: TNS:ошибка адаптера протокола TNS-00511: Нет прослушивателя Ошибка Linux: 111: Соединение отказано в подключении к (ОПИСАНИЕ=(АДРЕС=(ПРОТОКОЛ=IPC)(КЛЮЧ=EXTPROC1521))) TNS-12541: TNS:нет прослушивателя TNS-12560: TNS:ошибка адаптера протокола TNS-00511: Нет прослушивателя Ошибка Linux: 2: Такого файла или каталога нет
4. конечно, я смог решить эту проблему. Я нашел документ oracle, в котором рекомендуется поместить ip-адрес моего хоста в файл /etc/hosts. как только я это сделал, все мои слушатели начали, и теперь я могу подключиться. Спасибо вам за помощь.