Bo's Oracle Station

【博客文章2021】Oracle RAC三种可飘移服务的发展简史和配置:SESSION、SELECT和TRANSACTION

2021-11-29 16:24| 发布者: admin| 查看: 3117| 评论: 0|原作者: Bo Tang

摘要: Oracle RAC三种可飘移服务的配置:BASIC、SELECT和TRANSACTION
【博客文章2021】Oracle RAC三种可飘移服务的发展简史和配置:SESSION、SELECT和TRANSACTION

Author: Bo Tang

1. Oracle RAC服务的发展简史:

    首先查看一下在当前19.3数据中,创建服务可以用到的选项:

[oracle@station11 ~]$ srvctl add service  -h

Adds a service configuration to the Oracle Clusterware.

Usage:
srvctl add service -db -service
{-preferred "" [-available
""]
[-tafpolicy {BASIC | NONE | PRECONNECT}] |
-serverpool [-cardinality {UNIFORM | SINGLETON}] }
[-netnum ] [-role
"[PRIMARY][,PHYSICAL_STANDBY][,LOGICAL_STANDBY][,SNAPSHOT_STANDBY]"]
[-policy {AUTOMATIC | MANUAL}] [-notification {TRUE|FALSE}] [-dtp
{TRUE|FALSE}] [-clbgoal {SHORT|LONG}] [-rlbgoal
{NONE|SERVICE_TIME|THROUGHPUT}] [-failovertype
{NONE|SESSION|SELECT|TRANSACTION}] [-failovermethod {NONE|BASIC}]
[-failoverretry ] [-failoverdelay
] [-edition ] [-pdb
] [-global {TRUE|FALSE}] [-maxlag
] [-sql_translation_profile
] [-commit_outcome {TRUE|FALSE}]
[-retention ] [-replay_init_time
] [-session_state {STATIC|DYNAMIC}]
[-pqservice ] [-pqpool ]
[-gsmflags ] [-force] [-eval] [-verbose]
    -db            Unique name for the database
    -service              Service name
    -preferred ""  Comma separated list of preferred instances
    -available ""  Comma separated list of available instances
    -serverpool         Server pool name

   -cardinality                   (UNIFORM | SINGLETON) Service runs on
every active server in the server pool hosting this service (UNIFORM) or
just one server (SINGLETON)

    -netnum        Network number (default number is 1)
    -tafpolicy                     (NONE | BASIC | PRECONNECT)        TAF policy specification
    -role                    Role of the service (primary, physical_standby, logical_standby, snapshot_standby)
    -policy                Management policy for the service (AUTOMATIC or MANUAL)
    -failovertype                  (NONE | SESSION | SELECT | TRANSACTION)      Failover type
    -failovermethod                (NONE | BASIC)     Failover method
    -failoverdelay Failover delay (in seconds)
    -failoverretry Number of attempts to retry connection
    -edition              Edition (or "" for empty edition value)
    -pdb       Pluggable database name

   -maxlag Maximum replication lag time
in seconds (Non-negative integer, default value is 'ANY')
    -clbgoal                       (SHORT | LONG)                   Connection Load Balancing Goal. Default is LONG.
    -rlbgoal                       (SERVICE_TIME | THROUGHPUT | NONE)     Runtime Load Balancing Goal
    -dtp                           (TRUE | FALSE)  Distributed Transaction Processing
    -notification                  (TRUE | FALSE)  Enable Fast Application Notification (FAN) for OCI connections
    -global                Global attribute (TRUE or FALSE)
    -preferred      Name of new preferred instance
    -available
    Name of new available instance
    -sql_translation_profile Specify a database object for SQL translation profile
    -commit_outcome                (TRUE | FALSE)          Commit outcome
    -retention          Specifies the number of seconds the commit outcome is retained
    -replay_init_time Seconds after which replay will not be initiated
    -session_state Session state consistency (STATIC or DYNAMIC)
    -pqservice         Parallel query service name
    -pqpool               Parallel query server pool name
    -gsmflags           Set locality and region failover values
    -eval                          Evaluates the effects of event without making any changes to the system
