Sqlplus kullanarak başka bir ana bilgisayarda bulunan bir oracle veritabanına bağlanmak istiyorum. Bu sayfa bu veritabanına bağlanmak için tnsnames'ime bir öğe eklememi önerdi
local_SID =
(DESCRIPTION =
(ADDRESS = (PROTOCOL= TCP)(Host= hostname.network)(Port= 1521))
(CONNECT_DATA = (SID = remote_SID))
)
ve sonra bunu sqlplus'ta kullanın
sqlplus user/pass@local_SID
Ancak, benim koşullarımda yerel tnsnames'i değiştirmek mümkün değil. Tnsnames'i değiştirmek zorunda kalmadan sadece sqlplus argümanını kullanarak uzak bir veritabanına bağlanmak mümkün mü? Şöyle bir şey
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)))
Belki, bu kullandığınız komut satırı ortamına bağlı olabilir, dizeyi tırnak içine almanız gerekir, şöyle bir şey
sqlplus "user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))"
veya
sqlplus 'user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))'
Bunun için easy connect kullanabilirsiniz:
sqlplus usr/[email protected]/remote_service_name
Makinenizde kolay bağlantıyı etkinleştirmek için, sqlnet.ora dosyasındaki NAMES.DIRECTORY_PATH
dosyasına eklemeniz gerekir, örn:
NAMES.DIRECTORY_PATH=(EZCONNECT)
Dinleyiciniz varsayılan olmayan bir bağlantı noktasındaysa [email protected]:port/...
kullanın.
Aslında bir SID değil, bir hizmet adı sağlamanız gerekiyor gibi görünüyor; bunlar aynı olabilir, ancak değilse bunu sunucudan almanız gerekir.
Yazabileceğiniz bir dizinde tnsnames.ora dosyasının bir kopyasını oluşturun, dosyayı uygun şekilde değiştirin, ardından TNS_ADMIN ortam değişkenini bu dizinin konumuna ayarlayın.
Örneğin:
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