Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

999

积分

1

好友

942

主题
1#
发表于 2013-10-10 23:55:21 | 查看: 4028| 回复: 1
了解Oracle RAC 服务service


传统的工作量分派
在标准环境中,不同大小的独立计算单元始终专用于特定的应用程序,如人力资源、数据仓库、客户关系管理和批量零售。
在确定这些计算单元的大小时,依据的是峰值工作量。因为峰值工作量只在部分时段出现,所以,大量资源长时间处于空闲状态。


网格工作量分派
使用网格计算,可以提供全局计算单元池,并可将计算单元临时分配给特定的应用程序,从而可在应用程序间动态交换计算单元。在工作时间,可将较多的单元用于 CRM 应用程序,下班之后,可将其中的一部分转移到批量零售应用程序。
网格计算可最大程度地减少资源闲置。也就是说,总体上看,启用网格的环境需要的计算容量要少于未启用网格的环境。
在示例中,有 25% 的计算资源单元被闲置。有了这些闲置的额外计算能力,即使组件(例如节点或实例)出现故障,仍可达到相应的服务水平,并且还可以处理意外的工作量。如果每台单独的计算机都按其最大能力调整大小,则与 70% 到 90% 的行业平均闲置率相比较,这一比例大有进步。


数据仓库:示例
以前,构建一个商业智能系统需要集成多个服务器产品。结果,这无谓地使此类系统变得复杂,并且集成多个服务器的费用也很高昂。在部署好系统之后,还需要维护不同的服务器并使所有服务器上的数据保持同步,这就需要不断地消耗管理费用。
11:00 p.m.:ETL 服务器忙于在数据库外使用 ETL;数据库上的负载适中;最终用户服务器上没有负载。
3:00 a.m.:ETL 服务器上没有负载;数据库上的负载适中(预先准备的报告、汇总和潜在数据集市维护);最终用户服务器上没有负载。
9:00 a.m.:ETL 服务器上没有负载;数据库上的负载适中;最终用户服务器忙于在数据库外使用分析。
此外,每个系统还必须根据预计的工作量峰值确定大小。


什么是服务?
服务的概念最早是在 Oracle8i 中引进的,当时是监听程序在集群的节点和实例之间执行连接负载平衡的方式。现在,服务的概念、定义和实施都已经有了巨大的扩展。服务是一项工作量管理功能,用于组织数据库内的整个工作执行,以便使该工作更易于管理、衡量、优化和恢复。服务是数据库内相关任务的组合,这些任务有共同的功能、质量预期值以及相对于其他服务的优先级。服务可提供单一系统映像,用于管理在单个实例内运行的竞争应用程序,以及跨多个实例和数据库运行的竞争应用程序。
使用标准接口(例如 DBCA、Oracle Enterprise Manager 和 SRVCTL),可将服务作为单个实体进行配置、管理、启用、禁用和度量。
服务提供可用性。断电后,服务会被快速恢复并自动定位到正常运行的实例。
服务提供了一种新的性能优化维度。有了服务,就可查看和评估工作量。在会话为匿名和共享的大多数系统中,按“服务和 SQL”优化取代了按“会话和 SQL”优化。
服务是动态的,即负载增大时,可增加服务运行的实例数;负载减小时,可减少服务运行的实例数。通过这种动态资源分配,可以实现解决方案的成本效率优势,随时满足各种需求。



RAC 中服务的高可用性
通过 RAC,高可用性 (HA) 侧重于保护逻辑定义的应用程序服务。与侧重于实例的高可用性相比,这具有更大的灵活性。
服务必须与位置无关,而实现这一点的方法就是使用 RAC HA 框架。通过在集群中的一个或多个实例间分担负载,可实现服务的连续可用性。任何实例都可提供服务来响应运行时需求、故障以及计划的维护。
为了实现服务的负载平衡和连续可用性特性,Oracle Clusterware 在 Oracle 集群注册表 (OCR) 中保存了每个服务的 HA 配置。HA 配置定义了支持服务的一组首选实例和可用实例。
首选实例集定义了支持相应服务的实例数(基数),首选实例集还确定在系统首次启动时,集群中运行服务的各个实例。
可用实例不是从一开始就支持某项服务。不过,当首选实例不能支持该服务时,可用实例就开始接受该服务的连接。如果首选实例出现故障,则系统会以透明的方式将服务恢复到为该服务定义的可用实例上。
注:可用实例可以成为首选实例,反之亦然。


RAC 的可能的服务配置
活动/备用:采用此服务配置,称为主/辅助(即 1+1 冗余)的最简单冗余将被扩展为一般的 N+M 冗余,其中 N 是提供服务的 RAC 主实例个数,M 是可用于提供服务的 RAC 备用实例个数。此解决方案的一个示例就是三节点配置。在该配置中,一个实例提供 AP 服务,第二个实例提供 GL 服务,第三个实例为这两种服务提供服务故障转移功能。在正常运行期间,其他应用程序仍可以使用备用节点。
活动/对称:使用这种服务配置,每个实例上的相同服务组都是活动的。如幻灯片中的示例所示,在所有三个实例上同时提供了 AP 服务和 GL 服务。每个实例都可为其它实例提供服务负载平衡功能和服务故障转移功能。
活动/不对称:采用这种服务配置,可以为对处理容量要求较低的服务定义单个基数,并将其配置为出现故障时其它所有实例都可提供该服务。幻灯片中显示了仅在一个实例上运行的 AP 服务,以及在两个实例上运行的 GL 服务。第一个实例支持 AP 服务,并为 GL 服务提供故障转移。同样,第二个实例和第三个实例支持 GL 服务,并为 AP 服务提供故障转移。如果第一个实例或第三个实例出现故障,则仍可通过第二个实例提供 GL 服务和 AP 服务。


服务属性
为数据库创建新服务时,应定义每项服务的工作量管理特性。一个服务的特性包括:
标识服务的唯一全局名称
客户机用于连接该服务的网络服务名
服务目标,如同负载平衡建议确定的那样,确定是根据最佳服务质量(服务响应时间)还是最佳吞吐量(单位时间内完成的工作量)向服务发出工作请求
用于决定是否将服务用于分布式事务处理的指示符
一个指示符,决定对于已注册为可以通过高级排队功能接收 RAC HA 事件的 OCI 客户机和 ODP.NET 客户机,是否将 RAC HA 事件发送给它们
使用透明应用程序故障转移功能时,会话故障转移的特性
每项服务的连接的负载平衡方法(您可以对此进行定义):
SHORT:使用负载平衡建议
LONG:使用按服务的会话计数


