再说 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
          )
        )

  • 1
  • 2
  • 3
  • 4
  • 下一页

相关内容