Services for a DBA May Your Workloads RIP (Run In Peace)

Similar documents
Using DataDirect Connect for JDBC with Oracle Real Application Clusters (RAC)

Oracle Real Application Clusters Load Balancing and Failover Options. An IT Convergence presentation by Dan Norris

Oracle WebLogic Server and Highly Available Oracle Databases. An Oracle White Paper August Integrated Maximum Availability Solutions

managing planned downtime with RAC Björn Rost

Oracle Net Services - Best Practices for Database Performance and Scalability

Using Oracle Real Application Clusters (RAC)

Oracle Database 11g: RAC Administration Release 2

An Oracle White Paper June Oracle Single Client Access Name (SCAN)

Oracle Workload Characterization Andy Rivenes AppsDBA Consulting. Abstract. Introduction. Workload Characterization

Configuring the BIG-IP LTM v11 for Oracle Database and RAC

Oracle 11g: RAC and Grid Infrastructure Administration Accelerated R2

Oracle Net Services: Best Practices for Database Performance and Scalability. Kant C Patel Director, Oracle Net Development

Oracle Net Services: Performance, Scalability, HA and Security Best Practices

Oracle Database 11 g Performance Tuning. Recipes. Sam R. Alapati Darl Kuhn Bill Padfield. Apress*

Oracle Net Services: Performance, Scalability, HA and Security Best Practices

Figure 1. Accessing via External Tables with in-database MapReduce

Advanced Oracle DBA Course Details

<Insert Picture Here> Oracle In-Memory Database Cache Overview

Oracle Database: SQL and PL/SQL Fundamentals NEW

Oracle Database 11g: Performance Tuning DBA Release 2

<Insert Picture Here> Performance, performance, performance!!!

Maximum Availability Architecture. Oracle Best Practices For High Availability

Oracle Database 10g: New Features for Administrators

1. This lesson introduces the Performance Tuning course objectives and agenda

About the Author About the Technical Contributors About the Technical Reviewers Acknowledgments. How to Use This Book

Oracle Database 11g: SQL Tuning Workshop

ITG Software Engineering

Oracle Database 11g: SQL Tuning Workshop Release 2

Oracle 11g Database Administration

Oracle Networking and High Availability Options (with Linux on System z) & Red Hat/SUSE Oracle Update

Oracle Databases on VMware High Availability

ORACLE DATABASE 10G ENTERPRISE EDITION

How To Test For A Test On A Test Server

Keep It Simple - Common, Overlooked Performance Tuning Tips. Paul Jackson Hotsos

Oracle Database Solutions on VMware High Availability. Business Continuance of SAP Solutions on Vmware vsphere

SCAN, VIP, HAIP etc. Introduction This paper is to explore few RAC abbreviations and explain the concepts behind these acronyms.

Oracle Database 10g: RAC for Administrators

Basic Tuning Tools Monitoring tools overview Enterprise Manager V$ Views, Statistics and Metrics Wait Events

ORACLE DATABASE: ADMINISTRATION WORKSHOP I

Oracle9i Data Guard: SQL Apply Best Practices. An Oracle White Paper September 2003

Objectif. Participant. Prérequis. Pédagogie. Oracle Database 11g - Performance Tuning DBA Release 2. 5 Jours [35 Heures]

Oracle. Brief Course Content This course can be done in modular form as per the detail below. ORA-1 Oracle Database 10g: SQL 4 Weeks 4000/-

Monitoring and Diagnosing Oracle RAC Performance with Oracle Enterprise Manager. Kai Yu, Orlando Gallegos Dell Oracle Solutions Engineering

Why Standardize on Oracle Database 11g Next Generation Database Management. Thomas Kyte

SQL*Net PERFORMANCE TUNING UTILIZING UNDERLYING NETWORK PROTOCOL

Getting Dedicated with Shared Servers, and how not to.

Seamless Application Failover with Oracle Data Guard

Oracle Database 12c: Performance Management and Tuning NEW

Copyright 2014, Oracle and/or its affiliates. All rights reserved.

Objectif. Participant. Prérequis. Pédagogie. Oracle Database 11g - Administration Workshop I Release 2. 5 Jours [35 Heures]

Oracle Net Services for Oracle10g. An Oracle White Paper May 2005

Active-Active ImageNow Server

Programa de Actualización Profesional ACTI Oracle Database 11g: SQL Tuning Workshop

Monitoring and Diagnosing Oracle RAC Performance with Oracle Enterprise Manager

Oracle DBA Course Contents

An Oracle White Paper October Oracle Database and IPv6 Statement of Direction

Real Application Testing. Fred Louis Oracle Enterprise Architect

Active-Active and High Availability

Oracle Database 12c: Performance Management and Tuning NEW

Oracle Database 11g: New Features for Administrators DBA Release 2

An Oracle White Paper July Oracle Database 12c: Meeting your Performance Objectives with Quality of Service Management

Oracle Database 11g: Administration Workshop I Release 2

GLBP - Gateway Load Balancing Protocol

Techniques for implementing & running robust and reliable DB-centric Grid Applications

SAS 9.4 Intelligence Platform