响应时间和 CPU 占用情况的服务度量阈值(您可以对此进行定义)
针对用户组而不是用户名的服务(您可以进行映射)
系统初次启动时,如何在实例间分布服务




服务类型

应用程序服务:
限制为每个数据库 100 项服务
内部服务:
SYS$BACKGROUND
SYS$USERS
不能删除或更改


服务类型
Oracle Database 10g 支持两大类型的服务:应用程序服务和内部服务。应用程序服务主要是工作量的功能映射。为共同的业务功能工作的会话将被组合在一起。对于 Oracle 电子商务套件、AP、AR、GL、MFG、WIP、BOM 等,都在数据库内创建了一个工作功能分支,因此可作为服务进行分类。
除了应用程序服务之外,RDBMS 还支持两项内部服务。SYS$BACKGROUND 仅供后台进程使用。SYS$USERS 是不与任何应用程序服务关联的用户会话的默认服务。两项内部服务都支持所有的工作量管理功能,因此不能停止或禁用其中任何一项服务。
对于每个数据库,可以创建的应用程序服务被限制为 100。此外,服务名称的字符数被限制为 64 个字符。
注:应用程序服务类别中也包括影子服务。有关影子服务的相关信息,请参阅“连接的高可用性”一课。此外,还为创建的每个高级队列创建了一项服务。不过,这些类型的服务不由 Oracle Clusterware 进行管理。使用服务名称访问队列为 RAC 数据库内的队列提供了位置透明性。


服务品质

服务品质是一个指标,可用来测量一个实例为某项服务提供资源的能力。MMNL 会计算服务时间和服务吞吐量的移动平均值。这些值以 GV$SERVICEMETRIC 和 GV$SERVICEMETRIC_HISTORY 显示。
注:MMNL 是可管理性监视程序指示灯进程。


使用 Oracle Enterprise Manager 创建服务
在“Cluster Database(集群数据库)”主页中,单击“Availability(可用性)”选项卡。在“Availability(可用性)”选项卡中,单击“Cluster Managed Database Services(集群管理的数据库服务)”。在“Cluster Managed Database Services(集群管理的数据库服务)”页上,单击“Create Service(创建服务)”。
使用“Create Service(创建服务)”页可以配置新服务,为此,需要执行以下操作:
为给该集群数据库配置的每个实例选择所需的服务策略。
选择所需的服务属性。有关可在此页指定的属性的详细信息,请参阅本课中“服务属性”主题。此页中的透明应用程序故障转移 (TAF) 策略属性不能配置服务器端 TAF。
注:虽然 Oracle Enterprise Manager 会为新建服务配置 Oracle Clusterware 资源,但它不会在 tnsnames.ora 文件中生成相应的项。因此,必须手动编辑这些项。为此,可组合使用 srvctl config database 命令和 –t 选项,显示应当为通过 srvctl 创建的服务使用的 TNS 项。下面是一个示例: $ srvctl config database -d xwkE –t Example client-side TNS entry for service Standard: Standard = (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=db_vip) (PORT=dedicated_port))(CONNECT_DATA=(SERVICE_NAME=Standard))) …


$ srvctl add service –d PROD –s GL -r RAC02 -a RAC01
$ srvctl add service –d PROD –s AP –r RAC01 -a RAC02


使用 SRVCTL 创建服务
本幻灯片中的示例显示的是一个双节点集群,一个节点上的实例名为 RAC01,另一个节点上的实例名为 RAC02。集群数据库名为 PROD。  
已创建了两个服务(AP 和 GL),它们存储在将由 Oracle Clusterware 进行管理的集群资料档案库中。AP 服务的首选实例为 RAC01,可用实例为 RAC02。  
如果 RAC01 停止,则 RAC01 上的 AP 服务成员会自动还原到 RAC02 上。GL 服务的情况也一样。
请注意,可以使用 -r 和 -a 选项分配多个实例。不过,-r 为必选项,而 -a 为可选项。
应用服务,您可以超越 Oracle9i 中 RAC Guard 功能的简单双节点主/辅助配置。
在 Oracle Database 11g 中,使用 RAC,多个主节点可以支持一个服务。服务布局的可能配置有活动/备用、活动/对称和活动/不对称。创建服务后,可使用 srvctl add service 命令和 –u –r 或 –u –a 选项向服务添加首选实例或可用实例。
注:还可以使用 SRVCTL 的 –P 选项设置用于透明应用程序故障转移的服务。可能的值有 NONE、BASIC 和 PRECONNECT。


首选实例和可用实例



$ srvctl add service –d PROD –s ERP \    –r RAC01,RAC02 -a RAC03,RAC04



首选实例和可用实例
在本例中,假定有一个由四个节点构成的集群。  
定义了一个名为 ERP 的服务。ERP 的首选实例为 RAC01 和 RAC02,可用实例为 RAC03 和 RAC04。
1.        最初,ERP 连接只发给 RAC01 和 RAC02。
2.        RAC02 发生故障并停止。
3.        Oracle Clusterware 检测到 RAC02 发生故障,且由于 ERP 的基数为 2,所以 Oracle Clusterware 在其中一个可用实例上还原了该服务,在此案例中为 RAC03。
4.        现在,ERP 连接请求被定位到 RAC01 和 RAC03,当前,它们是提供该服务的实例。尽管 Oracle Clusterware 能够重新启动 RAC02,但 ERP 服务不会切回到 RAC02 上。现在,RAC02 和 RAC04 是以后发生故障时的可用实例。
注:如果要切回到 RAC02,可以使用 SRVCTL 重新定位该服务。此操作可由 DBA 手动完成,也可以设置 SRVCTL 重新定位命令,使用回调机制自动完成切回操作。不过,重新定位服务是一项中断性操作。


使用 DBMS_SERVICE 程序包修改服务

使用下列工具在 RAC 中修改服务:
SRVCTL
Oracle Enterprise Manager
DBMS_SERVICE.MODIFY_SERVICE


exec DBMS_SERVICE.MODIFY_SERVICE (
      'SELF-SERVICE', 'SELF-SERVICE.us.oracle.com',
      goal     => DBMS_SERVICE.GOAL_SERVICE_TIME,
      clb_goal => DBMS_SERVICE.CLB_GOAL_SHORT);


