Oracle数据库是一个复杂的系统,它包含多个组件,包括数据库服务器、实例和服务。
-
数据库名(DB_NAME):这是数据库的内部名称,通常在创建数据库时指定,并在整个数据库生命周期内保持不变。
-
实例名(INSTANCE_NAME):这是Oracle数据库实例的名称,用于区分同一主机上运行的不同数据库进程。
-
服务名(SERVICE_NAMES):这是Oracle数据库网络服务的名称,用于通过网络连接到数据库。
在Oracle中,数据库名和实例名是有区别的。数据库名是数据库的内部标识,而实例名是数据库运行环境的标识。一个Oracle实例在其生命周期内只能处理来自单个数据库的请求。服务名通常用于分布式数据库配置,它允许客户端通过网络连接到数据库服务。
在Oracle 11g及更高版本中,数据库和服务的概念被合并,数据库同时也是一个服务,这就是所谓的Real Application Clusters(RAC)。在这种配置中,数据库名、实例名和服务名可能会对应同一个名字,也可能不同。
以下是如何查询这些名称的方法:
数据库名:
SELECT name FROM v$database;
实例名:
SELECT instance_name FROM v$instance;
服务名:
SELECT value FROM v$parameter WHERE name = 'service_names';
我们一般都是通过服务名连接