- An Oracle9i RAC Solution

Oracle Database 12c: SQL Tuning for Developers. Sobre o curso. Destinatários. Oracle - Linguagens. Nível: Avançado Duração: 18h

Oracle Easy Connect Naming. An Oracle White Paper October 2007

Proactive database performance management

Maximum Availability Architecture

MyOra 3.5. User Guide. SQL Tool for Oracle. Kris Murthy

TIBCO ActiveMatrix BusinessWorks SmartMapper Plug-in Release Notes

An Oracle White Paper May Guide for Developing High-Performance Database Applications

ORACLE DATABASE 11G: COMPLETE

<Insert Picture Here> Oracle Database Directions Fred Louis Principal Sales Consultant Ohio Valley Region

UNIVERSITY AUTHORISED EDUCATION PARTNER (WDP)

Grid Computing in SAS 9.4 Third Edition

D12C-AIU Oracle Database 12c: Admin, Install and Upgrade Accelerated NEW

Oracle EXAM - 1Z Oracle Database 11g Release 2: SQL Tuning. Buy Full Product.

An Oracle White Paper June Oracle Real Application Clusters (RAC)

HP ALM Best Practices Series

Why and How You Should Be Using Policy-Managed RAC Databases

Response Time Analysis

Oracle Database 11g: Administration Workshop I Release 2

1Z0-117 Oracle Database 11g Release 2: SQL Tuning. Oracle

StreamServe Persuasion SP5 Microsoft SQL Server

ORACLE INSTANCE ARCHITECTURE

Exploring Oracle E-Business Suite Load Balancing Options. Venkat Perumal IT Convergence

ORACLE DBA 11G TRAINING

Implementing Oracle Grid: A Successful Customer Case Study

Exam : Upgrade: Transition Your MCITP SQL Server 2005 DBA to MCITP SQL Server Title : Version : Demo

Oracle Database Security and Audit

Maximum Availability Architecture. Oracle Best Practices For High Availability

CASE STUDY: Oracle TimesTen In-Memory Database and Shared Disk HA Implementation at Instance level. -ORACLE TIMESTEN 11gR1

An Oracle White Paper January A Technical Overview of New Features for Automatic Storage Management in Oracle Database 12c

Handling Exceptions. Schedule: Timing Topic 45 minutes Lecture 20 minutes Practice 65 minutes Total

KillTest. 半 年 免 费 更 新 服 务

Tips and Tricks for Using Oracle TimesTen In-Memory Database in the Application Tier

Netezza PureData System Administration Course

<Insert Picture Here> Best Practices for Extreme Performance with Data Warehousing on Oracle Database

Transcription:

Services for a DBA May Your Workloads RIP (Run In Peace) David Austin Manager Technical Writing for RAC and Grid Oracle USA, Inc. david.austin@oracle.com

What, When, Why, Where, How? Connection load balancing Client-Side load balancing Server-Side load balancing Runtime connection load balancing Listener load balancing Session load balancing Client-Side connect time failover Transparent application failover Automatic Workload Management

Connection Load Balancing Each new connection is routed to the best server to maintain balance across workloads Two types of connection load balancing Client-Side connection load balancing Server-Side connection load balancing Can use both in a Real Application Clusters (RAC) environment

Client-Side Connection Load Balancing sales.us.acme.com= (DESCRIPTION= (ADDRESS_LIST= (LOAD_BALANCE=on) (ADDRESS= (PROTOCOL=tcp) (HOST=app1) (PORT=1521)) (ADDRESS= (PROTOCOL=tcp) (HOST=app2) (PORT=1521))) Clients Listeners (CONNECT_DATA= (SERVICE_NAME=))) tnsnames.ora

Client-Side Connection Load Balancing sales.us.acme.com= (DESCRIPTION= (ADDRESS_LIST= (LOAD_BALANCE=on) (ADDRESS= Randomly selects from available listener ports Clients Listeners (PROTOCOL=tcp) (HOST=app1) (PORT=1521)) (ADDRESS= (PROTOCOL=tcp) (HOST=app2) (PORT=1521))) (CONNECT_DATA= (SERVICE_NAME=))) tnsnames.ora

Client-Side Connection Load Balancing sales.us.acme.com= (DESCRIPTION= (ADDRESS_LIST= (LOAD_BALANCE=on) (ADDRESS= Randomly selects from available listener ports Clients Listeners (PROTOCOL=tcp) (HOST=app1) (PORT=1521)) (ADDRESS= (PROTOCOL=tcp) (HOST=app2) (PORT=1521))) (CONNECT_DATA= (SERVICE_NAME=))) tnsnames.ora

Server-Side Connection Load Balancing Listener selects least loaded instance providing the required service Clients Listeners sales.us.acme.com= (DESCRIPTION= (ADDRESS_LIST= (LOAD_BALANCE=on) (ADDRESS= (PROTOCOL=tcp) (HOST=app1) (PORT=1521)) (ADDRESS= (PROTOCOL=tcp) (HOST=app2) (PORT=1521))) (CONNECT_DATA= (SERVICE_NAME=)))

