Tidak dapat mengubah nama layanan untuk Oracle


9

Saya mencoba untuk mengubah nama layanan dari instalasi Oracle 11.2.0.3 pada server Windows 2003.

Selama instalasi, nama layanan didefinisikan dengan domain default, tetapi kami ingin menyingkirkannya.

Apa yang telah saya lakukan sejauh ini (dan apa yang telah berhasil sebelumnya) untuk mengubah nama layanan mydb.foo.barmenjadi mydbhanya:

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

Yang tampaknya berhasil:

SQL> tampilkan nama parameter

NILAI TIPE NAMA
------------------------------------ ----------- --- ---------------------------
db_name string mydb
db_unique_name string mydb
global_names boolean FALSE
instance_name string mydb
service_names string mydb
SQL>

(Saya menghapus beberapa properti dari output di atas yang tidak relevan)

Kemudian gunakan alter system registeruntuk mendaftar ulang dengan pendengar.

Ini tidak menunjukkan efek jadi saya me-restart database dan pendengar, masih tidak berhasil.

Situasi saat ini adalah sebagai berikut:

select name from v$active_services pengembalian:

SERVICE_ID | NAME | NAMA JARINGAN       
----------- + ----------------- + --------------------
1 | LATAR BELAKANG SYS $ |                    
2 | SYS $ USERS |                    
3 | mydb | mydb           
5 | mydbXDB | mydbXDB        
6 | mydb.foo.bar | mydb.foo.bar

Jadi untuk beberapa alasan nama layanan yang lama masih ada dan berjalan.

Saat mencoba menghentikan layanan menggunakan

SQL> exec dbms_service.stop_service ('mydb.foo.bar');
Prosedur PL / SQL berhasil diselesaikan.

tidak ada kesalahan yang dilaporkan, tetapi ketika mencoba menghapus layanan, Oracle tidak akan membiarkan saya:

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

*
GALAT di baris 1:
ORA-44305: service mydb.foo.bar sedang berjalan
ORA-06512: di "SYS.DBMS_SYS_ERROR", baris 86
ORA-06512: di "SYS.DBMS_SERVICE", baris 454
ORA-06512: di "SYS.DBMS_SERVICE", baris 343
ORA-06512: pada baris 1

Saya memverifikasi bahwa saya tidak memiliki koneksi terbuka menggunakan layanan itu:

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

dikembalikan 0(nol)

Saya juga menciptakan kembali layanan Windows menggunakan oradim, tetapi tidak berhasil.

Pada satu titik saya berlari

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

mungkinkah itu alasan saya memiliki keduanya sekarang?

Tapi setelah mengubah service_names menjadi hanya satu nama, yang kedua seharusnya sudah hilang, bukan?

Jika saya tidak bisa membuat layanan kedua hilang, itu akan cukup untuk membuat instance mendaftar dengan pendengar menggunakan nama layanan pendek, daripada yang panjang.

Saya yakin saya kehilangan sesuatu yang sangat jelas, tetapi saya tidak tahu apa itu.

Jawaban:


5

Saya yakin saya kehilangan sesuatu yang sangat jelas, tetapi saya tidak tahu apa itu.

Ya itu sesuatu yang sangat jelas ...

Parameter DB_DOMAINmasih berisi foo.bardan karenanya instance terdaftar dengan menggunakan mydb.foo.bar.

Setelah melakukan a

alter system set db_domain='' scope=spfile; 

dan memantulkan basis data semuanya berfungsi seperti yang diharapkan sekarang.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.