首页 > 解决方案 > ora_database_name 和 sys_context('userenv','service_name') 有什么区别

问题描述

ora_database_name 和 sys_context('userenv','service_name') 有什么区别。下面的两个查询都给出了不同的结果。

select ora_database_name  from dual;
select sys_context('userenv','service_name') from dual;

如何以及在哪里找到实际的数据库名称?

标签: oracle

解决方案


ora_database_name是包函数的同义词dbms_standard.database_name。我怀疑它与

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

但是,sys_context('userenv','service_name')是您当前使用的服务名称。

一个数据库可以支持多个服务名称。要查看列表:

SELECT name FROM all_services;
orclpdb1

您可以添加其他服务...

EXEC DBMS_SERVICE.CREATE_SERVICE('myservice', 'myservice');
EXEC DBMS_SERVICE.START_SERVICE('myservice', NULL);

SELECT name FROM all_services;
orclpdb1
myservice

...然后可用于连接到数据库...

sqlplus user/pass@myhost:1521/myservice

推荐阅读