پرسش: چگونه می توان در زمان پایین بودن سرویس listener، به صورت از راه دور به دیتابیس متصل شد؟
در متن پیش رو، خواهیم دید که علاوه پروسس listener، پروسس های دیگری چون Dispatcher، هم امکان اتصال از راه دور را فراهم می کنند.
برای استفاده از چنین قابلیتی، باید پارامتر dispatchers از قبل تنظیم شده باشد البته این پارامتر، به صورت پیش فرض و با ایجاد دیتابیس، تنظیم می شود:
SQL> show parameter dispatchers
NAME VALUE
—————- —————————–
dispatchers (PROTOCOL=TCP) (SERVICE=noncdbXDB)
در اولین گام، شماره پورت dispatcher را با کمک ویوی v$dispatcher مشخص می کنیم:
SQL> select name,network from v$dispatcher;
NAME | NETWORK |
D000 | (ADDRESS=(PROTOCOL=tcp)(HOST=hkm2)(PORT=44910)) |
با دانستن شماره پورت، net service nameای را با نام dis در فایل tnsnames.ora تعریف می کنیم:
dis=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.20)(PORT=44910)))
(CONNECT_DATA =
(sid = noncdb)
)
)
بعد از تنظیم net service name، سرویس listener را down می کنیم:
[oracle@myhost ~]$ lsnrctl stop
LSNRCTL for Linux: Version 18.0.0.0.0 – Production on 20-ESFAND -1397 16:41:32
Copyright (c) 1991, 2018, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=myhost)(PORT=1521)))
The command completed successfully
با کمک net service nameای که ایجاد کردیم، به بانک متصل خواهیم شد:
[oracle@myhost ~]$ sqlplus usef/a@dis
SQL*Plus: Release 18.0.0.0.0 – Production on Mon Esfand 20 16:42:32 1397
Version 18.3.0.0.0
Copyright (c) 1982, 2018, Oracle. All rights reserved.
Last Successful login time: Mon Mar 11 2019 16:40:08 +03:30
Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 – Production
Version 18.3.0.0.0
SQL> select p.SPID,s.SID,s.SERIAL# from v$session s,v$process p where sid = (select m.SID from v$mystat m where rownum <= 1) and s.PADDR=p.ADDR;
SPID SID SERIAL#
———————— ———- ———-
28994 261 38502
با دستور ps، جزییات بیشتری را در مورد این پروسس خواهیم دید:
[oracle@myhost ~]$ ps -eaf|grep 28994
oracle 28994 1 0 Mar09 ? 00:00:11 ora_s000_noncdb