Parameters For all listeners to recognize all available instances set the LOCAL_LISTENER and REMOTE_LISTENER parameters in the instance parameter file(s). For example: LOCAL_LISTENER= (ADDRESS=(PROTOCOL=tcp)(HOST=app1)(PORT=1521)) and REMOTE_LISTENER= (ADDRESS=(PROTOCOL=tcp)(HOST=app2)(PORT=1521)) on the app1 server To improve randomization set PREFER_LEAST_LOADED_NODE_<listener>=OFF (in sqlnet.ora file)

Considerations Available since Oracle9i Can use for RAC or Data Guard logical standby database connections Logon storms can overwhelm the algorithms May overload one instance regardless of settings More likely with a small number of listeners and instances

Transparent Application Failover: Overview Application OCI Library Net Services Application OCI Library Net Services Preconnect TAF Basic TAF Preconnect

Transparent Application Failover: Overview Service Application OCI Library Net Services 1. Service starts on all instances Service Application OCI Library Net Services Preconnect TAF Basic TAF Preconnect

Transparent Application Failover: Overview Application OCI Library Net Services 2. Net Services connect listeners to their defined instances Application OCI Library Net Services Preconnect TAF Basic TAF Preconnect

Transparent Application Failover: Overview Application OCI Library Net Services 3a. Applications connect to primary instances Application OCI Library Net Services Preconnect TAF Basic TAF Preconnect

Transparent Application Failover: Overview Application OCI Library Net Services 3b. Net services creates connection to secondary instance Application OCI Library Net Services Preconnect TAF Basic TAF Preconnect

Transparent Application Failover: Overview Application OCI Library Net Services 4. Connections maintained until something fails Application OCI Library Net Services X X Preconnect TAF Basic TAF Preconnect

Transparent Application Failover: Overview Application OCI Library Net Services 5. Net services recognizes the loss of the connection Application OCI Library Net Services Preconnect TAF Basic TAF Preconnect

Transparent Application Failover: Overview Application OCI Library Net Services 6a. For BASIC TAF, OCI connects to alternate instance when application reports error Application OCI Library Net Services Preconnect TAF Basic TAF Preconnect

Transparent Application Failover: Overview Application OCI Library Net Services 6b. For PRECONNECT TAF, OCI activates connection to alternate instance when application reports error Application OCI Library Net Services Preconnect TAF Basic TAF Preconnect

Basic TAF = (DESCRIPTION = (FAILOVER=ON)(LOAD_BALANCE=ON) (ADDRESS=(PROTOCOL=TCP)(HOST=N1VIP)(PORT=1521)) (ADDRESS=(PROTOCOL=TCP)(HOST=N2VIP)(PORT=1521)) (CONNECT_DATA = (SERVICE_NAME = ) (FAILOVER_MODE = (TYPE=SESSION) (METHOD=BASIC) (RETRIES=180) (DELAY=5))))

Considerations Reconnection time depends on: Nature of failure Net services delay Number of connections to be made All applications switch to another instance If only one, it must have reserve capacity for all users on primary instance If multiple instances, logon storm may prevent loadbalancing algorithms from working correctly

Preconnect TAF = (DESCRIPTION = (FAILOVER=ON)(LOAD_BALANCE=ON) (ADDRESS=(PROTOCOL=TCP)(HOST=N1VIP)(PORT=1521)) (ADDRESS=(PROTOCOL=TCP)(HOST=N2VIP)(PORT=1521)) (CONNECT_DATA = (SERVICE_NAME = ) (FAILOVER_MODE = (TYPE=SESSION) (METHOD=PRECONNECT) (RETRIES=180) (DELAY=5))))

Considerations Reconnection time depends on: Nature of failure Net services delay NOTE: Not dependent on number of connections All applications switch to another instance Typically only useful in a two-instance system Secondary instance capacity is reduced by preconnected sessions

How Can Services Help? Allow distribution of service across desired instances Choice of connection routing defined by type of workload Identify any instances for use in failovers Enable dynamic reallocation of application connections depending on workload

Traditional Workload Management Day time Payday DW Batch Spare Holiday/weekend Failover?

Traditional Workload Management Day time Payday DW Batch Spare Have to over-allocate resources for each application s peak times Holiday/weekend Failover?

Grid Workload Management Day time Payday DW Batch Spare Holiday/weekend Failover?

Grid Workload Management Day time Payday DW Batch Spare Reduce waste but service workload with 1/2 the server resources Holiday/weekend Failover?

Workload is Managed with Services Are an integral part of Oracle Database 10g Group sessions doing similar work Provide new tuning options Manage multiple instances like a single instance Provide base for balanced and highly available connections

Attributes of a Service: Single Instance Identified with a globally unique name Network identifier to provide access by clients Threshold values (which you set) for response time and CPU consumption alerts Priority value (which you set) to determine relative resource use compared with competing services

Attributes of a Service: RAC Instances All of single-instance attributes plus Load balancing advisory goal to determine if connections are made for quality (service response time) or for best throughput (how much work is completed in a unit of time) Flag to identify if service will use distributed transactions Flag to turn on RAC high availability event propagation to OCI and ODP.NET clients via Advanced Queuing Transparent application failover characteristics Connection load balancing goal to determine if connections are made for open or closed workloads (that is, using load balancing advisory goal or using session counts) High availability option by instance primary (aka Preferred) or failover (aka Available)

Service Types and Characteristics Application services Default service created by DBCA (named after instance full name for single instance, stem for RAC) Others created as needed for workload management Service names must be 64 characters or less Internal services SYS$BACKGROUND (for use by background processes) SYS$USERS (for use by sessions not assigned to an application service) Cannot be deleted, changed, or disabled Limit of 64 application services per database (including the 2 internal services)

Create a Service with PL/SQL execute dbms_service.create_service( service_name => 'hr.mycompany.com', network_name => 'hr.mycompany.com', goal => dbms_service.goal_service_time, dtp => false, aq_ha_notifications => true, failover_method => dbms_service.failover_method_basic, failover_type => dbms_service.failover_type_select, failover_retries => 180, failover_delay => 5. clb_goal => dbms_service.clb_goal_long);

Create a Service with PL/SQL execute dbms_service.create_service( service_name => 'hr.mycompany.com', network_name => 'hr.mycompany.com', goal => dbms_service.goal_service_time, dtp => false, aq_ha_notifications => true, failover_method => dbms_service.failover_method_basic, failover_type => dbms_service.failover_type_select, failover_retries => 180, failover_delay => 5. clb_goal => dbms_service.clb_goal_long); Unique name and Net Service client connection are identical

Create a Service with PL/SQL execute dbms_service.create_service( service_name => 'hr.mycompany.com', network_name => 'hr.mycompany.com', goal => dbms_service.goal_service_time, dtp => false, aq_ha_notifications => true, failover_method => dbms_service.failover_method_basic, Load balancing advisory goal (quality, i.e. response time) best for unpredictable workloads. Other options are goal_throughput best for work with fixed execution times or serial processing, such as batch jobs, and goal_none for applications that don't use active load balancing. failover_type => dbms_service.failover_type_select, failover_retries => 180, failover_delay => 5. clb_goal => dbms_service.clb_goal_long);

Create a Service with PL/SQL execute dbms_service.create_service( service_name => 'hr.mycompany.com', network_name => 'hr.mycompany.com', goal => dbms_service.goal_service_time, dtp => false, aq_ha_notifications => true, failover_method => Indicates that the service is not for use with distributed transactions. This is a Boolean value, dbms_service.failover_method_basic, failover_type => dbms_service.failover_type_select, failover_retries => 180, failover_delay => 5. clb_goal => dbms_service.clb_goal_long); with TRUE being the other option.

Create a Service with PL/SQL execute dbms_service.create_service( service_name => 'hr.mycompany.com', network_name => 'hr.mycompany.com', goal => dbms_service.goal_service_time, dtp => false, aq_ha_notifications => true, failover_method => dbms_service.failover_method_basic, failover_type => Advanced dbms_service.failover_type_select, Queuing to OCI failover_retries => 180, FALSE failover_delay to prevent event => 5. propagation. clb_goal => dbms_service.clb_goal_long); HA events are to be sent via and ODP.NET clients. Set to

Create a Service with PL/SQL execute dbms_service.create_service( service_name => 'hr.mycompany.com', network_name => 'hr.mycompany.com', This TAF method is the only one supported Preconnected goal => dbms_service.goal_service_time, dtp => false, aq_ha_notifications => true, failover_method => dbms_service.failover_method_basic, failover_type => dbms_service.failover_type_select, failover_retries => 180, failover_delay => 5. clb_goal => dbms_service.clb_goal_long); sessions are not valid for services created with PL/SQL

Create a Service with PL/SQL Use this TAF type or FAILOVER_TYPE_SESSION to enable TAF for the session, which overrides client connection TAF settings. Note that TAF works only with OCI. Session type just connects, Select type resumes interrupted query. execute dbms_service.create_service( service_name => 'hr.mycompany.com', network_name => 'hr.mycompany.com', goal => dbms_service.goal_service_time, dtp => false, aq_ha_notifications => true, failover_method => dbms_service.failover_method_basic, failover_type => dbms_service.failover_type_select, failover_retries => 180, failover_delay => 5. clb_goal => dbms_service.clb_goal_long);

Create a Service with PL/SQL execute dbms_service.create_service( service_name => 'hr.mycompany.com', network_name => 'hr.mycompany.com', goal => dbms_service.goal_service_time, dtp => false, aq_ha_notifications => true, failover_method => Number of times TAF tries to reconnect and time (in seconds) to wait between each attempt. dbms_service.failover_method_basic, failover_type => dbms_service.failover_type_select, failover_retries => 180, failover_delay => 5, clb_goal => dbms_service.clb_goal_long);

Create a Service with PL/SQL Connection goal for long-lasting connections, such as connection pools and SQL*Forms applications. The other option is CLB_GOAL_SHORT for activities that will not stay connected long enough to be impacted by changing loads on the connected instance. NOTE: the tnsnames.ora LOAD_BALANCE=ON entry is required for these goals to be instantiated. execute dbms_service.create_service( service_name => 'hr.mycompany.com', network_name => 'hr.mycompany.com', goal => dbms_service.goal_service_time, dtp => false, aq_ha_notifications => true, failover_method => dbms_service.failover_method_basic, failover_type => dbms_service.failover_type_select, failover_retries => 180, failover_delay => 5, clb_goal => dbms_service.clb_goal_long);

Other Ways to Create and Manage Services Additional procedures in the DBMS_SERVICE PL/SQL package Database Configuration Assistant (DBCA) Create during database creation Create and manage after installation from the Service Management screen under the Oracle Real Application Clusters option Enterprise Manager Create and manage from the Cluster Managed Database Services page The SRVCTL tool Create and manage services by database or instance Requires Oracle Clusterware

SRVCTL Commands for Services: Add Syntax srvctl add service -d db_unique_name -s service_name -r preferred_list [-a available_list] [-P TAF_policy] where -d db_unique_name identifies the unique name for the database -s service_name identifies the service name -r preferred_list identifies the list of preferred instances -a available_list identifies the list of available instances -P TAF_policy identifies the TAF policy (NONE, BASIC, or PRECONNECT). The BASIC and PRECONNECT settings affect the content of the TNS string that Oracle generates automatically when the command is executed

SRVCTL Commands for Services: Add Example srvctl add service -d db_unique_name -s service_name -r preferred_list [-a available_list] [-P TAF_policy] where -d db_unique_name } identifies the unique name for the database -s service_name identifies the service name -r preferred_list identifies the list of preferred instances -a available_list identifies the list of available instances These options are identical to -P TAF_policy identifies the TAF policy those (NONE, in the BASIC, dbms_service or PRECONNECT). The BASIC and package PRECONNECT settings affect the content of the TNS string that Oracle generates automatically when the command is executed