使用 DBMS_SERVICE 程序包修改服务
DBMS_SERVICE 程序包针对数据库中的服务提供管理支持,以用于度量和管理工作量、确定工作量的优先顺序和管理分布式事务处理。该程序包允许在 RAC 和单实例中创建、删除、启动以及停止服务。此外,它还能在 RAC 从实例中删除某服务名称时,中断使用该服务名称连接到实例的所有会话。尽管在 RAC 环境中创建服务的首选方法是使用 SRVCTL 或 Oracle Enterprise Manager,但在单实例环境中可以使用 DBMS_SERVICE.CREATE_SERVICE 过程创建服务。这是因为 DBMS_SERVICE 程序包没有与 Oracle Clusterware 集成在一起来为服务定义首选和可用实例。
但是,可以使用 DBMS_SERVICE.MODIFY_SERVICE 过程修改 RAC 环境中无法通过 Oracle Enterprise Manager 修改的某些服务属性(例如 FAILOVER_RETRIES 参数)。
本幻灯片中的示例显示了如何使用 DBMS_SERVICE.MODIFY_SERVICE 来设置 SELF-SERVICE 的负载平衡建议目标。有关这些属性的详细信息,请参阅本课中的 “服务属性”主题。  
注:有关 DBMS_SERVICE 程序包的详细信息,请参阅《PL/SQL Packages and Types Reference》。


一切转向服务
支持服务的数据库功能有多种。会话由其所连接的服务进行跟踪。此外,与性能有关的统计数据和等待事件也由服务进行跟踪。
自动工作量资料档案库 (AWR) 可以管理服务的性能。AWR 将记录服务性能,包括 SQL 执行时间、等待类和服务所占用的资源。超出服务响应时间阈值时,AWR 会向 DBA 发出预警。特定的动态性能视图将报告当前的服务状态,包括一个小时内的历史记录。
在 Oracle Database 10g 中,数据库资源管理器可以管理服务,以确定应用程序工作量在实例内的优先级。此外,现在还可以在服务下(而不是在特定实例下)运行作业。并行从属进程将继承其协调程序的服务。
RAC HA 框架将保持服务在站点内可用。Data Guard 代理和 RAC 可以跨 Data Guard 站点迁移主要服务,以便进行灾难恢复。


通过客户机应用程序使用服务

ERP=(DESCRIPTION=
    (LOAD_BALANCE=on)  
      (ADDRESS=(PROTOCOL=TCP)(HOST=node-1vip)(PORT=1521))  
      (ADDRESS=(PROTOCOL=TCP)(HOST=node-2vip)(PORT=1521))  
      (ADDRESS=(PROTOCOL=TCP)(HOST=node-3vip)(PORT=1521))  
      (ADDRESS=(PROTOCOL=TCP)(HOST=node-4vip)(PORT=1521))
    (CONNECT_DATA=(SERVICE_NAME=ERP)))


url="jdbc:oracle:oci:@ERP"  


url="jdbc:oracle:thin:@(DESCRIPTION=
    (LOAD_BALANCE=on)  
      (ADDRESS=(PROTOCOL=TCP)(HOST=node-1vip)(PORT=1521))  
      (ADDRESS=(PROTOCOL=TCP)(HOST=node-2vip)(PORT=1521))  
      (ADDRESS=(PROTOCOL=TCP)(HOST=node-3vip)(PORT=1521))  
      (ADDRESS=(PROTOCOL=TCP)(HOST=node-4vip)(PORT=1521))
    (CONNECT_DATA=(SERVICE_NAME=ERP)))"  


通过客户机应用程序使用服务
应用程序和中间层连接池将使用 TNS 连接描述符选择服务。
所选服务必须与使用 SRVCTL 或 DBCA 创建的服务相匹配。
幻灯片中每个示例中的地址列表均使用虚拟 IP 地址。为客户机通信使用虚拟 IP 地址时,应确保对关闭的节点发出的连接和 SQL 语句不会造成 TCP/IP 超时。
幻灯片中的第一个示例显示了可以用于访问 ERP 服务的 TNS 连接描述符。  
第二个示例显示了使用以前定义的 TNS 连接描述符的胖 JDBC 连接描述。
第三个示例显示了使用相同 TNS 连接描述符的瘦 JDBC 连接描述。
注:Oracle Net 使用了 LOAD_BALANCE=ON 子句,通过连接描述符的协议地址来使其进度随机化。此功能称为客户机连接负载平衡。


通过资源管理器使用服务
通过数据库资源管理器(也称为资源管理器),可以使用服务来标识工作。通过将服务直接绑定到使用者组,管理服务在实例内的相对优先级。客户机使用服务建立连接时,使用者组会以透明的方式进行分配。这样,资源管理器可以按重要性顺序按服务来管理工作请求。
例如,将 AP 服务和 BATCH 服务定义为在同一个实例上运行,并将 AP 分配给优先级较高的使用者组,将 BATCH 分配给优先级较低的使用者组。使用 TNS 连接描述符中指定的 AP 服务连接到数据库的会话要优先于连接到 BATCH 服务的会话。
这样有助于管理工作量,因为是将优先级分配给业务功能,而不是分配给支持这些业务功能的会话。
注:仅当系统资源被大量占用时,数据库资源管理器才适用。如果有空闲的 CPU 周期,则 BATCH(在本幻灯片中的示例内)可以得到 25% 以上的资源。




下载专业ORACLE数据库恢复工具PRM-DUL  For Oracle http://www.parnassusdata.com/

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638  QQ: 47079569     邮箱:service@parnassusdata.com
2#
发表于 2013-10-11 00:02:22
使用 EM 配置服务和资源管理器
Oracle Enterprise Manager (EM) 通过“Consumer Group Mapping(使用者组映射)”页提供 GUI,以便自动将会话映射到使用者组。可以通过单击“Server(服务器)”页上的“Consumer Group Mapping(使用者组映射)”链接访问此页。
使用“Consumer Group Mapping(使用者组映射)”页的“General(常规信息)”标签页,可以将使用服务名称连接的会话映射到使用者组(如幻灯片右侧所示)。
通过按服务、模块和操作将会话映射到使用者组的功能,可以更加灵活地管理不同应用程序工作量的性能。
使用“Resource Consumer Group Mapping(资源使用者组映射)”页的“Priorities(优先级)”标签页,可为在“General(常规信息)”标签页上设置的映射更改优先级。映射选项与 V$SESSION 中的列相对应。如果多个映射列包含值,则设置的优先级会确定将会话分配给使用者组的优先顺序。
注:也可以从“Create Service(创建服务)”页直接将服务映射到使用者组(如幻灯片左侧所示)。


服务和资源管理器:示例

exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA;
exec DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
      CONSUMER_GROUP => 'HIGH_PRIORITY',
      COMMENT => 'High priority consumer group');  
exec DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(
      ATTRIBUTE => DBMS_RESOURCE_MANAGER.SERVICE_NAME,
      VALUE => 'AP',
      CONSUMER_GROUP => 'HIGH_PRIORITY');  
exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA;


