بهبودهای EZconnect در اوراکل 19c

زمانی که از پروتکل tcp/ip برای برقراری ارتباط با یک دیتابیس اوراکل استفاده می کنیم، اتصال به روش Easy Connect در مواردی می تواند جایگزین مناسبی برای فایل tnsnames.ora باشد. ساختار کلی Easy Connect تا قبل از اوراکل نسخه 19c، به صورت زیر می باشد:

host[:port][/service_name]

برای مثال، اتصال با ابزار sqlplus به دیتابیسی با پورت 1521 که در سرور myhost قرار دارد و sevice_name آن برابر با mysrv هست، با کمک فایل tnsnames.ora به صورت زیر قابل انجام خواهد بود:

[oracle@ol7 ~]$ vi /19c/home/network/admin/tnsnames.ora

mydb =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = myhost)(PORT = 1521)))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (servce_name=mysrv)))

[oracle@ol7 ~]$ sqlplus username/pass@mydb

در صورتی که همین اتصال به کمک روش Easy Connect به صورت ساده تری قابل انجام است:

sqlplus username/pass@myhost:1521/mysrv

با توجه به اینکه در این اتصال از پورت پیش فرض اوراکل یعنی 1521 استفاده شده است، می توانیم از نوشتن شماره پورت هم صرف نظر کنیم:

sqlplus username/pass@myhost/mysrv

همچنین اگر service_name برابر با host name باشد، می توان حتی از ذکر service_name هم صرف نظر کرد. 

زمانی که از دستور tnsping استفاده می کنیم، می توانیم این فرم را به صورت زیر تغییر دهیم:

tnsping myhost/mysrv

در اوراکل 19c، بهبودهایی در متد easy connect ایجاد شد که در ادامه به ان خواهیم پرداخت.

شکل کلی متد easy connect در نسخه 19c بصورت زیر تغییر یافته است:

[[protocol:]//]host1[,host12,host13][:port1][,host2:port2][/service_name][:server] [/instance_name][?[wallet_location=dir][&ssl_server_cert_dn=dn],…]

با کمک قابلیت جدید اضافه شده به متد easy connect در نسخه 19c، می توان نام یا آدرس ip چند نود را به طور همزمان مشخص نمود که در این حالت، ارتباط به صورت Load Balance برقرار خواهد شد:

 [oracle@ol7 ~]$ tnsping 192.168.155.4,192.168.155.6:1521/pdb1

TNS Ping Utility for Linux: Version 19.0.0.0.0 – Production on 01-JUL-2019 08:45:32

 (DESCRIPTION=

(CONNECT_DATA=

(SERVICE_NAME=pdb1)

)

(LOAD_BALANCE=on)

(ADDRESS=

(PROTOCOL=tcp)

(HOST=192.168.155.4)

(PORT=1521)

)

(ADDRESS=

(PROTOCOL=tcp)

(HOST=192.168.155.6)

(PORT=1521)

)

)

OK (0 msec)

این دستور با کمک host name هم قابل اجرا خواهد بود:

tnsping node1,node2:1521/pdb1

با کمک ابزار sqlplus خواهیم دید که در هر بار اجرای دستور، ممکن است اتصال به هر کدام از این دو instance برقرار شود:

[oracle@node1 ~]$ sqlplus “usef/a@node1,node2:1521/pdb1”

SQL*Plus: Release 19.0.0.0.0 – Production on Mon Jul 1 08:56:08 2019

Version 19.3.0.0.0

SQL> show parameter instance_number

NAME                                 TYPE        VALUE

———————————— ———– ——————————

instance_number                      integer     2

SQL> exit

 [oracle@node1 ~]$ sqlplus “usef/a@node1,node2:1521/pdb1”

SQL*Plus: Release 19.0.0.0.0 – Production on Mon Jul 1 14:07:33 2019

Version 19.3.0.0.0

SQL> show parameter instance_number

NAME                                 TYPE        VALUE

———————————— ———– ——————————

instance_number                      integer     1

توجه! امکان اجرای دستور sqlplus به صورت زیر هم امکان پذیر است:

sqlplus usef/a@(DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=pdb1))(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.155.4)(PORT=1521))(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.155.6)(PORT=1521)))

در مثال قبلی، پورت تعیین شده در هر دو هاست، برابر 1521 بوده است اگر شماره پورت در یکی از این سرورها به 1522 تنظیم شده باشد، می توان دستور را به صورت زیر تغییر داد:

tnsping node1:1521,node2:1522/PDB1

در زمان اجرای دستور tnsping و یا sqlplus به کمک متد easy connect، پارامترهای دیگری را هم می توان تعیین نمود پارامترهایی نظیر CONNECT_TIMEOUT، RETRY_COUNT، TRANSPORT_CONNECT_TIMEOUT و …

برای اضافه کردن این دسته از پارامترها، در ابتدا باید از کاراکتر ؟ استفاده نمود و سپس با کمک کاراکتر &، هر کدام از این پارامترها را از هم جدا نمود مثال زیر را ببنید.

–دستور tnsping:

[oracle@node1 ~]$ tnsping “192.168.155.4,192.168.155.6:1521/pdb1?SEND_BUF_SIZE=10240&sdu=1024&CONNECT_TIMEOUT=10&RETRY_COUNT=3&TRANSPORT_CONNECT_TIMEOUT=10”

 (DESCRIPTION=

(CONNECT_DATA=

(SERVICE_NAME=pdb1)

)

(SEND_BUF_SIZE=10240)

(sdu=1024)

(CONNECT_TIMEOUT=10)

(RETRY_COUNT=3)

(TRANSPORT_CONNECT_TIMEOUT=10)

(LOAD_BALANCE=on)

(ADDRESS=

(PROTOCOL=tcp)

(HOST=192.168.155.4)

(PORT=1521)

)

(ADDRESS=

(PROTOCOL=tcp)

(HOST=192.168.155.6)

(PORT=1521)

)

)

–دستور sqlplus:

[oracle@node1~]$sqlplus  usef/a@”192.168.155.4,192.168.155.6:1521/pdb1?SEND_BUF_SIZE=10240&sdu=1024&CONNECT_TIMEOUT=10&RETRY_COUNT=3&TRANSPORT_CONNECT_TIMEOUT=10″

SQL*Plus: Release 19.0.0.0.0 – Production on Mon Jul 1 17:17:25 2019

Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Last Successful login time: Mon Jul 01 2019 17:12:56 +04:30

Connected to:

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production

Version 19.3.0.0.0

SQL>

ارتباط با نویسنده مطلب:vahidusefzadeh@ کانال تخصصی اوراکل و لینوکس: OracleDB@

Comment (1)

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد.