تغییر پورت listener و scan_listener در محیط RAC
مسعود حاجی حسن پور | شنبه, ۹ ارديبهشت ۱۳۹۶، ۰۳:۴۴ ب.ظ |
۰ نظر
همانطور که میدانید در پایگاه داده های Oracle پراسس PMON به صورت پیش فرض سرویسی که به نام instance ایجاد شده رو بر روی listener موجود برروی پورت پیشفرض (۱۵۲۱) رجیستر (ثبت) می کند تا پایگاه داده از آن طریق برای کلاینت ها و اپلیکیشن ها قابل دسترس باشد. حال میخواهیم یک سناریو را دنبال کنیم که بدانیم چگونه میتوان listener , scan_listener رو بر روی پورتی بجز پورت ۱۵۲۱ (پورت پیشفرض) در محیط RAC رجیستر (ثبت) نمود.
اول وضعیت سیستم رو مشخص میکنیم:
Node 1:
Node name= rac1
asm instacne name= +ASM1
node 2:
Node name= rac2
asm instance name= +ASM2
olsnodes -n -s rac1 1 Active rac2 2 Active
حال وضعیت listener رو بررسی می کنیم:
srvctl config listener Name: LISTENER Network: 1, Owner: grid Home: <CRS home> End points: TCP:1521 srvctl status listener Listener LISTENER is enabled Listener LISTENER is running on node(s): rac2,rac1 lsnrctl status LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 29-APR-2017 17:23:17 Copyright (c) 1991, 2013, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production Start Date 29-APR-2017 17:05:42 Uptime 0 days 0 hr. 17 min. 34 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/11.2.0.4/grid/network/admin/listener.ora Listener Log File /u01/app/grid/diag/tnslsnr/rac1/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.174.110)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.174.50)(PORT=1521))) Services Summary... Service "+ASM" has 1 instance(s). Instance "+ASM1", status READY, has 1 handler(s) for this service... The command completed successfully sqlplus / as sysasm SQL*Plus: Release 11.2.0.4.0 Production on Sat Apr 29 17:51:06 2017 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Real Application Clusters and Automatic Storage Management options SYS@+ASM1> show parameter local_listener NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ local_listener string (DESCRIPTION=(ADDRESS_LIST=(A DDRESS=(PROTOCOL=TCP)(HOST=192 .168.174.50)(PORT=1521))))
و وضعیت instance و services رو بررسی میکنیم. لازم به ذکر است که ما اینجا پایگاه داده نداریم و ASM Instance ها هستند (فعلا فقط clusterwarwe نصب شده است)
select instance_name from v$instance; INSTANCE_NAME ---------------- +ASM1 select name from v$services; NAME ---------------------------------------------------------------- +ASM SYS$BACKGROUND SYS$USERS
خوب تا اینجا همه چی به صورت پیشفرض هست و ما هم هیچ کاری انجام ندادیم. الان میخواهیم اول تکلیف listener را مشخص کنیم و پورتی که listen میکند را به 30300 تغییر بدیم. برای این کار لازم هست که یک tns بسازیم و از instance بخواهیم که به آدرس و پورتی که توی tns اشاره شده سرویس ها رو رجیستر (ثبت) کند.
- ساخت TNS
In rac1 vim $ORACLE_HOME/network/admin/tnsnames.ora ASM = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = rac1.mydomain.nps)(PORT = 30300)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = +ASM) ) )
In rac2 vim $ORACLE_HOME/network/admin/tnsnames.ora ASM = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = rac2.mydomain.nps)(PORT = 30300)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = +ASM) ) )
- ایجاد تغییرات در هر دو instance
sqlplus / as sysasm SQL*Plus: Release 11.2.0.4.0 Production on Sat Apr 29 19:22:45 2017 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Real Application Clusters and Automatic Storage Management options SYS@+ASM1> alter system set local_listener='ASM' scope=both sid='*'; System altered. show parameter local_listener NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ local_listener string ASM
- تغییرات بر روی listener
srvctl stop listener srvctl modify listener -p 30300 srvctl start listener srvctl config listener Name: LISTENER Network: 1, Owner: grid Home: <CRS home> End points: TCP:30300 srvctl status listener Listener LISTENER is enabled Listener LISTENER is running on node(s): rac2,rac1 lsnrctl status LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 29-APR-2017 19:29:06 Copyright (c) 1991, 2013, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production Start Date 29-APR-2017 19:28:04 Uptime 0 days 0 hr. 1 min. 1 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/11.2.0.4/grid/network/admin/listener.ora Listener Log File /u01/app/grid/diag/tnslsnr/rac1/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.174.110)(PORT=30300))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.174.50)(PORT=30300))) Services Summary... Service "+ASM" has 1 instance(s). Instance "+ASM1", status READY, has 1 handler(s) for this service... The command completed successfully
همانگونه که مشاهده نمودید ما تغییرات رو بر روی listener انجام دادیم. یک نکته اینکه توی پایگاه داده ای که RAC هم نیست به همین سادگی شما میتوانید پورت پیشفرض رو تغییر بدید و اصول کار به همین صورت هست.
خوب حالا میمونه ایجاد تغییر بر روی scan_listener این مورد هم کار خیلی ساده هست. که با دستورات زیر دنبال میکنیم:
- بررسی وضعیت scan و scan_listener:
srvctl config scan SCAN name: mas-scan.mydomain.nps, Network: 1/192.168.174.0/255.255.255.0/eth0 SCAN VIP name: scan1, IP: /mas-scan.mydomain.nps/192.168.174.251 SCAN VIP name: scan2, IP: /mas-scan.mydomain.nps/192.168.174.253 SCAN VIP name: scan3, IP: /mas-scan.mydomain.nps/192.168.174.252 srvctl status scan SCAN VIP scan1 is enabled SCAN VIP scan1 is running on node rac2 SCAN VIP scan2 is enabled SCAN VIP scan2 is running on node rac1 SCAN VIP scan3 is enabled SCAN VIP scan3 is running on node rac1 srvctl config scan_listener SCAN Listener LISTENER_SCAN1 exists. Port: TCP:1521 SCAN Listener LISTENER_SCAN2 exists. Port: TCP:1521 SCAN Listener LISTENER_SCAN3 exists. Port: TCP:1521 srvctl status scan_listener SCAN Listener LISTENER_SCAN1 is enabled SCAN listener LISTENER_SCAN1 is running on node rac2 SCAN Listener LISTENER_SCAN2 is enabled SCAN listener LISTENER_SCAN2 is running on node rac1 SCAN Listener LISTENER_SCAN3 is enabled SCAN listener LISTENER_SCAN3 is running on node rac1
- حالا scan_listener رو تغییر میدیم:
srvctl modify scan_listener -p 30301 srvctl stop scan_listener srvctl start scan_listener srvctl config scan_listener SCAN Listener LISTENER_SCAN1 exists. Port: TCP:30301 SCAN Listener LISTENER_SCAN2 exists. Port: TCP:30301 SCAN Listener LISTENER_SCAN3 exists. Port: TCP:30301
بسیار خوب در آخر از روی OS بررسی میکنیم ببینیم واقعا همین پورت ها درحال listen شدن هستند یا خیر و وضعیت CW رو چک میکنیم:
netstat -ntl | grep --color 30300 tcp 0 0 192.168.174.50:30300 0.0.0.0:* LISTEN tcp 0 0 192.168.174.110:30300 0.0.0.0:* LISTEN netstat -ntl | grep --color 30301 tcp 0 0 192.168.174.252:30301 0.0.0.0:* LISTEN tcp 0 0 192.168.174.253:30301 0.0.0.0:* LISTEN crsctl stat res -t -------------------------------------------------------------------------------- NAME TARGET STATE SERVER STATE_DETAILS -------------------------------------------------------------------------------- Local Resources -------------------------------------------------------------------------------- ora.DATA.dg ONLINE ONLINE rac1 ONLINE ONLINE rac2 ora.FRA.dg ONLINE ONLINE rac1 ONLINE ONLINE rac2 ora.LISTENER.lsnr ONLINE ONLINE rac1 ONLINE ONLINE rac2 ora.asm ONLINE ONLINE rac1 Started ONLINE ONLINE rac2 Started ora.net1.network ONLINE ONLINE rac1 ONLINE ONLINE rac2 -------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- ora.LISTENER_SCAN1.lsnr 1 ONLINE ONLINE rac2 ora.LISTENER_SCAN2.lsnr 1 ONLINE ONLINE rac1 ora.LISTENER_SCAN3.lsnr 1 ONLINE ONLINE rac1 ora.cvu 1 ONLINE ONLINE rac1 ora.oc4j 1 ONLINE ONLINE rac2 ora.rac1.vip 1 ONLINE ONLINE rac1 ora.rac2.vip 1 ONLINE ONLINE rac2 ora.scan1.vip 1 ONLINE ONLINE rac2 ora.scan2.vip 1 ONLINE ONLINE rac1 ora.scan3.vip 1 ONLINE ONLINE rac1
دوستان عزیز امیدوارم مطلب کاربردی بوده باشد.
موفق باشید.