Chcem sa pripojiť k databáze Oracle umiestnenej na inom hostiteľovi pomocou sqlplus. Táto stránka mi navrhla pridať položku na tnsnames na pripojenie k tejto databáze.
local_SID =
(DESCRIPTION =
(ADDRESS = (PROTOCOL= TCP)(Host= hostname.network)(Port= 1521))
(CONNECT_DATA = (SID = remote_SID))
)
a potom ju použiť v sqlplus
sqlplus user/pass@local_SID
V mojich podmienkach však úprava miestnych tnsnames nie je možná. Je možné pripojiť sa k vzdialenej databáze len pomocou argumentu sqlplus bez toho, aby bolo potrebné meniť tnsnames? Niečo ako
sqlplus user/pass@[email protected] ;( I know, this one is not valid)
sqlplus user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))
Možno, a to môže závisieť od prostredia príkazového riadku, ktorý používate, musíte reťazec uviesť v úvodzovkách, niečo ako
sqlplus "user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))"
alebo
sqlplus 'user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))'
Môžete na to použiť easy connect:
sqlplus usr/[email protected]/remote_service_name
Ak chcete na svojom počítači povoliť easy connect, musíte ho pridať do NAMES.DIRECTORY_PATH
v sqlnet.ore, napr:
NAMES.DIRECTORY_PATH=(EZCONNECT)
Ak je váš poslucháč na inom ako predvolenom porte, použite [email protected]:port/...
.
V skutočnosti sa zdá, že musíte zadať názov služby, nie SID; môžu byť rovnaké, ale ak nie, budete ho musieť získať od servera.
Vytvorte kópiu súboru tnsnames.ora v adresári, do ktorého môžete zapisovať, súbor príslušne upravte a potom nastavte premennú prostredia TNS_ADMIN na umiestnenie tohto adresára.
Napr:
cp $ORACLE_HOME/network/admin/tnsnames.ora /tmp/tnsnames.ora
# edit the /tmp/tnsnames.ora file to add your entries
# Set the $TNS_ADMIN environment variable so that sqlplus knows where to look
export TNS_ADMIN=/tmp