Haluan muodostaa yhteyden toisessa isännässä sijaitsevaan Oracle-tietokantaan sqlplus-ohjelman avulla. Tällä sivulla ehdotettiin, että tnsnames-tietokantaan lisätään kohde, jonka avulla voidaan muodostaa yhteys kyseiseen tietokantaan.
local_SID =
(DESCRIPTION =
(ADDRESS = (PROTOCOL= TCP)(Host= hostname.network)(Port= 1521))
(CONNECT_DATA = (SID = remote_SID))
)
ja käyttää sitä sqlplus-ohjelmassa.
sqlplus user/pass@local_SID
Minun tilanteessani paikallisten tnsnimien muuttaminen ei kuitenkaan ole mahdollista. Onko mahdollista muodostaa yhteys etätietokantaan pelkästään sqlplus-argumentilla ilman tnsnamesin muuttamista? Jotain sellaista kuin
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)))
Ehkä, ja tämä saattaa riippua käyttämästäsi komentoriviympäristöstä, sinun täytyy lainata merkkijono, jotenkin niin kuin esim.
sqlplus "user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))"
tai
sqlplus 'user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))'
Voit käyttää tähän easy connect:
sqlplus usr/[email protected]/remote_service_name
Jos haluat ottaa helppo yhteyden käyttöön koneellasi, sinun on lisättävä se sqlnet.ora-tiedoston NAMES.DIRECTORY_PATH
-kohtaan, esim:
NAMES.DIRECTORY_PATH=(EZCONNECT)
Jos kuuntelijasi on muussa kuin oletusportissa, käytä [email protected]:port/...
.
Itse asiassa näyttää siltä, että sinun on annettava palvelun nimi, ei SID:tä; ne voivat olla samat, mutta jos eivät ole, sinun on saatava se palvelimelta.
Luo kopio tnsnames.ora-tiedostosta hakemistoon, johon voit kirjoittaa, muokkaa tiedostoa vastaavasti ja aseta sitten TNS_ADMIN-ympäristömuuttuja kyseisen hakemiston sijaintiin.
Esim:
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