exec - DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SWITCH_CONSUMER_GROUP(-
GRANTEE_NAME => 'PUBLIC',
CONSUMER_GROUP => 'HIGH_PRIORITY',
GRANT_OPTION => FALSE);  


服务和资源管理器:示例
假定您的站点拥有两个使用者组,分别是 HIGH_PRIORITY 和 LOW_PRIORITY。这些使用者组会映射到数据库的资源计划,资源计划反映预期的比率或预期的资源使用情况。
将服务映射到使用者组之前,必须先创建使用者组和这些使用者组的资源计划。资源计划可以基于优先级,也可以基于比率。幻灯片中所示的 PL/SQL 调用用于创建 HIGH_PRIORITY 使用者组,并将 AP 服务映射到 HIGH_PRIORITY 使用者组。可以使用类似的调用创建 LOW_PRIORITY 使用者组,并将 BATCH 服务映射到 LOW_PRIORITY 使用者组。
系统将执行幻灯片中示例的最后一个 PL/SQL 调用,因为会话只会自动分配给已被授予切换权限的使用者组。将对 LOW_PRIORITY 使用者组执行类似的调用。
注:有关数据库资源管理器的详细信息,请参阅《Oracle 数据库管理员指南》和《PL/SQL Packages and Types Reference》。





通过调度程序使用服务
正如在其它环境中一样,RAC 环境中的调度程序也是为每个数据库使用一个作业表,为每个实例使用一个作业协调程序。作业协调程序互相进行通信,以使信息保持为最新。
调度程序可以使用服务,并会利用服务在 RAC 环境中提供的优点。特定作业类使用的服务将在创建该作业类时定义。在执行期间,将作业分配到作业类后,作业类将在服务内运行。使用服务和作业类可以确保能够为工作量管理和性能优化标识调度程序的工作。  
例如,作业会继承运行作业的服务的服务器生成的预警和性能阈值。  
为了实现高可用性,调度程序将提供服务关联,而不是实例关联。系统不会安排在任何特定实例上运行这些作业,将在服务下运行这些作业。所以,如果实例出现故障,则作业仍可以在集群中任何提供该服务的其他实例上运行。
注:通过指定要运行作业的服务,作业协调程序可以平衡系统上的负载,从而获得更好的性能。




使用 EM 配置服务和调度程序
要将作业配置为在特定的服务下运行,请在“Server(服务器)”页的“Database Scheduler(数据库调度程序)”部分单击“Job Classes(作业类)”链接。此操作将打开“Scheduler Job Classes(调度程序作业类)”页。在“Scheduler Job Classes(调度程序作业类)”页上,可以查看为作业类分配的服务。
单击“Scheduler Job Classes(调度程序作业类)”页上的“Create(创建)”按钮后,会显示“Create Job Class(创建作业类)”页。在此页上,可以输入新作业类的详细资料,包括必须在哪种服务下运行该作业类。
注:同样,可以在“Create Service(创建服务)”页上将服务映射到作业类,如本幻灯片底部所示。


使用 EM 配置服务和调度程序(续)
使用要运行作业类的服务设置作业类之后,就可以创建作业了。  
要创建作业,请单击“Server(服务器)”页上的“Jobs(作业)”链接。此时将显示“Scheduler Jobs(调度程序作业)”页,可以在该页上单击“Create(创建)”按钮创建新作业。单击“Create(创建)”按钮后,会显示“Create Job(创建作业)”页。此页包含几个不同的选项卡:“General(常规信息)”、“Schedule(计划)”和“Options(选项)”。使用“General(常规信息)”标签页将作业分配到作业类。
使用“Options(选项)”页(如幻灯片中所示)设置作业的“Instance Stickiness(实例滞留)”属性。此属性主要用于在为其运行作业服务的多个实例上平衡作业负载。作业只能在一个实例上运行。如果“Instance Stickiness(实例滞留)”值设置为默认值 TRUE,则调度程序将在提供该服务的、负载最小的实例上运行作业。如果将“Instance Stickiness(实例滞留)”值设置为 FALSE,则将在提供该服务的第一个可用实例上运行作业。
注:可以使用 DBMS_SCHEDULER PL/SQL 程序包的 SET_ATTRIBUTE 过程设置作业属性,如 INSTANCE_STICKINESS。



服务和调度程序:示例

DBMS_SCHEDULER.CREATE_JOB_CLASS(
JOB_CLASS_NAME          => 'HOT_BATCH_CLASS',
RESOURCE_CONSUMER_GROUP => NULL             ,
SERVICE                 => 'HOT_BATCH_SERV'      ,
LOGGING_LEVEL => DBMS_SCHEDULER.LOGGING_RUNS,
LOG_HISTORY   => 30, COMMENTS => 'P1 batch');


DBMS_SCHEDULER.CREATE_JOB(
JOB_NAME => 'my_report_job',
JOB_TYPE => 'stored_procedure',
JOB_ACTION => 'my_name.my_proc();',
NUMBER_OF_ARGUMENTS => 4, START_DATE => SYSDATE+1,
REPEAT_INTERVAL => 5, END_DATE => SYSDATE+30,
JOB_CLASS => 'HOT_BATCH_CLASS', ENABLED => TRUE,
AUTO_DROP => false, COMMENTS => 'daily status');



服务和调度程序:示例
在此 PL/SQL 示例中,将定义一个由调度程序管理的批次队列 HOT_BATCH_CLASS。将 HOT_BATCH_SERV 服务与 HOT_BATCH_CLASS 队列相关联。假定您已定义了 HOT_BATCH_SERV 服务。
定义了该类之后,就可以定义作业了。在此示例中,MY_REPORT_JOB 作业将在提供 HOT_BATCH_SERV 服务的实例上的 HOT_BATCH_CLASS 作业类中执行。
在此示例中,没有将资源使用者组分配给 HOT_BATCH_CLASS 作业类。不过,使用者组是可以分配给某个类的。这样,无论是什么服务,都可以使用数据库资源管理器将调度程序作业和服务优先级组合在一起。
注:有关调度程序的详细信息,请参阅《Oracle 数据库管理员指南》和《PL/SQL Packages and Types Reference》。


