Service资源
每个数据库都有一个或多个service名称,service名称是提供给客户端连接到数据库实例的名称。
创建数据库会默认创建与数据库同名的service,默认的service实现所有实例的负载均衡,可以认为数据库的所有实例是默认创建的service的首选节点。
手工创建的service资源区分首选节点与备用节点,客户端无论通过哪个节点请求连接都会固定连接到service资源的首选节点,只有当首选节点故障才会连接到备用节点。
TAF(Transparent Application Failover):对于已经连接到数据库的客户端连接(会话),当前连接的数据库实例出现问题时,将已经存在的数据库连接透明地迁移到其他数据库实例中。对应的连接可能在实例出现问题之前已经执行了一些操作,或者在实例出现问题时正在执行某个操作,所以在failover到新实例的时候需要对执行过的操作和正在执行的操作进行相应的处理。
TAF仅支持使用OCI方式连接到数据库的会话,不支持使用JDBC方式连接到数据库的会话。
创建service[oracle@wallet01 ~]$ srvctl add service -d wallet -s gspublic -r wallet1 -a wallet2,wallet3 -P basic -e session -y automatic-dUnique name for the database-s Service name-r " " Comma separated list of preferred instances-a " " Comma separated list of available instances-P {NONE | BASIC | PRECONNECT} TAF policy specification-e Failover type (NONE, SESSION, or SELECT)-y Management policy for the service (AUTOMATIC or MANUAL)查询service属性[oracle@wallet01 ~]$ srvctl config service -d wallet -s gspublicService name: gspublicService is enabledServer pool: wallet_gspublicCardinality: 1Disconnect: falseService role: PRIMARYManagement policy: AUTOMATICDTP transaction: falseAQ HA notifications: falseFailover type: SESSIONFailover method: NONETAF failover retries: 0TAF failover delay: 0Connection Load Balancing Goal: LONGRuntime Load Balancing Goal: NONETAF policy specification: BASICEdition: Preferred instances: wallet1Available instances: wallet2,wallet3查询service状态[oracle@wallet01 ~]$ srvctl status service -d walletService gspublic is not running.启动service资源[oracle@wallet01 ~]$ srvctl start service -d wallet -s gspublic[oracle@wallet01 ~]$ srvctl status service -d walletService gspublic is running on instance(s) wallet1