زمانی که از پروتکل 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>
Comment (1)