通过并行操作使用服务
对于并行查询和并行 DML 操作,在操作期间,并行查询从属进程将从查询协调程序中继承服务。ERP 是幻灯片中所示示例使用的服务的名称。
默认情况下(从 Oracle RAC 11gR1 起),服务将限制并行查询使用的实例集。如果通过服务建立连接并发出并行查询,则只可以使用属于在连接期间指定的服务的实例。这是通过自动修改反映 SERVICE_NAMES 的 INSTANCE_GROUPS 参数,以及使用用于连接的服务名称来选择进行并行操作的实例组名称(除非为 PARALLEL_INSTANCE_GROUP 指定了不同的值)来实现的。
要覆盖此行为,请设置 INSTANCE_GROUPS 和 PARALLEL_INSTANCE_GROUP 初始化参数的值。如果使用从属进程的查询协调程序是在支持该服务的实例上启动的,则即使在不支持该服务的实例上,从属进程看起来也属于该服务。在执行结束时,从属进程将还原为默认的数据库服务。请注意,INSTANCE_GROUPS 是废弃的初始化参数,保留此参数仅仅是为了实现向后兼容。


通过度量阈值使用服务

可以定义服务级阈值:
ELAPSED_TIME_PER_CALL
CPU_TIME_PER_CALL
违反阈值时会触发服务器生成的预警。
可以对生成的预警采取以下措施:
更改优先级。
重新定位服务。
为服务增加实例。


SELECT service_name, elapsedpercall, cpupercall
FROM   V$SERVICEMETRIC;


通过度量阈值使用服务
服务级阈值允许对实际服务级别和所接受的所需最低级别进行比较,这样就可以获得与可以提供协定的服务级别或无法提供协定的服务级别有关的信息。
可为特定实例上的每个服务显式指定两个度量阈值:
调用的响应时间,ELAPSED_TIME_PER_CALL:响应时间目标表明希望最多过多长时间后进行响应。响应时间表示系统时钟时间。这是一个基本的度量,它反映了以该用户的身份阻止调用运行的所有延迟和错误。
调用的 CPU 时间: CPU_TIME_PER_CALL
AWR 会监视服务时间,并在性能超过阈值时发出 AWR 预警。然后,您可以通过更改作业的优先级、停止过载的进程或重新定位、扩展、收缩、启动或停止服务,对这些预警做出响应。使用自动化任务,可以使回应自动化。这样,即使需求出现变化,也可以保证服务质量。
注:幻灯片中所示的 SELECT 语句为您提供了在所用时间内累积的实例统计数据,以及在最近 60 秒间隔内对于每项服务 CPU 使用的度量的累积实例统计数据。有关最近一小时的历史记录,请查看 V$SERVICEMETRIC_HISTORY。


使用 EM 更改服务阈值
可以在“Database Instance Metric and Policy Settings(数据库实例度量和策略设置)”页设置服务的阈值。可从数据库实例主页访问此页,方法是单击“Related Links(相关链接)”部分的“Metric and Policy Settings(度量和策略设置)”链接。  
使用“Metric and Policy Settings(度量和策略设置)”页,可以设置服务的“Service CPU Time (per user call)(每个用户调用的服务 CPU 时间)”和“Service Response Time (per user call)(每个用户调用的服务响应时间)”度量。如果在此页上修改了严重值和警告值,则这些阈值将应用于实例的所有服务。如果要为不同的服务设置不同的阈值,请单击该表最后一列中的相应图标,如本幻灯片中所示。此时将打开相应的“Edit Advanced Settings(编辑高级设置)”页。在此页中,可以单击“Add(添加)”在“Monitored Objects(受监视对象)”表中添加行。在此情况下,每行代表一项特定服务。  
注:可以直接从“Create Service(创建服务)”页设置服务阈值,如本幻灯片底部所示。



exec DBMS_SERVER_ALERT.SET_THRESHOLD(-
  METRICS_ID => dbms_server_alert.elapsed_time_per_call,
  WARNING_OPERATOR => dbms_server_alert.operator_ge,  
  WARNING_VALUE => '500000',
  CRITICAL_OPERATOR => dbms_server_alert.operator_ge,
  CRITICAL_VALUE => '750000',
  OBSERVATION_PERIOD => 15,
  CONSECUTIVE_OCCURRENCES => 3,
  INSTANCE_NAME => 'I0n',
  OBJECT_TYPE => dbms_server_alert.object_type_service,
  OBJECT_NAME => 'ERP');

  
  服务和度量阈值:示例
在此示例中,将为 ERP 服务添加 ELAPSED_TIME_PER_CALL 度量的阈值。此度量将评估每次用户调用相应服务时的所用时间。时间必须使用毫秒表示。
只要在 15 分钟的时段内每次调用 ERP 服务的平均所用时间连续三次超过 0.5 秒,服务器就会发出警告预警。
只要在 15 分钟的时段内每次调用 ERP 服务的平均所用时间连续三次超过 0.75 秒,服务器就会发出严重预警。
注:必须为可能支持服务的每个 RAC 实例创建阈值。


服务汇总和跟踪



应始终按服务来汇总统计数据,以评估优化性能的工作量。
可以在更详细的级别上汇总统计数据:
MODULE
ACTION
SERVICE_NAME、MODULE 和 ACTION 的组合
可以在不同的级别上进行跟踪:
SERVICE_NAMES
MODULE
ACTION
SERVICE_NAME、MODULE 和 ACTION 的组合
对于优化使用共享会话的系统,这十分有用。



服务汇总和跟踪
默认情况下,会为属于每项服务的工作收集重要的统计数据和等待事件。应用程序可以通过 MODULE 和 ACTION 名称进一步限定服务,以确定该服务内重要的事务处理。这使您可以为已归类的工作量精确地定位性能较差的事务处理。使用连接池或事务处理监视程序监视系统中的性能时,这尤其重要。在这些系统中,会话是共享的,计算起来非常困难。
SERVICE_NAME、MODULE 和 ACTION 是 V$SESSION 中的实际列。SERVICE_NAME 会在用户登录时自动进行设置。应用程序将使用 DBMS_APPLICATION_INFO PL/SQL 程序包或特殊 OCI 调用设置 ACTION 和 MODULE 的名称。应针对当前正在执行的程序将 MODULE 设置为用户可识别的名称。同样,应将 ACTION 设置为用户正在模块内执行的特定操作或任务,例如输入新客户。
此工作量汇总的另一个作用是按服务进行跟踪。跟踪各个会话的传统方法是使用 SQL 命令生成可跨越工作量执行的跟踪文件。这样,就可以通过确定是否命中的方法来诊断有问题的 SQL 了。利用您提供的条件(SERVICE_NAME、MODULE 或 ACTION),可以将特定的跟踪信息捕获到一组跟踪文件中,然后将它们合并到一个输出跟踪文件中。这样,生成的跟踪文件就包含了与要完成的特定工作量相关的 SQL。


