再说 Oracle RAC services
应用程序工作负载在Oracle 10g中可以被定为services,也称之为服务,能够在单实例中使用,也能够在RAC中单独使用和管理。因此整个数据库负载能够被分割为多个不同的services,通过管理service能够简化用户或session的管理。其次services特性的重要体现在RAC之中用于实现负载均衡与故障转移。本文描述什么是services,以及使用services的好处,以及如何使用services.
一、services与service_name
services
对于客户端应用程序而言,仅仅需要关心的是数据库提供了哪些服务,而不需要知道它到底连接是哪个数据库或者那个实例。
因此在数据库服务器端我们可以创建一个或多个services供客户端时所用,是一个或多个service_name的统称。
对于这些提供的服务,Oracle会将其注册到监听器以供外部建立连接。
可以通过lsnrctl status [listener_name] 查看当前的服务下有多少个实例为其响应该服务。
也可以通过lsnrctl service [listener_name] 查看更详细的信息,包括当前的连接状况,ip,端口号等。
service_name
指客户端连接到实例的服务名。在Oracle 8i时就有提出service_name的概念,通常用于代替tnsnames.ora中的ORACLE_SID。
9i之后,Oracle推荐使用service_name而不是SID。
可以通过定义多不不同的服务名来区分不同的用户连接,该参数缺省的格式为db_name.domain_name。
下面是一个客户端的tnsnames.ora,两个不同的连接标识符下一个使用了ORACLE_SID,一个使用SERVICE_NAME,两种方式都可行。
SYBO2SZ_SID=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=192.168.7.2)
(PORT=1915)
)
(CONNECT_DATA=
(ORACLE_SID=SYBO2SZ) #此处使用了ORACLE_SID=<>,也可以直接使用SID=<>
)
)
SYBO2SZ=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=192.168.7.2)
(PORT=1915)
)
(CONNECT_DATA=
(SERVICE_NAME=SYBO2SZ) #Oracle 9i之后推荐使用SERVICE_NAME
)
)