همانطور که می دانید، هر listener می تواند در یک زمان به چند instance سرویس دهد و همچنین سرویسهای یک instance می تواند توسط چند listener هندل شود که در حالت پیش فرض، هر instance به صورت خودکار، توسط پروسسهای پس زمینه اش(در اوراکل 11g توسط PMON و در 12c توسط LREG) به پورت 1521 و پروتکل TCP سرویس Listener رجیستر می شود و با این عمل، اصطلاحا dynamic registration انجام خواهد شد.
حال اگر پورت listener به عدد دیگری تغییر کند، چه اتفاقی رخ خواهد داد؟ برای مثال، شماره پورت را به 1522 تغییر می دهیم:
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = myhost)(PORT = 1522))
)
با این تغییر، dynamic registration به درستی انجام نخواهد شد:
SQL> alter system register;
System altered.
[oracle@myhost ~]$ lsnrctl status
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=myhost)(PORT=1522)))
The listener supports no services
در این حالت برای انجام dynamic registration، می توان از پارامتر LOCAL_LISTENER کمک گرفت:
SQL> alter system set local_listener=‘(ADDRESS=(PROTOCOL=TCP)(HOST=myhost)(PORT= 1522))’;
System altered.
با اجرای دستور زیر، خواهیم دید که dynamic registration به درستی انجام خواهد شد:
SQL> alter system register;
System altered.
[oracle@myhost ~]$ lsnrctl status
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=myhost)(PORT=1522)))
Services Summary…
Service “noncdb” has 1 instance(s).
Instance “noncdb”, status READY, has 1 handler(s) for this service…
Service “noncdbXDB” has 1 instance(s).
Instance “noncdb”, status READY, has 1 handler(s) for this service…
شیوه دیگری هم برای تنظیم این پارامتر امکان پذیر است که در این روش، باید از فایل tnsnames.ora استفاده کرد:
[oracle@myhost ~]$ vi /18c/home/network/admin/tnsnames.ora
LISTENER_MYREGISTER =
(ADDRESS = (PROTOCOL = TCP)(HOST = myhost)(PORT = 1522))
عبارت تعیین شده را برای پارامتر local_listener تنظیم می کنیم:
SQL> alter system set local_listener=’LISTENER_MYREGISTER’;
System altered.
در صورتی که بخواهیم dynamic registration به صورت همزمان برای چند Listener اعمال شود، می توانیم به دو فرمت زیر، پارامتر local_listener را تعریف کنیم:
روش اول:
SQL> alter system set LOCAL_LISTENER=’(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=myhost)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=myhost)(PORT=1522))
(ADDRESS=(PROTOCOL=TCP)(HOST=myhost)(PORT=1523))
(ADDRESS=(PROTOCOL=TCP)(HOST=myhost)(PORT=1524)))’;
System altered.
روش دوم:
vi /18c/home/network/admin/tnsnames.ora
LISTENER_MYREGISTER =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS=(PROTOCOL=TCP)(HOST=myhost)(PORT= 1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=myhost)(PORT= 1522))
(ADDRESS=(PROTOCOL=TCP)(HOST=myhost)(PORT= 1523))
(ADDRESS=(PROTOCOL=TCP)(HOST=myhost)(PORT= 1524))
)
)
در نهایت عبارت تعیین شده را برای پارامتر local_listener تنظیم می کنیم:
SQL> alter system set local_listener=’LISTENER_MYREGISTER’;
System altered.
با استارت listenerهای مختلف، اعمال شدن تنظیمات را مورد بررسی قرار می دهیم:
[oracle@myhost ~]$ lsnrctl status LISTENER3
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=myhost)(PORT=1523)))
Services Summary…
Service “noncdb” has 1 instance(s).
Instance “noncdb”, status READY, has 1 handler(s) for this service…
Service “noncdbXDB” has 1 instance(s).
Instance “noncdb”, status READY, has 1 handler(s) for this service…
The command completed successfully
[oracle@myhost ~]$ lsnrctl status LISTENER4
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=myhost)(PORT=1524)))
Services Summary…
Service “noncdb” has 1 instance(s).
Instance “noncdb”, status READY, has 1 handler(s) for this service…
Service “noncdbXDB” has 1 instance(s).
Instance “noncdb”, status READY, has 1 handler(s) for this service…
The command completed successfully
Comment (1)