Oracle için hizmet adı değiştirilemiyor


9

Bir Windows 2003 sunucusunda bir Oracle 11.2.0.3 yüklemesinin hizmet adını değiştirmeye çalışıyorum.

Yükleme sırasında hizmet adı varsayılan etki alanı ile tanımlandı, ancak bundan kurtulmak istiyoruz.

Şimdiye kadar yaptım (ve daha önce ne çalıştı) sadece hizmet adını mydb.foo.bardeğiştirmek mydbiçin:

alter system set service_names = 'mydb' scope = both;
alter database rename global_name to mydb;

Hangi işe yaramış gibi görünüyor:

SQL> parametre adını göster

İSİM TÜRÜ DEĞERİ
------------------------------------ ----------- --- ---------------------------
db_name dize mydb
db_unique_name dize mydb
global_names boolean YANLIŞ
örnek_adı dize mydb
service_names string mydb
SQL>

(Yukarıdaki çıktıdan alakalı olmayan bazı özellikleri kaldırdım)

Ardından alter system registerdinleyiciye yeniden kaydolmak için tuşunu kullanın .

Bu hiçbir etkisi göstermedi, bu yüzden veritabanını ve dinleyiciyi yeniden başlattım, hala şans yok.

Mevcut durum aşağıdaki gibidir:

select name from v$active_services İadeler:

SERVICE_ID | ADI | NETWORK_NAME       
----------- + ----------------- + --------------------
1 | SYS $ ARKA PLAN |                    
2 | SYS $ KULLANICILARI |                    
3 | mydb | mydb           
5 | mydbXDB | mydbXDB        
6 | mydb.foo.bar | mydb.foo.bar

Bazı nedenlerden dolayı eski hizmet adı hala orada ve çalışıyor.

Hizmeti kullanmayı durdurmaya çalışırken

SQL> exec dbms_service.stop_service ('mydb.foo.bar');
PL / SQL prosedürü başarıyla tamamlandı.

hiçbir hata bildirilmez, ancak hizmeti silmeye çalışırken Oracle bana izin vermez:

SQL> exec dbms_service.delete_service ('mydb.foo.bar');
BEGIN dbms_service.delete_service ('mydb.foo.bar'); SON;

*
Satır 1'deki HATA:
ORA-44305: mydb.foo.bar hizmeti çalışıyor
ORA-06512: "SYS.DBMS_SYS_ERROR", satır 86
ORA-06512: "SYS.DBMS_SERVICE" adresinde, satır 454
ORA-06512: "SYS.DBMS_SERVICE" adresinde, satır 343
ORA-06512: satır 1'de

Bu hizmeti kullanarak hiçbir açık bağlantım olmadığını doğruladım:

select count(*)
FROM v$session
where service_name = 'mydb.foo.bar';

döndü 0(sıfır)

Ayrıca oradim kullanarak Windows hizmetini yeniden oluşturdum, ancak boşuna.

Bir noktada koştum

alter system set service_names = 'mydb,mydb.foo.bar' scope = both;

bothimdi ikisine de sahip olmamýn nedeni bu olabilir mi?

Ancak service_names'i tek bir isimle değiştirdikten sonra, ikincisi gitmiş olmalı, değil mi?

İkinci servisi ortadan kaldıramazsam, örneğin uzun servis yerine kısa servis adını kullanarak dinleyiciye kaydolmasını sağlamak yeterli olacaktır.

Eminim oldukça açık bir şey kaçırıyorum ama bunun ne olduğunu anlayamıyorum.

Yanıtlar:


5

Eminim oldukça açık bir şey kaçırıyorum ama bunun ne olduğunu anlayamıyorum.

Evet çok açık bir şeydi ...

Parametre DB_DOMAINhala içerdiğinden foo.bar, örnek kullanarak kendisini kaydetti mydb.foo.bar.

Yaptıktan sonra

alter system set db_domain='' scope=spfile; 

ve veritabanını zıplayan her şey şimdi beklendiği gibi çalışıyor.

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.