数据库服务是一个或多个数据库实例的命名表示。服务使您能够对数据库工作负载进行分组,并将特定的工作请求路由到适当的实例。
数据库服务
一个数据库服务代表一个数据库。这个数据库可以是一个单实例数据库,也可以是具有多个并发数据库实例的Oracle Real Application Clusters(Oracle RAC)数据库。全局数据库服务是通过数据复制同步的多个数据库提供的服务。
关于数据库服务
数据库服务将单个数据库的工作负载划分为互不关联的组。
每个数据库服务代表一个具有公共属性、服务级别阈值和优先级的工作负载。分组基于工作的属性,这些属性可能包括要使用的应用程序功能、应用程序功能的执行优先级、要管理的作业类或应用程序功能或作业类中使用的数据范围。例如,Oracle E-Business Suite 为每种责任(如总账、应收账款、订单录入等)定义了一个数据库服务。在配置数据库服务时,为每个服务指定一个唯一的名称、相关的性能目标和相关的重要性。数据库服务与 Oracle 数据库紧密集成,并在数据字典中维护。
连接请求可以包括数据库服务名称。因此,中间层应用程序和客户机/服务器应用程序通过在 TNS 连接数据中指定数据库服务作为连接的一部分来使用服务。如果没有包含数据库服务名和 Net Services 文件 listener.ora 指定一个默认数据库服务,然后连接使用默认数据库服务。
数据库服务允许您为单个数据库配置工作负载、管理它、启用和禁用它,并将工作负载作为单个实体度量。您可以使用标准工具,如数据库配置助手(DBCA)、Oracle 网络配置助手和 Oracle 企业管理器云控制(Cloud Control)。Cloud Control 支持整体查看和操作服务,并在需要时深入到实例级。
在 Oracle Real Application Clusters (Oracle RAC)环境中,数据库服务可以跨越一个或多个实例,并基于事务性能实现工作负载平衡。此功能提供端到端无人参与恢复、按工作负载滚动更改和完全位置透明性。Oracle RAC 还允许您使用云控制、DBCA 和服务器控制实用程序(SRVCTL
)管理几个数据库服务特性。
数据库服务将应用程序、应用程序功能和数据范围描述为功能服务或数据依赖服务。功能服务是最常见的工作负载映射。使用特定函数的会话被分组在一起。相反,依赖数据的路由则根据数据键将会话路由到数据库服务。工作请求到数据库服务的映射发生在应用服务器和 TP 监控器的对象关系映射层中。例如,在 Oracle RAC 中,这些范围可以是完全动态的,并基于需求,因为数据库是共享的。
除了应用程序使用的数据库服务外,Oracle 数据库还支持两个内部数据库服务:SYSBACKGROUND 仅供后台进程使用,SYSUSERS 是用户会话的默认数据库服务,与服务没有关联。
使用数据库服务不需要更改应用程序代码。客户端工作可以连接到指定的数据库服务。服务器端工作,如 Oracle 调度器、并行执行和 Oracle 数据库高级排队,将数据库服务名称设置为工作负载定义的一部分。在数据库服务下执行的工作请求继承了服务的性能阈值,并作为服务的一部分进行度量。
数据库服务和性能
数据库服务为性能调优提供了一个额外的维度。
在所有会话都是匿名和共享的大多数系统中,“服务和 SQL”调优可以代替“会话和 SQL”调优。使用数据库服务,工作负载是可见和可测量的。资源消耗和等待是由应用程序引起的。此外,分配给数据库服务的资源可以随着负载的增加或减少而增加。这种动态资源分配使一种经济有效的解决方案能够在需求出现时满足需求。例如,数据库服务是自动度量的,性能将与服务级别阈值进行比较。将向 Cloud Control 报告性能违规,从而允许执行自动或计划的解决方案。
使用数据库服务的 Oracle 数据库特性
Oracle数据库的一些特性支持数据库服务。
自动工作负载存储库(AWR)管理服务的性能。AWR 记录数据库服务的性能,包括执行时间、等待类和服务消耗的资源。当数据库服务响应时间超过阈值时,AWR 会发出告警。动态视图用一小时的历史记录报告当前服务性能指标。每个数据库服务都有响应时间和 CPU 消耗的服务质量阈值。
此外,数据库资源管理器可以将数据库服务映射到消费者组。因此,您可以自动管理一个数据库服务相对于其他数据库服务的优先级。您可以使用消费者组根据比率或资源消耗来定义相对优先级。
您还可以为数据库服务指定一个版本属性。版本可以使数据库中具有相同对象的两个或多个版本。当您为数据库服务指定版本属性时,所有指定数据库服务的后续连接都将使用此版本作为初始会话版本。
将版本指定为数据库服务属性可以更容易地管理资源使用。例如,与一个版本相关联的数据库服务可以放在 Oracle RAC 环境中的一个单独的实例上,数据库资源管理器可以通过将资源计划与相应的数据库服务相关联来管理不同版本所使用的资源。
对于 Oracle Scheduler,您可以在创建作业类时选择分配数据库服务。在执行过程中,作业被分配给作业类,作业类可以在数据库服务中运行。将数据库服务与作业类一起使用,可以确保确定作业调度器执行的工作,以便进行工作负载管理和性能调优。
对于并行查询和并行 DML,查询协调器就像任何其他客户机一样连接到数据库服务。并行查询处理在执行期间继承数据库服务。在查询执行结束时,并行执行过程恢复到默认数据库服务。
创建数据库服务
根据您的数据库配置,有几种创建数据库服务的方法。
创建数据库服务:
-
如果你的单实例数据库是由 Oracle Restart 管理的,使用 SRVCTL 工具来创建数据库服务。
srvctl add service -db db_unique_name -service service_name
复制 -
如果您的单实例数据库没有被 Oracle Restart 管理,请执行以下操作之一:
- 在
SERVICE_NAMES
参数后添加所需的数据库服务名称。 - 调用
DBMS_SERVICE.CREATE_SERVICE
包过程。
- 在
-
(可选)使用 Cloud Control 或
DBMS_SERVICE.MODIFY_SERVICE
定义数据库服务属性。
Oracle Net Listener(监听器)接收传入的客户端连接请求,并管理这些请求到数据库服务器的流量。监听器处理已注册服务的连接,并支持动态服务注册。
全局数据服务
从 Oracle Database 12c 开始,您可以使用 GDS (Global Data Services) 进行涉及多个 Oracle 数据库的工作负载管理。GDS 使管理员能够跨提供公共服务的复制数据库自动、透明地管理客户机工作负载。这些公共服务称为全局服务。
GDS 允许您将不同位置的多个数据库集成到私有 GDS 配置中,这些配置可以由全球客户共享。好处包括:
- 支持全局资源集中管理
- 提供全局可扩展性、可用性和运行时负载均衡
- 允许动态添加数据库到 GDS 配置和动态迁移全局服务
- 为使用 Oracle Active Data Guard、Oracle GoldenGate 等特性的复制数据库的分布式环境扩展服务管理、负载均衡和故障转移能力
- 通过跨数据库(本地或全局)无缝故障转移,提供高可用性
- 通过业务负载均衡、连接负载均衡和运行负载均衡,实现数据中心内部和数据中心之间的负载均衡
- 允许有效利用 GDS 配置的资源来服务客户端请求
数据库服务数据字典视图
您可以通过查询数据字典视图来查找数据库服务的信息。
你可以在以下视图中找到有关数据库服务的信息:
DBA_SERVICES
ALL_SERVICES
或V$SERVICES
V$ACTIVE_SERVICES
V$SERVICE_STATS
V$SERVICE_EVENT
V$SERVICE_WAIT_CLASS
V$SERV_MOD_ACT_STATS
V$SERVICEMETRIC
V$SERVICEMETRIC_HISTORY
下面的附加视图还包含一些关于数据库服务的信息:
V$SESSION
V$ACTIVE_SESSION_HISTORY
DBA_RSRC_GROUP_MAPPINGS
DBA_SCHEDULER_JOB_CLASSES
DBA_THRESHOLDS
ALL_SERVICES
视图包含 GLOBAL_SERVICE
列 V$SERVICES
和 V$ACTIVE_SERVICES
视图包含 GLOBAL
列。这些视图和列使您能够确定数据库服务是否为全局服务。