SRVCTL Commands for Services: Add Example srvctl add service -d db_unique_name -s service_name These options are not provided in the -r preferred_list [-a available_list] [-P TAF_policy] dbms_services package. where Preferred instances are where service always runs on startup; available instances are used for -d db_unique_name identifies the failover unique when name preferred for the instances database fail. -s service_name identifies the service name -r preferred_list identifies the list of preferred instances } -a available_list identifies the list of available instances -P TAF_policy identifies the TAF policy (NONE, BASIC, or PRECONNECT). The BASIC and PRECONNECT settings affect the content of the TNS string that Oracle generates automatically when the command is executed

SRVCTL Commands for Services: Add Syntax srvctl add service -d db_unique_name -s service_name This option is provided in the -r preferred_list [-a available_list] [-P TAF_policy] dbms_service package but the where Preconnect value is not; it is used here to create failover-ready connections to -d db_unique_name identifies the unique name the available for the instances. database -s service_name identifies the service name -r preferred_list identifies the list of preferred instances -a available_list identifies the list of available instances } -P TAF_policy identifies the TAF policy (NONE, BASIC, or PRECONNECT). The BASIC and PRECONNECT settings affect the content of the TNS string that Oracle generates automatically when the command is executed

Create Active/Spare Configuration RAC01 RAC02 RAC03 srvctl add service -d ACME_DB -s -r RAC01 -a RAC03 P PRECONNECT srvctl add service -d ACME_DB -s -r RAC02 -a RAC03 P PRECONNECT

Create Active/Symmetric Configuration RAC01 RAC02 RAC03 srvctl add service -d ACME_DB -s -r ("RAC01,RAC02,RAC03") srvctl add service -d ACME_DB -s -r ("RAC01,RAC02,RAC03")

Create Active/Asymmetric Configuration RAC01 RAC02 RAC03 srvctl add service -d ACME_DB -s -r RAC01 a ("RAC02,RAC03") P PRECONNECT srvctl add service -d ACME_DB -s -r ("RAC02,RAC03") a RAC01 P PRECONNECT

Now You Have Services Sessions are tracked by the services to which they connect Automatic Workload Repository (AWR) manages the performance of services and records the service performance, including SQL execution times Wait classes Resources consumed by service AWR sends alerts when service response time thresholds are exceeded Database Resource Manager can prioritize application workloads within an instance by service

Now You Have Services Sessions are tracked by the services to which they connect CONNECT APPUSR1/pass1@ CONNECT APPUSR2/pass2@

Now You Have Services Sessions are tracked by the services to which they connect Automatic Workload Repository (AWR) manages the performance of services and records the service performance, including SQL execution times Wait classes Resources consumed by service AWR sends alerts when service response time thresholds are exceeded Database Resource Manager can prioritize application workloads within an instance by service

Now You Have Services Sessions are tracked by the services to which they connect Automatic Workload Repository (AWR) manages the performance of services and records the service performance, including SQL execution times Wait classes Resources consumed by service AWR sends alerts when service response time thresholds are exceeded Database Resource Manager can prioritize application workloads within an instance by service

