Oracle sid ve veritabanı adını kontrol etme


115

SID'yi ve mevcut veritabanı adını kontrol etmek istiyorum.

Oracle SID'sini kontrol etmek için aşağıdaki sorguyu kullanıyorum

select instance from v$thread;

ancak tablo veya görünüm yok hata geliyor.

Mevcut veritabanı adını kontrol etmek için aşağıdaki sorguyu kullanıyorum

select name from v$database;

ancak tablo veya görünüm yok hata geliyor.

Yukarıdaki iki problem için bir fikriniz var mı?

Yanıtlar:


148

Sanırım SELECT user FROM dual;size şu anki kullanıcıyı vermeliyim

ve SELECT sys_context('userenv','instance_name') FROM dual;örneğin adı

SID'yi şu şekilde alabileceğine inanıyorum SELECT sys_context('USERENV', 'SID') FROM DUAL;


1
Hızlı yanıt için teşekkürler. Örnek ve oracle SID aynı şey mi?
Adnan

2
@Adnan SID
V4Vendetta

@adnan İhtiyacınız olan değerleri aldınız mı?
V4Vendetta

8
select sys_context('userenv','db_name') from dual;veritabanı adı ve sid için cevaba zaten ekledim. umarım bu size istediğinizi verir
V4Vendetta

2
Lütfen bu bağlantıyı
V4Vendetta

57

Benim gibi, amacınız bir Oracle JDBC url'si oluşturmak için veritabanı ana bilgisayarını ve SID'yi almaksa,

jdbc:oracle:thin:@<server_host>:1521:<instance_name>

aşağıdaki komutlar yardımcı olacaktır:

SID'yi (veya örnek adını) kontrol etmek için Oracle sorgu komutu:

select sys_context('userenv','instance_name') from dual; 

Veritabanı adını (veya sunucu ana bilgisayarını) kontrol etmek için Oracle sorgu komutu:

select sys_context('userenv', 'server_host') from dual;

Av. Sergio Marcelo


Mükemmel. Bu tam olarak bilmek istediğim şeydi ama nasıl ifade edeceğimi bilmiyordum.
Addison

Ben de. Teşekkürler Sergio!
Horseatingweeds

48

Eksiksizlik açısından ORA_DATABASE_NAME'i de kullanabilirsiniz.

Tüm yöntemlerin size aynı çıktıyı vermediğini belirtmekte fayda var:

SQL> select sys_context('userenv','db_name') from dual;

SYS_CONTEXT('USERENV','DB_NAME')
--------------------------------------------------------------------------------
orcl

SQL> select ora_database_name from dual;

ORA_DATABASE_NAME
--------------------------------------------------------------------------------
ORCL.XYZ.COM

SQL> select * from global_name;

GLOBAL_NAME
--------------------------------------------------------------------------------
ORCL.XYZ.COM

Yukarıdaki sorgular için özel izin gerekmez. Yalnızca CONNECT ayrıcalığına sahip yeni bir kullanıcı oluşturularak doğrulandı.
bdeem

22

V $ görünümleri, esas olarak sistem ölçümlerinin dinamik görünümleridir. Performans ayarı, oturum izleme vb. İçin kullanılırlar. Dolayısıyla erişim varsayılan olarak DBA kullanıcılarıyla sınırlıdır, bu yüzden alıyorsunuz ORA-00942.

Veritabanı adını bulmanın en kolay yolu şudur:

select * from global_name;

Bu görünüm PUBLIC'e verilir, böylece herkes sorgulayabilir.


Oracle SID hakkında ne var? Scott hesabından kontrol etmenin herhangi bir yöntemi var mı?
Adnan

1
Bu, SID değil, hizmet adıdır.
jpmc26

5

Üzerinde Tipi sqlpluskomut istemine

SQL> select * from global_name;

sonra u komut isteminde sonucu göreceksiniz

SQL ORCL.REGRESS.RDBMS.DEV.US.ORACLE.COM

Burada birincisi "ORCL" veritabanı adıdır, sisteminizin "XE" si olabilir ve diğeri oracle indirme zamanında verilenler olabilir.


Teşekkürler, günümü yaptın.
Muhammad Ashikuzzaman

2

Yukarıda bahsedildiği gibi,

select global_name from global_name;

gidilecek yol.

Kullanıcınız gerekli izinlere sahip olmadığı için v $ veritabanı / v $ örnek / v $ iş parçacığını sorgulayamazsınız. Onlara (bir DBA hesabı aracılığıyla) şu şekilde verebilirsiniz:

grant select on v$database to <username here>;
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.