Kendi tnsnames.ora'mı değiştirmeden başka bir ana bilgisayarda bulunan bir Oracle Veritabanına bağlanmak için sqlplus nasıl kullanılır


80

Sqlplus kullanarak başka bir ana bilgisayarda bulunan kehanet veritabanına bağlanmak istiyorum. Bu sayfa tnnamesime o veritabanına eklenecek bir öğe eklemeyi ö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 durumumda yerel isim değiştirmek mümkün değildir. Tnsnamesini değiştirmek zorunda kalmadan sadece sqlplus argümanını kullanarak uzak bir veritabanına bağlanmak mümkün mü? Gibi bir şey

sqlplus user/pass@remote_SID@hostname.network ;( I know, this one is not valid)

1
daha kısa - sqlplus userid / password @ database

@GlennLong - ama versiyonunuzda, databasehala içinde bulunması gereken bir TNS takma adıdır tnsnames.ora, yani Louis kaçınmaya çalıştığı gibi mi?
Alex Poole

Yanıtlar:


85
 sqlplus user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))

Belki, ve bu kullandığınız komut satırı ortamına bağlı olabilir, dizgiyi alıntı yapmanız gerekir.

 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)))'

35

Bunun için easy connect'i kullanabilirsiniz :

sqlplus usr/pass@hostname.network/remote_service_name

Etkinleştirmek için kolay bağlantı makinenizde, sen eklemek gerekir NAMES.DIRECTORY_PATH Sqlnet.ora dosyasındaki, örneğin:

NAMES.DIRECTORY_PATH=(EZCONNECT)

Dinleyiciniz varsayılan olmayan bir bağlantı noktasındaysa kullanın ...@hostname.network:port/....

Aslında, bir SID değil bir hizmet adı sağlamanız gerekiyor gibi görünüyor; aynı olabilirler ancak bunu sunucudan almanız gerekmeyebilir.


1
Servis adı ana bilgisayar adıyla aynıysa, bağlanırken servis adını belirtmeniz de gerekmez. (Pratikte kimse bunu yapmaz, ama bilmek güzeldir.)
durette

Ölü bağlantı .......
Harvey

1
@Harvey - güncellendi, teşekkürler.
Alex Poole

17

Yazabileceğiniz bir dizinde tnsnames.ora dosyasının bir kopyasını oluşturun, dosyayı buna göre değiştirin, ardından TNS_ADMIN ortam değişkenini o 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

2
Bu çok, çok daha iyi bir cevaptır
Andrew Sledge

Bu yaklaşım, bir sqlplus istemcisi dışında kurulmuş bir Oracle altyapısı olmayan bir sistemle çalışır. Dns sunucusundan tnsnames.ora dosyasını kopyalayın ve Phil'in işlemini takip edin.
Riley

3

Unix / Linux sisteminde, sistem seviyesi girişlerini geçersiz kılmak için kullanıcı seviyesi konfigürasyon dosyalarını kullanabilirsiniz.

Sistem Seviyesi Kullanıcı Seviyesi 
Yapılandırma Dosyası Yapılandırma Dosyası
------------------ ---------------------
sqlnet.ora $ ANASAYFA / .sqlnet.ora
tnsnames.ora $ HOME / .tnsnames.ora

Sistem düzeyinde yapılandırma Dosyaları dizinde bulunabilir $TNS_ADMIN. Değişken TNS_ADMINayarlanmadıysa, dizinde aranırlar $ORACLE_HOME/network/admin.

Kullanıcı düzeyinde yapılandırma dosyaları, sistem düzeyinde yapılandırma dosyalarını bir bütün olarak TNS_ADMINdeğiştirmez ( dizinin tüm $ORACLE_HOME/network/admindizini yerine koymasıyla) ancak sistem düzeyinde yapılandırma dosyalarının girişlerini ekler veya değiştirir. Bir kullanıcı seviyesi konfigürasyon dosyasında bir giriş varsa, kullanıcı seviyesi konfigürasyon dosyasında bulunmuyorsa, sistem seviyesi konfigürasyon dosyasının girişi kullanılır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.