Services and Alerts Set thresholds on each instance supporting the service exec DBMS_SERVER_ALERT.SET_TESHOLD (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 => 'APP1', OBJECT_TYPE => dbms_server_alert.object_type_service, OBJECT_NAME => '');

Services and Alerts Can also be CPU_TIME_ PER_CALL exec DBMS_SERVER_ALERT.SET_TESHOLD (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 => 'APP1', OBJECT_TYPE => dbms_server_alert.object_type_service, OBJECT_NAME => '');

Services and Alerts Can also be CPU_TIME_ PER_CALL Warning when call time exceeds 0.5 secs (500000 msecs) exec DBMS_SERVER_ALERT.SET_TESHOLD (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 => 'APP1', OBJECT_TYPE => dbms_server_alert.object_type_service, OBJECT_NAME => '');

Services and Alerts Can also be CPU_TIME_ PER_CALL Warning when call time exceeds 0.5 secs (500000 msecs) Averaged over 15 minutes exec DBMS_SERVER_ALERT.SET_TESHOLD (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 => 'APP1', OBJECT_TYPE => dbms_server_alert.object_type_service, OBJECT_NAME => '');

Services and Alerts Can also be CPU_TIME_ PER_CALL Warning when call time exceeds 0.5 secs. (500000 msecs.) Averaged over 15 minutes Three times in a row exec DBMS_SERVER_ALERT.SET_TESHOLD (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 => 'APP1', OBJECT_TYPE => dbms_server_alert.object_type_service, OBJECT_NAME => '');

Services and Alerts Critical alert when 15 minute avg call time exceeds 0.75 secs. In three consecutive periods exec DBMS_SERVER_ALERT.SET_TESHOLD (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 => 'APP1', OBJECT_TYPE => dbms_server_alert.object_type_service, OBJECT_NAME => '');

Services and Alerts Alert messages written to log Visible through Enterprise Manager screens Use alert information to change service allocation, for example by Relocating service to faster server Adding new instances for service Removing lower priority service from server Changing priority of workload (discussed in next section)

Now You Have Services Sessions are tracked by the services to which they connect Automatic Workload Repository (AWR) manages the performance of services and records the service performance, including SQL execution times Wait classes Resources consumed by service AWR sends alerts when service response time thresholds are exceeded Database Resource Manager can prioritize application workloads within an instance by service

Services with Resource Manager execute DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP (CONSUMER_GROUP => 'HIGH_PRIORITY') exec DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING (ATTRIBUTE => DBMS_RESOURCE_MANAGER.SERVICE_NAME, VALUE => '',CONSUMER_GROUP => 'HIGH_PRIORITY') execute DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP (CONSUMER_GROUP => 'LOW_PRIORITY') exec DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING (ATTRIBUTE => DBMS_RESOURCE_MANAGER.SERVICE_NAME, VALUE => '',CONSUMER_GROUP => 'LOW_PRIORITY')

Services with Resource Manager = (DESCRIPTION = (ADDRESS=(PROTOCOL=TCP)(HOST=ACME1)(PORT=1521)) (CONNECT_DATA = (SERVICE_NAME = ))) = (DESCRIPTION = (ADDRESS=(PROTOCOL=TCP)(HOST=ACME1)(PORT=1521)) (CONNECT_DATA = (SERVICE_NAME = ))) CONNECT APPUSR1/pass1@ HIGH_PRIORITY CONNECT APPUSR2/pass2@ LOW_PRIORITY

Now You Have Services Jobs can now run under a service, as opposed to a specific instance Parallel slave processes inherit the service of their coordinator The RAC High Availability framework keeps services available within a site Dynamic performance views report current service status with one hour of history Performance-related statistics and wait events tracked by services Data Guard Broker migrates the primary service across Data Guard sites for disaster tolerance

Services with Job Scheduler DBMS_SCHEDULER.CREATE_JOB_CLASS( JOB_CLASS_NAME => 'HOT_BATCH_CLASS', SERVICE => '', RESOURCE_CONSUMER_GROUP => 'HIGH_PRIORITY', LOGGING_LEVEL => DBMS_SCHEDULER.LOGGING_RUNS, LOG_HISTORY => 30, COMMENTS => 'P1 batch'); DBMS_SCHEDULER.CREATE_JOB( JOB_NAME => 'my_report_job', JOB_CLASS => 'HOT_BATCH_CLASS', ENABLED => TRUE, 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, AUTO_DROP => false, COMMENTS => 'daily status');

Services with Job Scheduler DBMS_SCHEDULER.CREATE_JOB_CLASS( JOB_CLASS_NAME => 'HOT_BATCH_CLASS', SERVICE => '', RESOURCE_CONSUMER_GROUP => 'HIGH_PRIORITY', LOGGING_LEVEL => DBMS_SCHEDULER.LOGGING_RUNS, LOG_HISTORY => 30, COMMENTS => 'P1 batch'); DBMS_SCHEDULER.CREATE_JOB( JOB_NAME => 'my_report_job', JOB_CLASS => 'HOT_BATCH_CLASS', ENABLED => TRUE, JOB_TYPE => 'stored_procedure', JOB_ACTION => 'my_name.my_proc();', NUMBER_OF_ARGUMENTS => 4, START_DATE JOB =>SYSDATE+1, TABLE REPEAT_INTERVAL => 5, END_DATE => SYSDATE+30, AUTO_DROP => false, COMMENTS JOB => 'daily JOB CLASS status'); SERVICE Job 1 HOT_BATCH_CLASS Job 2 Job 3 HOT_BATCH_CLASS LOW_BATCH_CLASS

