وبلاگ مسعود حاجی حسن پور

راهکار های عملی اوراکل

راهکار های عملی اوراکل

این وبلاگ جهت به اشتراک گذاری تجربیات و راهکار های عملی در زمینه پایگاه داده اوراکل می باشد.

دستاوردها
طبقه بندی موضوعی

۱ مطلب با کلمه‌ی کلیدی «Grid Infrastructure» ثبت شده است

تغییر پورت listener و scan_listener در محیط RAC

RAC listener concepts
همانطور که میدانید در پایگاه داده های 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

دوستان عزیز امیدوارم مطلب کاربردی بوده باشد.

موفق باشید.