Oracle RAC Services
Introduction:
In RAC (Real Application Cluster)environment a single service can represent an application,multiple applications or a subset of a single application,a single service can be associated with one or more instances of a oracle RAC database.
listener (server side)
establish a connection.
remote server - tnsnames.ora(client side configuration)
tnsping net_service_name
tnsping prod
we can have multiple listener with different ports
configured ?
yes
list1 - 1521 - 10conn
list2 - 9101 - 20
------------------------------------------
Services .
Purpose - for load balance and failover.
hrms - db1 - app1 -connec1
finance - db2 - app2 -connec2
sales - db3 - app3 -connec3-tns
RAC 4 node RAC
every node has instance and listener(local) with scan listner(remote-dns)
node1 - scanliste - prod1
node2 - scanliste - prod2
node3 - scanliste - prod3
node4 - scanliste - prod4
hrms - node1,3-10k
prod - finance -n2 -10k
sales - n3,2 -40k
Automatic Workload Management :
RAC Services:
Using RAC Services , How do we manage applications ?
Define Services to a particular application or to a subset
of application’s operations.
Services enable you to manage your application workloads as
separate entities.
Ensures that business priorities are met by controlling
how processing resources are applied to your application
workloads.
If a primary instance fails, then Oracle moves the service
from the failed instance to a surviving alternate instance.
Using SRVCTL (Server Control) Utility,
DBCA – we can create, modify,
start, stop operations
How the connections are distributed/balanced across these
nodes?
by defining a service , the workload is distributed across
nodes as a separate entity.
Preferred Instance :
The instance that support service.
Available Instance :
The instance that support a service if the service’s
preferred instance fails.
Limit of 115 services per database.
Sys$background,sys$users are default Services
using srvctl:
$srvctl add service -d prod -s hrms -r prod1,prod3 -a prod2
$srvctl add service -d prod -s finance -r prod1,prod2 -a prod3
$srvctl add service -d prod -s sales -r prod2 -a prod1
srvctl add service -d prod -s hr -r prod2,prod3 -a prod1
srvctl add service -d prod -s acct -r prod3 -a prod1
$srvctl add service -d prod -s idbi -r prod2 -a prod1
-r preffered instance
-a available instance
-s service name
-d database name
$srvctl status service -d prod -s hrms
$srvctl start service -d prod -s hr
list of services - using config
$ srvctl config database -d prod
If load on the instance, can move/relocate the service
connections to another instance.
select inst_id,service_name,count(*) from gv$session group by inst_id,service_name;
1 hrms 4500
2 finance 200
2 sales 3000
3 manfacturing 1000
$srvctl relocate service -d prod -s hr -i prod2 -t prod1
-t newinstance
-i old instance
by finding number of sessions on service name.
sql>select inst_id,service_name,machine,count(*) from gv$session
group by inst_id,service_name,machine;
1 hrms - 12000
2 sales - 15000
3 fin - 30000
sql>connect sys/sys123@prod1
For prod1 ,
has to configure tnsnames.ora
with service name prod
instance_name prod1
shared storage - datafiles
prod - prod1-list1-scanip
prod2-list1-scanip
prod3-list1-scanip
application - 3 but db is one(prod)
sales schema
<-scan
<-sales - to make it seperate entity with in the same
db.
define services to support workload balancing
and failover.
hrms schema
<-scan
<-hrms
finance schema
<-scan
<-finance
hrms-prod1,prod3 (A-prd2) - connections - 1000 - gv$session
finance-prod2,prod3 - conn - 200
sales -prod3 - conn - 40
Enabling load balance,Failover
Automatic workload Manangement
with services - can define.
Client side Load Balancing
tnsnames.ora - copy from server to get connect from
user.
using a connect string.
net service name
nsn - prod
service_name = prod
host=scan-cluster - DNS - route least loaded
node in a round robin method.
LOAD_BALANCE=ON.
prod1,prod2 - scan will route the connection for these
preferred nodes configure with service.
When new node prod3 added to the cluster then
Client side additional configuration is not needed.
when configured with scan and load balance-on
From server side, modify the service with additional
instance as a preferred node to support and restart
the service
FailOver- Client Side :
using parameter in tnsnames.ora with failover=on will
support Client side failover when node fails.
helps to failover if the first listener
connection fails.
failover=on
Server Side - Load Balancing:
In server side load balancing , configure the scan
listener as remote listenr in every instance to route the
connection.
The PMON maintains the performance information and will
provide from every instance.
The local listener will redirect to the least loaded
node as per load provided by pmon from the instance.
sql>show parameter remote_listener
sql>show parameter local_listener
What is service?
What is the purpose of service?
How do define services in rac?
What is preferred instance?
What is available instance?
Type of failover and load balancing?
How do we enable client side failover/load balancing?
What are the parameter configured for local and remote listener?
What are the views to find the performance or load on the server in cluster?
using gv$session
To configure cluster - parameter ?
cluster_database=true
utility to configure services? srvctl
finding services configured for preferred and available
srvctl config service -d prod -s sales
Note:Info on Oracle RAC service it may be differ from your environment prod,test,dev and directories etc
THANKS FOR VIEWING MY BLOG FOR MORE UPDATES FOLLOW ME OR SUBSCRIBE ME