顶级服务性能页
在“Performance(性能)”页中,可以单击“Top Consumers(顶级使用者)”链接访问“Top Consumers(顶级使用者)”页。
“Top Consumers(顶级使用者)”页包含多个选项卡,将数据库显示为单一系统映像。“Overview(概览)”标签页包含四个饼图:“Top Clients(顶级客户机)”、“Top Services(顶级服务)”、“Top Modules(顶级模块)”和“Top Actions(顶级操作)”。每个图都提供了有关数据库中顶级资源使用者的不同方面。
“Top Services(顶级服务)”标签页将显示与数据库中定义的服务的性能有关的信息。使用此页可以在服务级别启用或禁用跟踪,以及查看生成的 SQL 跟踪文件。


服务汇总配置



统计数据的自动服务汇总级别
DBMS_MONITOR 用于粒度更细的服务汇总:
SERV_MOD_ACT_STAT_ENABLE
SERV_MOD_ACT_STAT_DISABLE
其它可能的汇总级别:
SERVICE_NAME/MODULE
SERVICE_NAME/MODULE/ACTION
跟踪服务、模块和操作:
SERV_MOD_ACT_TRACE_ENABLE
SERV_MOD_ACT_TRACE_DISABLE
在实例重新启动时将保留数据库设置


服务汇总配置
在每个实例上,将按服务自动汇总并收集重要的统计数据和等待事件。对于这一点,不必进行任何设置,只需使用要连接的服务与不同的连接字符串进行连接即可。不过,要为服务收集到粒度级别更细的统计信息,则必须使用 DBMS_MONITOR 程序包中的 SERV_MOD_ACT_STAT_ENABLE 过程。此过程支持其它层次组合的 SERVICE_NAME/MODULE 和 SERVICE_NAME/MODULE/ACTION 的统计数据收集。SERV_MOD_ACT_STAT_DISABLE 过程可停止已启用的统计数据收集。
如果在服务内启用了或禁用了统计数据汇总,则这一设置会应用于访问该数据库的每个实例。另外,在实例重新启动时会保留这些设置。
SERV_MOD_ACT_TRACE_ENABLE 过程以下列三种层次组合之一为服务启用跟踪:SERVICE_NAME、SERVICE_NAME/MODULE 和 SERVICE_NAME/MODULE/ACTION。默认设置是跟踪访问该数据库的所有实例。提供的参数会将跟踪限制到已知其性能较差的指定实例。通过此过程,还可以在生成的跟踪文件中捕获相关的等待和绑定变量值。SERV_MOD_ACT_TRACE_DISABLE 将在所有已启用的实例上对给定的服务、模块和操作组合禁用跟踪。与前面提到的统计数据收集类似,在实例重新启动时会保留服务跟踪。


服务汇总:示例

exec DBMS_MONITOR.SERV_MOD_ACT_STAT_ENABLE(-
     'AP', 'PAYMENTS');
exec DBMS_MONITOR.SERV_MOD_ACT_STAT_ENABLE(-
     'AP', 'PAYMENTS', 'QUERY_DELINQUENT');
exec DBMS_MONITOR.SERV_MOD_ACT_TRACE_ENABLE('AP');
exec DBMS_MONITOR.SERV_MOD_ACT_TRACE_ENABLE(-
     'AP', 'PAYMENTS', 'QUERY_DELINQUENT');

         
         服务汇总:示例
示例代码的第一段开始为 AP 服务内的 PAYMENTS 模块收集统计数据。第二个示例只为在 AP 服务下的 PAYMENTS 模块中运行的 QUERY_DELINQUENT 程序收集统计数据。这样便可以为数据库中运行的特定任务收集统计数据了。  
在第三个代码框中,将跟踪在 AP 服务下登录的所有会话。无论什么样的模块和操作,都会为使用该服务的每个会话创建一个跟踪文件。为了精确起见,可以只跟踪服务内的特定任务。上一示例中已对此操作进行了介绍,上一示例中对 PAYMENTS 模块内执行 QUERY_DELINQUENT 操作的所有 AP 服务的会话进行跟踪。
通过按服务、模块和操作进行跟踪,可以集中优化特定的 SQL,而不必从不同的程序中筛选包含 SQL 的跟踪文件。只有定义此任务的 SQL 语句会记录在跟踪文件中。这是对按服务、模块和操作收集统计数据的一种补充,因为这样可以确定操作的相关等待事件。
注:有关 DBMS_MONITOR 程序包的详细信息,请参阅《PL/SQL Packages and Types Reference》。


trcsess 实用程序
trcsess 实用程序根据下列几个条件合并所选跟踪文件的跟踪输出:会话 ID、客户机 ID、服务名称、操作名称和模块名称。trcsess 将跟踪信息合并到一个输出文件中之后,可以通过 tkprof 处理该输出文件。
使用 DBMS_MONITOR.SERV_MOD_ACT_TRACE_ENABLE 过程时,跟踪信息存在于多个跟踪文件中,必须使用 trcsess 工具将这些信息收集到一个文件中。
出于性能或调试目的合并特定会话或服务的跟踪信息时,trcsess 实用程序非常有用。
在专用服务器模型中,跟踪特定会话通常不是问题,因为将由一个专用进程在其生存期内处理会话。可以从属于处理会话的专用服务器的跟踪文件中查看该会话的所有跟踪信息。但是,即使在专用服务器模型中,跟踪服务也可能是一项复杂的任务。
而且,在共享服务器配置中,经常由不同的进程处理用户会话。与用户会话有关的跟踪信息分散在属于不同进程的不同跟踪文件中,因此很难全面地了解会话的生存期。


服务性能视图
可以在 V$SESSION 和 V$ACTIVE_SESSION_HISTORY 中查看服务、模块和操作的信息。
可以在 V$SERVICE_STATS、V$SERVICE_EVENT、V$SERVICE_WAIT_CLASS、V$SERVICEMETRIC 和 V$SERVICEMETRIC_HISTORY 中查看调用时间和性能统计数据。
对特定模块和操作启用了统计数据收集后,V$SERV_MOD_ACT_STATS 就会显示每个实例的性能度量。
在 V$SYSSTAT 中可跟踪和显示 300 多项与性能相关的统计数据。其中,有 28 项统计数据与服务有关。要查看有关服务的统计数据,请运行以下查询:SELECT DISTINCT stat_name FROM v$service_stats
在 28 项统计数中,值得一提的是 DB time 和 DB CPU。DB time 是一项评估每个调用的平均响应时间的统计数据,代表完成调用所用的实际时钟时间。DB CPU 是每个调用使用的实际 CPU 时间的平均值。响应时间与 CPU 时间的区别在于服务的等待时间。如果已知等待时间,并且此时间占用了响应时间的较大一部分,则可以在操作级别进行跟踪,以确定等待事件。
注:DBA_ENABLED_AGGREGATIONS 显示有关已启用的按需统计数据汇总的信息。DBA_ENABLED_TRACES 显示有关已启用的跟踪的信息。