Services with Job Scheduler DBMS_SCHEDULER.CREATE_JOB_CLASS( JOB_CLASS_NAME => 'HOT_BATCH_CLASS', SERVICE => '', RESOURCE_CONSUMER_GROUP => 'HIGH_PRIORITY', LOGGING_LEVEL => DBMS_SCHEDULER.LOGGING_RUNS, LOG_HISTORY => 30, COMMENTS => 'P1 batch'); DBMS_SCHEDULER.CREATE_JOB( JOB_NAME => 'my_report_job', JOB_CLASS => 'HOT_BATCH_CLASS', ENABLED => TRUE, JOB_TYPE => 'stored_procedure', JOB_ACTION => 'my_name.my_proc();', NUMBER_OF_ARGUMENTS => 4, START_DATE JOB =>SYSDATE+1, TABLE REPEAT_INTERVAL => 5, END_DATE => SYSDATE+30, AUTO_DROP => false, COMMENTS JOB => 'daily JOB CLASS status'); SERVICE Job 1 HOT_BATCH_CLASS Job 2 Job 3 A job is associated with a service HOT_BATCH_CLASS LOW_BATCH_CLASS

Services with Job Scheduler DBMS_SCHEDULER.CREATE_JOB_CLASS( JOB_CLASS_NAME => 'HOT_BATCH_CLASS', SERVICE => '', RESOURCE_CONSUMER_GROUP => 'HIGH_PRIORITY', LOGGING_LEVEL => DBMS_SCHEDULER.LOGGING_RUNS, LOG_HISTORY => 30, COMMENTS => 'P1 batch'); DBMS_SCHEDULER.CREATE_JOB( JOB_NAME => 'my_report_job', job class JOB_CLASS => 'HOT_BATCH_CLASS', ENABLED => TRUE, JOB_TYPE => 'stored_procedure', JOB_ACTION => 'my_name.my_proc();', NUMBER_OF_ARGUMENTS => 4, START_DATE JOB =>SYSDATE+1, TABLE REPEAT_INTERVAL => 5, END_DATE => SYSDATE+30, AUTO_DROP => false, COMMENTS JOB => 'daily JOB CLASS status'); SERVICE Job 1 HOT_BATCH_CLASS Job 2 Job 3 A job is associated with a service through its affiliation with a HOT_BATCH_CLASS LOW_BATCH_CLASS

Services with Job Scheduler DBMS_SCHEDULER.CREATE_JOB_CLASS( JOB_CLASS_NAME => 'HOT_BATCH_CLASS', SERVICE => '', RESOURCE_CONSUMER_GROUP => 'HIGH_PRIORITY', LOGGING_LEVEL => DBMS_SCHEDULER.LOGGING_RUNS, LOG_HISTORY => 30, COMMENTS => 'P1 batch'); DBMS_SCHEDULER.CREATE_JOB( JOB_NAME => 'my_report_job', job class JOB_CLASS => 'HOT_BATCH_CLASS', ENABLED => TRUE, JOB_TYPE => 'stored_procedure', which was JOB_ACTION => 'my_name.my_proc();', NUMBER_OF_ARGUMENTS => 4, START_DATE JOB =>SYSDATE+1, TABLE defined on a REPEAT_INTERVAL => 5, END_DATE => SYSDATE+30, service AUTO_DROP => false, COMMENTS JOB => 'daily JOB CLASS status'); SERVICE Job 1 HOT_BATCH_CLASS Job 2 Job 3 A job is associated with a service through its affiliation with a HOT_BATCH_CLASS LOW_BATCH_CLASS

Now You Have Services Jobs can now run under a service, as opposed to a specific instance Parallel slave processes inherit the service of their coordinator The RAC High Availability framework keeps services available within a site Dynamic performance views report current service status with one hour of history Performance-related statistics and wait events tracked by services Data Guard Broker migrates the primary service across Data Guard sites for disaster tolerance

Services with Parallel Operations RAC01 RAC02 RAC03 RAC04 CONNECT APPUSR2/pass2@ SELECT * FROM huge_table

Services with Parallel Operations RAC01 RAC02 RAC03 RAC04 QC CONNECT APPUSR2/pass2@ SELECT * FROM huge_table Connects to preferred instance for where query coordinator will run

Services with Parallel Operations RAC01 RAC02 RAC03 RAC04 QP QP QC QP QP QP Query CONNECT coordinator APPUSR2/pass2@ can spawn query SELECT processes * FROM on huge_table any running instance whether it is preferred, available or neither for the attached service

Services with Parallel Operations RAC01 RAC02 RAC03 RAC04 QP QP QC QP QP QP CONNECT This is because APPUSR2/pass2@ the query process SELECT inherits * FROM the huge_table service of the coordinator, so the service need not be present on the target instance

