无法更改Oracle的服务名称


9

我正在尝试更改Windows 2003服务器上Oracle 11.2.0.3安装的服务名称。

在安装过程中,服务名称是使用默认域定义的,但是我们想摆脱它。

到目前为止,我所做的事情(以及以前的工作)是将服务名称更改mydb.foo.barmydb仅:

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

这似乎奏效了:

SQL>显示参数名称

名称类型值
------------------------------------ ----------- --- ---------------------------
db_name字符串mydb
db_unique_name字符串mydb
global_names布尔值FALSE
instance_name字符串mydb
service_names字符串mydb
SQL>

(我从上面的输出中删除了一些不相关的属性)

然后用于alter system register重新注册侦听器。

这没有效果,所以我重新启动了数据库和侦听器,仍然没有运气。

当前情况如下:

select name from v$active_services 返回:

SERVICE_ID | NAME | 网络名字       
----------- + ----------------- + --------------------
1 | SYS $ BACKGROUND |                    
2 | SYS $ USERS |                    
3 | mydb | mydb           
5 | mydbXDB | mydbXDB        
6 | mydb.foo.bar | mydb.foo.bar

因此,由于某些原因,旧的服务名称仍然存在并正在运行。

尝试使用停止服务时

SQL>执行dbms_service.stop_service('mydb.foo.bar');
PL / SQL过程成功完成。

没有错误报告,但是在尝试删除该服务时,Oracle不会让我:

SQL>执行dbms_service.delete_service('mydb.foo.bar');
开始dbms_service.delete_service('mydb.foo.bar'); 结束;

*
第1行发生错误:
ORA-44305:服务mydb.foo.bar正在运行
ORA-06512:在“ SYS.DBMS_SYS_ERROR”行86
ORA-06512:位于“ SYS.DBMS_SERVICE”行454
ORA-06512:位于“ SYS.DBMS_SERVICE”的第343行
ORA-06512:在第1行

我确认使用该服务没有打开的连接:

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

返回0(零)

我还使用oradim重新创建了Windows服务,但无济于事。

有一次我跑了

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

那可能就是我现在都拥有的原因吗?

但是在将service_names仅更改为一个名称之后,第二个应该消失了,不是吗?

如果我不能取消第二项服务,那就足以使实例使用短服务名而不是长服务名在侦听器中注册。

我确定我遗漏了一些显而易见的东西,但我不知道是什么。

Answers:


5

我确定我遗漏了一些显而易见的东西,但我不知道是什么。

是的,这很明显...

该参数DB_DOMAIN仍然包含foo.bar,因此实例使用进行了注册mydb.foo.bar

做完一个

alter system set db_domain='' scope=spfile; 

并启动数据库,一切现在都按预期工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.