启用通用跟踪

EXEC dbms_monitor.DATABASE_TRACE_ENABLE(TRUE,TRUE);


EXEC dbms_monitor.DATABASE_TRACE_DISABLE();


EXEC dbms_monitor.SESSION_TRACE_ENABLE(session_id => 27, serial_num => 60, waits => TRUE, binds => FALSE);


EXEC dbms_monitor.SESSION_TRACE_DISABLE(session_id => 27, serial_num => 60);


启用通用跟踪
可以使用跟踪来调试性能问题。启用跟踪的过程已实现为 DBMS_MONITOR 程序包的一部分。这些过程将为整个数据库启用跟踪。  
可以使用 DATABASE_TRACE_ENABLE 过程启用整个实例的会话级别 SQL 跟踪。该过程包含下列参数:
WAITS:指定是否要跟踪等待信息
BINDS:指定是否要跟踪绑定信息
INSTANCE_NAME:指定要为哪个实例启用跟踪。如果省略了 INSTANCE_NAME,则会为整个数据库启用会话级跟踪。
使用 DATABASE_TRACE_DISABLE 过程可为整个数据库或特定实例禁用 SQL 跟踪。
同样,也可以使用 SESSION_TRACE_ENABLE 过程在本地实例上对给定数据库会话标识符 (SID)启用跟踪。可以在 V$SESSION 中找到 SERIAL# 和 SID。
使用 SESSION_TRACE_DISABLE 过程可对给定数据库会话标识符 (SID) 和序列号禁用跟踪。


管理服务
根据要执行的管理任务的类型,可以使用 Oracle Enterprise Manager、DBCA 或 SRVCTL。
以下是与 RAC 环境中的服务有关的管理任务的说明:
禁用服务操作用于禁用所有或指定实例上的指定服务。禁用状态用于停下来进行维护的服务,目的是防止 Oracle Clusterware 不正确地自动重新启动。禁用整个服务会影响所有实例,因为它会禁用每个实例上的该服务。
启用服务操作用于使服务可以在 Oracle Clusterware 下运行,以进行自动重新启动和重新分配。即使某服务已停止也能启用它。Enable 是创建服务时的默认值。如果该服务已经启用,则系统会忽略该命令。可以启动已启用的服务,而无法启动已禁用的服务。启用整个服务会影响该服务在所有实例上的启用,因为它会在每个实例上启用该服务。
启动服务操作用于启动指定实例上的一项或多项服务。只能启动已启用的服务。如果试图在某个实例上启动某服务或当前运行该服务的实例数已达到其基数,则该命令会失败。


停止操作用于停止整个集群数据库或指定实例上的一项或多项服务。只能停止正在启动或已启动的 Oracle Clusterware 服务。在停止了一项要将其保持为停止状态的服务后,应禁用该服务,这是因为,如果只是停止而未禁用该服务,则它可能会因另一个计划的操作而自动重新启动。该操作可强制中断相互影响的会话。
删除服务操作用于从集群数据库中删除该服务在所有或指定实例上的配置。必须首先停止相应的服务,然后才能删除它。只能从特定实例上删除服务。
重新定位服务操作用于将服务从源实例重新定位到目标实例。目标实例必须在该服务的首选实例或可用实例列表中。该操作可强制中断相互影响的会话。重新定位的服务是暂时性的服务,直到永久性地修改相应的配置为止。
修改服务配置操作用于永久性地修改某服务配置。更改将在服务重新启动后生效。这允许您将服务从一个实例移至另一个实例。此外,此命令还会更改将成为某服务的首选实例和可用实例的实例。
显示指定服务的当前状态。
使用 DBCA 添加服务时,DBCA 还会为这些服务配置网络服务项并启动它们。使用 DBCA 删除服务时,DBCA 会停止相应的服务,删除该服务的 Oracle Clusterware 资源以及网络服务项。
使用 SRVCTL 创建了某项服务后,必须使用单独的 SRVCTL 命令启动它。
SRVCTL 不支持对同一对象并发执行多个命令。因此,请一次只为每个数据库、服务或其它对象运行一个 SRVCTL 命令。
注:srvctl stop database 命令隐式执行 srvctl stop services(因为服务依赖于数据库)。不过,后续的 srvctl start database 命令需要执行显式 srvctl start service。  


使用 Oracle Enterprise Manager 管理服务
可以使用 Oracle Enterprise Manager 在 GUI 框架内管理服务。本幻灯片中显示的屏幕快照是管理 RAC 中服务的主要页面。它显示了某已定义的服务的一些基本状态信息。
要访问此页,请单击集群数据库“Availability(可用性)”页的“Cluster Managed Database Services(集群管理的数据库服务)”链接。  
可以执行简单的服务管理,如启用、禁用、启动、停止和重新定位服务。本幻灯片中显示了所有可能的操作。
如果选择在“Cluster Managed Database Services(集群管理的数据库服务)”页启动某项服务,则 EM 会尝试在每个首选实例上启动该服务。停止该服务会在当前正在运行它的所有实例上停止它。
要重新定位某服务,请选择要管理的服务,从“Actions(操作)”下拉列表中选择“Manage(管理)”选项,然后单击“Go(执行)”。
注:在“Cluster Managed Database Services(集群管理的数据库服务)”页上,可以测试服务的连接。


要访问单个服务的“Cluster Managed Database Services(集群管理的数据库服务)”页,必须从“Cluster Managed Database Services(集群管理的数据库服务)”页中选择某个服务,从“Actions(操作)”下拉列表中选择“Manage(管理)”选项,然后单击“Go(执行)”。
这就是单个服务的“Cluster Managed Database Services(集群管理的数据库服务)”页。它提供的功能与前一页中的相同,只不过此处执行的操作适用于服务的特定实例。
此外,此页还提供将服务重新定位到某个可用实例的新增功能。所谓将某服务从一个实例重新定位到另一个实例,就是先在第一个实例上停止该服务,然后再在第二个实例 上启动它。
注:此页还显示为该特定服务设置的 TAF 策略。可以直接编辑该服务的属性,也可以链接到“Top Consumers(顶级使用者)”页。


管理服务:示例

$ srvctl start service –d PROD –s AP


$ srvctl stop service –d PROD –s AP –i RAC03,RAC04


$ srvctl disable service –d PROD –s AP –i RAC04

$ srvctl modify service –d PROD –s AP -i RAC05 –r