Now You Have Services Jobs can now run under a service, as opposed to a specific instance Parallel slave processes inherit the service of their coordinator Performance-related statistics and wait events tracked by services Dynamic performance views report current service status with one hour of history The RAC High Availability framework keeps services available within a site Data Guard Broker migrates the primary service across Data Guard sites for disaster tolerance

Services with Tracing Trace waits Trace binds Database-wide tracing: dbms_monitor.database_trace_enable( waits binds instance_name Apply only to this RAC instance IN BOOLEAN DEFAULT TRUE, IN BOOLEAN DEFAULT FALSE, IN VARCHAR2 DEFAULT NULL) dbms_monitor.database_trace_disable( instance_name IN VARCHAR2 DEFAULT NULL)

Services with Tracing Trace waits Trace binds Database-wide tracing: DBMS_MONITOR.DATABASE_TRACE_ENABLE( waits IN BOOLEAN DEFAULT TRUE, binds IN BOOLEAN DEFAULT FALSE, instance_name IN VARCHAR2 DEFAULT NULL) DBMS_MONITOR.DATABASE_TRACE_DISABLE( instance_name Session level tracing: Apply only to this RAC instance IN VARCHAR2 DEFAULT NULL) Disable requires only session ID and serial number DBMS_MONITOR.DATABASE_TRACE_ENABLE( session_id IN BINARY_INTEGER DEFAULT NULL, serial_num IN BINARY_INTEGER DEFAULT NULL, waits IN BOOLEAN DEFAULT TRUE, binds IN BOOLEAN DEFAULT FALSE)

Services with Tracing Service level tracing: DBMS_MONITOR.SERV_MOD_ACT_TRACE_ENABLE( service_name IN VARCHAR2) Trace waits Trace binds Apply only to this RAC instance DBMS_MONITOR.SERV_MOD_ACT_TRACE_DISABLE( service_name IN VARCHAR2) Service level tracing with module & action: DBMS_MONITOR.SERV_MOD_ACT_TRACE_ENABLE( service_name IN VARCHAR2, module_name IN VARCHAR2 DEFAULT ANY_MODULE, action_name IN VARCHAR2 DEFAULT ANY_ACTION, waits IN BOOLEAN DEFAULT TRUE, binds IN BOOLEAN DEFAULT FALSE, instance_name IN VARCHAR2 DEFAULT NULL)

Services with Tracing Hierarchical statistics gathering under a service: DBMS_MONITOR.SERV_MOD_ACT_STAT_ENABLE( service_name IN VARCHAR2, module_name IN VARCHAR2, action_name IN VARCHAR2 DEFAULT ALL_ACTIONS) Useful for tuning systems using shared sessions MODULE and ACTION names are set by the application by using the DBMS_APPLICATION_INFO package or OCI calls To analyze performance from aggregated statistics, use the trcsess tool

Services with Tracing: trcsess Client Client Client Clients DW DW Dedicated Server Dedicated Server Dedicated Server Shared Server Shared Server Shared Server Trace File Trace File Trace File Trace File Trace File Trace File TRCSESS TRCSESS Trace file for Service TKPROF Report File Trace file for one client

Services with Tracing: trcsess Client Client Client Clients DW DW Dedicated Dedicated Dedicated Server Server Server Tool consolidates output from Trace multiple trace Trace files by session Trace ID, File client ID, service File name, action File name, or module name and formats it for use by TKFPROF TRCSESS Shared Server Trace File Shared Server Trace File TRCSESS Shared Server Trace File Trace file for Service TKPROF Report File Trace file for one client

Now You Have Services Jobs can now run under a service, as opposed to a specific instance Parallel slave processes inherit the service of their coordinator Performance-related statistics and wait events tracked by services Dynamic performance views report current service status with one hour of history The RAC High Availability framework keeps services available within a site Data Guard Broker migrates the primary service across Data Guard sites for disaster tolerance

Services with Performance Views Service, module, and action information in: V$SESSION V$ACTIVE_SESSION_HISTORY Call times and performance statistics listed in: V$SERVICE_STATS V$SERVICE_EVENT V$SERVICE_WAIT_CLASS V$SERVICEMETRIC V$SERVICEMETRIC_HISTORY V$SERV_MOD_ACT_STATS shows performance measures for each instance when statistics are collected by module and action

Services with Performance Views V$SYSSTAT Of its 300 performance-related statistics 28 are tracked for services To see the statistics measured for services, run SELECT DISTINCT stat_name FROM v$service_stats DBA_ENABLED_AGGREGATIONS displays information about enabled on-demand statistic aggregation DBA_ENABLED_TRACES displays information about enabled traces

Now You Have Services Jobs can now run under a service, as opposed to a specific instance Parallel slave processes inherit the service of their coordinator Performance-related statistics and wait events tracked by services Dynamic performance views report current service status with one hour of history The RAC High Availability framework keeps services available within a site Data Guard Broker migrates the primary service across Data Guard sites for disaster tolerance

Q U E S T I O N S A N S W E R S