این بسته که از اوراکل 12cR2 ارائه شد، تابعی به نام RESOLVE_TNSNAME را در خود دارد که از طریق ان می توان به متن هر کدام از net service nameهای موجود در فایل tnsnames.ora دسترسی پیدا کرد.
برای مثال دستور زیر متن net service nameای به نام pdb1 را در فایل tnsnanmes.ora را نمایش می دهد:
SQL> SELECT DBMS_TNS.RESOLVE_TNSNAME(‘pdb1’) FROM dual;
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ol7)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=pdb1)(CID=(PROGRAM=oracle)(HOST=ol7)(USER=Asus))))
البته این قاعده برای یک tns با ساختار اشتباه هم صادق است:
vi /u01/oracle/12c/network/admin/tnsnames.ora
test_tns=
(DESCRIPTION =
)
SQL> SELECT DBMS_TNS.RESOLVE_TNSNAME(‘test_tns’) FROM dual;
(DESCRIPTION=(CONNECT_DATA=(CID=(PROGRAM=oracle)(HOST=ol7)(USER=Asus))))
همچنین با کمک این بسته، می توان وجود یا عدم وجود یک ip را در فایل tnsnames.ora بررسی کرد:
SQL> SELECT DBMS_TNS.RESOLVE_TNSNAME(‘192.168.10.55’) FROM dual;
(DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=)(CID=(PROGRAM=oracle)(HOST=ol7)(USER=Asus)))(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.10.55)(PORT=1521)))
یکی از کاربردهای این بسته، به زمانی بر می گردد که بخواهیم مشخصات host هر کدام از dblinkها را تعیین کنیم:
SQL> SELECT DB_LINK, DBMS_TNS.RESOLVE_TNSNAME(HOST) FROM DBA_DB_LINKS;
PDB1 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ol7)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=pdb1)(CID=(PROGRAM=oracle)(HOST=ol7)(USER=Asus))))