Usage:
srvctl add service -db -service
-update {-preferred "" |
-available "
"} [-force] [-verbose]
    -db            Unique name for the database
    -service              Service name
    -update                        Add a new instance to service configuration
    -preferred
     Name of new preferred instance
    -available
    Name of new available instance
    -force                         Force the add operation even though a listener is not configured for a network
    -verbose                       Verbose output
    -help                          Print usage

1.1 RAC服务的两个大类---Admin-managed RAC的服务和Policy-Managed RAC的服务
    上述选项中蓝色标注的是Admin-managed RAC专属的选项,而红色的是Policy-Managed RAC专属的选项。这两种选项是不可能同时存在的。未标注蓝色红色其他选项既可以存在于Admin-managed RAC的服务中,也可以存在于Policy-Managed RAC的服务中
    1)Admin-Managed方式的服务的介绍:
    在以往我们创建一个Oracle RAC数据库大概是这样的:在 dbca的界面中选择要将数据库实例运行在整个集群中的哪几台机器上。在安装的时候选定几台机器,那么以后如果不做增减节点的操作,就始终会在这几台机器上运行,实例与节点机器的对应关系不会变化。通常会根据主机名称的排序自动将每台主机上的数据库实例依次命名为dbname1到dbnameN(没有下划线)。在管理员安装完毕以后,这些都不会再自动变化,这就是Admin-Managed方式。 DBA指定数据库资源所运行的服务器,并且手动放置资源。这是10g和之前版本Oracle RAC数据库使用的管理策略。正是因为这样,这种方式的服务要指定-preferred(默认运行该服务的节点),-available(指定当默认节点出故障时的备用节点)。
    2)Policy-Managed方式的服务的介绍:
    基于策略的管理方式,是以服务器池(Server Pools)为基础的。简单地说,就是先定义一些服务器池,池中包含一定量的服务器,然后再定义一些策略,根据这些策略Oracle会自动决定让多少个数据库实例运行在池中的多少台机器上。数据库实例名后缀(有下划线)、数据库实例个数、所运行的主机,这些都是通过策略决定的,而不是数据库管理员事先定好的。策略主要包括:重要性、最少节点数、最大节点数等等这些指标。当管理拥有大量节点的Oracle RAC服务器集群时,并且在这些集群中运行着多种不同重要程度,不同应用需求的RAC数据库时,为了简化管理,建议使用Policy-Managed方式。实际上Oracle也建议只有在超过3台的服务器的时候才使用Policy-Managed来管理整个RAC数据库集群。想象一下,使用Policy-Managed方式可以达到的效果:如果我们有10台服务器,根据不同的重要性定义服务器池的关键程度,然后在其中某些机器意外停机的情况下,仍然可以自动地保持足够多的机器给重要的系统提供数据库服务,而将不关键的Serverpool的机器个数降低到最低限度。正是因为这样,这种方式的服务要指定-serverpool,还要指定-cardinality {UNIFORM(指在serverpool的所有节点上运行) | SINGLETON(指只在serverpool的一个节点上运行)}。

1.2 Admin-managed RAC的能飘移的服务:
    Admin-managed RAC的能飘移的服务就是TAF(透明故障应用转移)的服务,TAF不适用于Policy-Managed方式的服务这种服务的failover_method可以为NONE、BASIC或PRECONNECT,只有后两者才能飘移。
    如果配置了TAF,Oracle RAC在用户连接出现问题时,就会将会话飘移到仍然存活的实例上去。TAF只有3个选项:[-tafpolicy {BASIC | NONE | PRECONNECT}] ,而默认的全局数据库名的那个服务不是TAF的服务。 除了none选项外,Oracle历史上只有两代的TAF服务:Pre-Connect和Basic。
    较早出现的Pre-Connect服务要求任何会话都有一个影子连接,以应对连接失败场景(类似汽车的备胎)。Pre-Connect增加了一倍的连接数量,多消耗了一倍的资源(用户还要配置两个TNS串),现在已经很少有人使用了。
    -tafpolicy选项也可以简写成-P。

1.3 Policy-Managed RAC的能飘移的服务:
     这种服务不能指定任何TAF的选项。这种服务的failover_method永远为NONE。

SQL> select failover_method, failover_type, failover_retries, failover_delay from dba_services where service_name='SERV1';
--------------------------------------------------------------------------------------------------------------------------------------------
                   
NONE                SELECT          180                 5

     配置这种服务,请直接指定-failoverretry(也可以写成-z):代表自动重试连接到仍然存活的节点次数;请直接指定-failoverdelay(也可以写成-w):代表两次重试连接之间的延迟;请直接指定-failovertype(也可以写成-e):代表飘移的类型。当然其他与飘移无关的选项也可以指定,比-clbgoal(也可以写成-j):代表连接负载均衡。 又比如-notification(也可以写成-q):代表是否启动FAN,快速应用通知。注意-cardinality(也可以写成-c)不管是UNIFORM还是SINGLETON都可以实现漂移,它只是表示任何时候服务在Serverpool上可运行的节点数目,UNIFORM代表可运行在所有节点上(漂移前后都是),而SINGLETON代表任何时候只能运行在Serverpool的一个节点上(漂移前后都是)。

2. Oracle RAC三种可飘移服务的配置:SESSION、SELECT和TRANSACTION:

2.1 SESSION型的飘移:
     出现节点故障时,能保证用户的会话被重新自动连接到别的存活的实例。正在执行的SELECT语句会出错。
     Admin-managed RAC的服务 : 
2.2 SELECT型的飘移:
     出现节点故障时,能保证用户正在执行的SELECT语句被重新自动连接到别的存活的实例,最后结果集会正确呈现。 正在执行事务中的INSERT,UPDATE或DELETE会被回滚。
     Admin-managed RAC的服务 :

2.3 TRANSACTION型的飘移:
    出现节点故障时,支持事务级的故障转移,-commit_outcome必需设置为TRUE。
    Admin-managed RAC的服务 : 

    Policy-Managed RAC的服务:

                                

路过

雷人

握手

鲜花

鸡蛋

QQ|手机版|Bo's Oracle Station   

GMT+8, 2023-9-17 18:13 , Processed in 0.018076 second(s), 20 queries .

返回顶部