管理服务:示例
本幻灯片演示了一些使用 SRVCTL 来管理服务的任务。
假定已经创建了一个 AP 服务,它有四个首选实例:RAC01、RAC02、RAC03 和 RAC04。另外,还为 AP 定义了一个可用实例 RAC05。
在第一个示例中,所有首选实例上都启动了 AP 服务。如果有任何支持 AP 的首选实例或可用实例没有运行但已启用,则将会启动这些实例。
stop 命令会停止 RAC04 和 RAC03 实例上的 AP 服务。这些实例本身不会关闭,并且可能仍保持为运行状态以支持其他服务。AP 服务会继续在 RAC01 和 RAC02 上运行。其目的可能是要在 RAC04 上执行维护,所以在该实例上禁用了 AP 服务,以防止在该实例上自动重新启动该服务。OCR 会记录已为 RAC04 禁用了 AP 这一情况。因此,Oracle Clusterware 不会在 RAC04 上运行 AP,直到将来启用该服务为止。
本幻灯片中的最后一个命令会将 RAC05 从可用实例改为首选实例。这样做可保证始终有 4 个实例运行该服务,因为前面已禁用了 RAC04。
联机修改服务时,请不要执行其他服务操作。
注:有关详细信息,请参阅《Oracle Real Application Clusters Administrator’s Guide》。

管理服务:方案
本幻灯片演示了如何在保持工作量的停机时间为最短的情况下对服务配置进行更改。
假定有一个由 6 个节点构成的集群,该集群上运行了两项服务:DW 和 HR。起初,将 I1 和 I2 实例配置为 DW 的首选实例,将 I3、I4、I5 和 I6 配置为其可用实例。同样,起初将 I3、I4、I5 和 I6 配置为 HR 的首选实例, 将 I1 和 I2 配置为其可用实例。此初始配置与“发薪日”期间相对应(如图形左半部分所示)。
在假日期间,需要更改服务配置,使 DW 在前 4 个实例上运行,而 HR 在其余 2 个实例上运行。
本幻灯片从上到下,依次显示了需要执行哪些命令来切换服务配置。
请注意,srvctl modify service 命令的 –n 选项用于删除服务的初始配置。此更改将在下次重新启动服务时生效。也可以对这些命令使用 –f 选项,这样下一个 stop 命令就会中断相应的会话。此处,您会希望将 –f 选项与 srvctl stop service 命令结合使用,在整个集群内停止该服务。
然后使用 srvctl start service 命令来应用新创建的服务配置。


将分布式事务处理与 RAC 结合使用
当 RAC 与分布式事务处理结合使用(与 XA 标准兼容或经过 Microsoft Distributed Transaction Coordinator 协调)时,同一事务处理中的两个应用程序组件就可能连接到一个 RAC 集群中的不同节点上。这种情况可以出现在支持自动负载平衡的系统上,因为应用程序无法控制分布式事务处理分支会在哪些数据库节点上得到处理。  
从 Oracle RAC 11gR1 开始,这些分布式事务处理的类型将由系统通过使用新的后台进程(称为 GTX0…GTXj 自动控制。GLOBAL_TXN_PROCESSES 指定实例中的 GTXn 后台进程的初始编号,其默认值为 1。让数据库自动处理分布式事务处理,对处理繁杂的全局事务处理的系统来说,十分有用。
在 Oracle RAC 中,要通过分布式事务处理提供改进的应用程序性能,可能需要利用专用的服务(称为 DTP service)。使用 DTP 服务,可将分布式事务处理的所有分支定向到集群中的单个实例中。为在集群中进行负载平衡,最好使用几组较小的应用程序服务器,其中每组都将自身事务处理指定到单个服务中(或服务组),而不是使用一个或两个较大的应用程序服务器。本幻灯片中的图形显示的是一种可能的情况。假定有 3 个 RAC 节点:RAC01、RAC02 和 RAC03,其中每个节点都可以为来自中间层的任何非分布式事务处理提供服务。


对于来自其他中间层的分布式事务处理,将通过 Oracle Net Services 将它们静态划分到其中一个节点上。因此,每个节点都将其自身发布为非分布式事务处理的 S0 服务。此外,RAC01 和 RAC03 还将其自身发布为 DTP 服务 S1 和 S2。
如本幻灯片中所示,DTP 服务将其 DTP 标记设置为 TRUE。此外,还应始终将 DTP 服务定义为单例服务(即只有一个首选实例)。
每台中间层客户机都有 Oracle Net Service 名称配置,并通过 Oracle Net 访问 Oracle 数据库。用于分布式事务处理的每项 Oracle Net Service 都配置有一个 DTP 服务。
Oracle 服务器会确保 DTP 服务在该 RAC 集群内的基数为 1,以防在 RAC 数据库中有一个以上的同一 DTP 服务实例运行。这样,每个分布式事务处理都通过 Oracle Net 由 一个 DTP 服务处理,该分布式事务处理的所有紧密耦合的分支也会传送到 RAC 数据库的同一个节点。不同的分布式事务处理可以通过不同的 DTP 服务,按照负载平衡的原则分配到不同的 RAC 节点。如果其中某个数据库节点出现故障,Oracle Clusterware 和 RAC 会先自动检测故障,并执行事务处理恢复,然后在可用 RAC 节点上启动相应的 DTP 服务。当该节点重新运行后,可以根据工作量自动将同一 DTP 服务重新定位回来。


受限会话和服务
无论何时将一个集群实例置于受限模式,Oracle Clusterware 都会停止在该受限实例上运行的服务,然后在可用实例(如果存在的话)上启动它们。通过这种方式,监听程序可动态获悉这些变化,之后,它们就不会再尝试将请求传递到该受限实例,无论其当前负载如何,都是如此。实际上,监听程序会将该受限实例排除在它们的连接负载平衡算法之外。
使用这一功能时,有两个非常重要的注意事项:
首先,即使具有 RESTRICTED SESSION 权限的用户也不能通过监听程序远程连接到处于受限模式的实例。他们必须本地连接到支持该实例的节点,并使用继承协议。
其次,仅当受限实例在监听程序上进行了动态注册后,此新功能才起作用。也就是说,即使您在 listener.ora 文件中配置了 SID_LIST 项,但没有使用动态注册,该监听程序也不能阻止与受限实例进行连接的尝试。在这种情况下,由于集群的受限实例仍可访问,而该受限实例最终又将成为负荷最少的实例,因此该监听程序会开始将连接请求传递给该实例。但该实例因处于受限状态而无法接受连接请求,所以会拒绝连接并返回错误。这种情况可能会导致阻止对整个服务的访问。
注:在静态配置前,监听程序将使用动态服务注册信息。

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-6-15 16:16 , Processed in 0.050886 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569