SlideShare a Scribd company logo
1 of 71
1© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Extending the Admin UI: Proactively Preventing Poor
BPRA Load/Refresh Performance via Custom Utilities
Eric Boyce - DBA
Bryan Mack – BI Development Team Lead
April 14, 2015
Session 11951
2© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Session Rules of Etiquette
• Please silence your cell phone/pager/purse dog
• If you must leave the session early, please do so as discreetly as possible
• Please avoid side conversation during the session
• Please hold questions for the end of the presentation
Thank you for your cooperation!
3© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Session rules of etiquette
Bryan L. Mack
bryan.mack@cccs.edu
Higher-Ed Employment History
• Colorado School of Mines, Asst. Director of Advancement Services
2002-2012
• Colorado Community College System, Team Lead/Data Warehouse Developer,
2012-2015
4© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Session rules of etiquette
Eric Boyce
eric.boyce@cccs.edu
Higher-Ed Employment History
• University of Northern Colorado, BPRA Database Administrator
2009-2012
• Colorado Community College System, BI Sr. Oracle Database Administrator,
2012-2015
5© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Purpose
• To create an understanding of how simple it can be to add desired
functionality to the BPRA Administration Interface. Further, we’ll step
through two scenarios whereby the Colorado Community College System
benefited from augmenting the BPRA Administration Interface’s
functionality.
6© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
1 Problem I – Inconsistent ODS Refresh Times
2 Potential Fixes – Baselines, Profiles, Statistics
3 Implementing a Solution – Stats Gathering
4 Problem II – BPRA Batch Window Utilization
5 Implementing a Solution – Chain Builder
Agenda
7© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Problem I – Inconsistent ODS Refresh Times
8© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Inconsistent ODS Refresh Times
• Greeted with this in the Morning:
9© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Why the Poor Performance
Root Cause: Stale Statistics
● Over 4,300 daily batch jobs in CCCS’s Banner environment (AppWorx)
● Due to process ordering and contingencies batch execution times are
dynamic
● Changing Maintenance Window for statistical collection ineffective
10© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Bad Stats Example
NUM_ROWS – Updated by stats collection
11© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Potential Fixes – Baselines, Profiles,
Statistics
12© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Baselines, Profiles, Statistics
● There is nothing wrong with using baselines, profiles, or dynamic
sampling to achieve performance improvements
● We wanted a tool that was simple, yet effective, in improving/maintaining
ODS performance
● We needed something that could handle Ellucian upgrades without
adversely affecting performance
i.e. Not reliant upon sql_id values
● We know the problem is poor statistics. No need to put cart in front of the
horse by creating baselines or profiles
13© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
When Should Statistics Be Collected?
According to Oracle
Source: http://docs.oracle.com/cd/E25054_01/server.1111/e16638/stats.htm#i41884
14© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Requirements
● Collect statistics on change tables, composite tables, and indexes just
prior to the execution of a mapping
● Must be simple interface to understand and utilize… otherwise nobody
will use it
● Must have ability to ascertain mappings’ objects dependencies
● Should have the ability to handle various DBMS_STATS parameters
15© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Implementing a Solution – Stats
Gathering
16© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Identification
Identify exact locations where mappings are executed:
17© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Digging Deeper
● Matching String Literals from Control Report to MGKMAP Body
18© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Verification
Query against all_source
19© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Before we go further…
Ellucian’s stance on the modification of baseline code:
-Any customizations to baseline code are NOT supported-
20© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Customizing Baseline Code
IMPORTANT: Assure that the baseline scripts are saved off and
available. If an error is encountered you can always revert to the
functional baseline version.
21© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Testing New MGKMAP
● It worked! We now know where the stats collection should take
place
● We also have the mapping object name
22© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Creating a Package to Gather Statistics
PACKAGE:
IA_ADMIN.CCCS_GATHER_ODS_STATS
PROCEDURES:
p_gather_mapping_stats (mapping_name, estimate %)
p_gather_composite_tab_stats(mapping_name, estimate %)
p_gather_srce_and_change_stats(composite_view, estimate %)
FUNCTIONS:
f_get_stats_check (mapping_name)
23© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Creating a Package to Gather Statistics
p_gather_mapping_stats
1ST – Gather Composite Table Stats
- Determines Composite Table using DBA_DEPENDENCIES
24© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Creating a Package to Gather Statistics
p_gather_mapping_stats
2nd – Evaluate Mapping Type
- If it is a DELETE mapping, gather statistics on change table
- Determines Change Table using DBA_DEPENDENCIES
25© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Creating a Package to Gather Statistics
p_gather_mapping_stats
3rd – If mapping is not a DELETE, then it must be an UPDATE or LOAD
mapping.
- Determines Composite View and dependent tables
26© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Creating a Package to Gather Statistics
p_gather_mapping_stats
3rd (cont.)– If composite view found, call p_gather_srce_and_change_stats
- Loops through source tables and collects stats
27© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Creating a Package to Gather Statistics
f_get_stats_check
● Called from MGKMAP prior to any collection of stats
● Function checks to see if statistics should be collected for a
particular mapping
● Allows for control as to which mappings collect statistics
● Uses a custom MTVPARM record
28© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Remember when…
● We want to collect stats on this mapping prior to execution to prevent this
from happening in the future
29© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Create MTVPARM Parameter
● Beneficial to store the parameter values in MTVPARM as they’re easily
accessible via the Admin UI
30© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Once again…
● Once again, we have bad statistics.
31© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Control Report – With Stats Collection
32© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Control Report – No Stats Collection
● If there is no MTVPARM record for a mapping, the f_get_stats_check will
evaluate to FALSE and statistical collection is simply ignored.
33© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Control Report – Stats Collection on UPDATE
34© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Problem II - BPRA Batch Window
Utilization
35© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Batch Window
● CCCS’s BPRA environment has a batch window from 00:00 – 07:30.
● ODS refreshes are executed concurrently as REFRESH_ALL takes too
long.
● Implementing EDW and SRP caused overruns
(52 Hours initially, cut down to 3 hours after in-house tuning)
● Varied ODS refresh times made it difficult to predict when to schedule
the EDW Operational Refresh Job
36© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Need for Contingency
● SRP reliant upon ODS Student, ODS Finaid, and ODS General
refresh completion
● Wanted a way to maximize our batch window by not allowing time
between jobs.
● Also wanted the ability to run concurrent jobs
37© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Oracle Chains
“A chain is a named series of tasks that are linked together for a
combined objective. Chains are the means by which you can implement
dependency based scheduling, in which jobs are started depending on
the outcomes of one or more previous jobs.”
Source: http://docs.oracle.com/cd/B28359_01/server.111/b28310/scheduse009.htm#ADMIN10021
38© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Oracle Chains
Chains can be thought of as a series of steps with defined rules as to when a
step should be performed. A step is associated with a task or action.
Step Action When to start
-------------------------------------------------------------------------------------------------------
Step 1 - Choose Bread TRUE (Immediately)
Step 2 - Add Condiments Step 1 Completed
Step 3 - Add Meat/Veggies Step 2 Completed
Step 4 - Assemble Step 3 Completed
Step 5 - Eat Sandwich Step 4 Completed
Step 6 - Go to Sleep (End) Step 5 Completed
39© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
In our Case
Step Action - Program When to start - Rule
-------------------------------------------------------------------------------------------------------
Step 1 - Refresh Student TRUE (Immediately)
Step 2 - Refresh Finaid TRUE (Immediately)
Step 3 - Refresh General TRUE (Immediately)
Step 4 - Refresh Custom MViews Step 1 Completed
Step 5 - Refresh EDW Operational Steps 1, 2, 3, 4 Succeeded
40© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Defining Actions via Programs
● Oracle Scheduler Program Objects define an action for a Chain step
● Can be used to abstract a PL/SQL Block, Stored Procedure, or an
executable
41© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Building Programs
● So couldn’t we just put these Refreshes into Programs using PL/SQL blocks?
DECLARE
JOB_NUM NUMBER;
BEGIN
SELECT sys.jobseq.nextval INTO JOB_NUM from dual;
mgkmap.P_RunETLMapSlots(9,JOB_NUM,'REFRESH_FINAID',NULL, '');
END;
42© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Creation of a Program
● Could be done in Enterprise Manager but can be tedious when doing a
large quantity.
43© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Implementing a Solution – Chain
Builder
•
44© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Sample Admin UI Job Script
● Ellucian delivers a sample Admin UI job script in the ODS installation
code tree:
odsodsdevlodsia_admindbscriptsutility_scriptssample_job.sql
● Serves as a good reference for the necessary pieces when creating a
custom job.
45© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
INSTALLED PROCESS Parameter
● Creation of an INSTALLED PROCESS Parameter creates a link in the
Admin UI’s ‘Schedule a Process’ Menu
46© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
JOB Parameter
● Creation of a JOB Parameter links the Installed Process to a Packaged
Procedure
47© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Basic Packaged Procedure Header
● Main procedure of sample job noted earlier
● Main procedure of CCCS_CHAIN_ADMIN
48© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Questions…Questions…Questions…
● Before we go any further we have to ask ourselves:
1. How many steps should the chain builder handle?
2. How many rules will we need?
3. How are the rules created?
4. How can we monitor progress as chain is executed?
5. How do we avoid having objects of the same name?
49© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
First Question
1. How many steps should the chain builder handle?
A: CCCS chose to start with 7. This was the fewest number of steps we
would need to create a chain that could handle our EDW/SRP
requirements.
Note: It was decided that although CCCS would start with 7 steps, the utility
needed to be flexible enough to easily handle more steps in the future.
50© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Second Question
2. How many rules will we need?
A: We need the number of steps decided upon +1
- This is because there is a final rule that states when all steps are finished,
the chain is has completed–
- Additionally, the final rule need not be a parameter for a user to control as
this could cause the chain to stall.
51© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Creating Parameters
52© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Rules and Steps
7 Rules and 7 Steps
53© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Additional Parameter
● We also wanted to allow the user to specify their own Chain
Name
54© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
So How’s it Look
55© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Parameter Handling
● We use tables to store the values we’d like to display for parameter
values. The ‘SELECT’ parameter type simply displays the results of
a query.
56© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Parameter Handling (cont.)
Example.
57© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Translation Table
● We use the ia_admin.cccs_chain_prog_xwalk table to map Display
names to actual object names. Further, the SEQUENCE_NUMBER gives
us a means of easily controlling, which processes are displayed in Admin
UI.
58© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Rules Table
Rules possibilities are also stored in
a table.
59© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Admin UI Submission
60© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
How Parameters are Passed
● The job generated contains all of the parameters inputted, in a pipe
delimited format.
● Knowing all the parameters, we can now build a chain
61© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Parsing Parameters
● All parameters come into the parms
input parameter
● Use mgkutil.F_GetParameterValue to
determine what the inputted values are
62© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Building Chain
● After validation that the job has basic parameters in place, we verify that
no other chains of the same name exist. If they do, they are removed
and an entry noting this is made in the control report. Following this step,
an empty chain is created
63© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Building Chain Steps
● Once the chain is built, we
add the steps for it
● Display names for programs
are parsed to their actual
object names
● Using a counter variable we
loop through all the
programs creating chain
steps along the way.
64© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Building Chain Rules
● Chain Rules are built in a similar manner as the Chain Steps with
a loop and a counter variable.
● There is one final rule that is built. It is the summation of all steps
and informs Oracle that the chain is complete.
65© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Creating Scheduler Job
● We’ve now created a chain, added steps to it, and added rules to it.
● The only thing left to do now is to submit it.
66© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Checking Mechanism
● As we wanted to know the status of the scheduler job, we created a self
checking mechanism
● Every five minutes the chain run is evaluated and it’s status is reported in
the control report
67© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Final Control Report
68© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Adding More Steps in the Future
● To add additional steps, all one needs to do is create additional
PROGRAM and RULE parameters following the naming
convention laid forth
● Additionally, rules must be added to cccs_rule_possibilities or
whatever table is chosen to store the RULE literals
69© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Summary
With an understanding of how the Admin UI works, a developer can
easily create utilities/functionality to augment what is already a great
product delivered by Ellucian
70© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Questions & Answers
71© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID
Thank you!
Eric Boyce - DBA
Bryan Mack – BI Development Team Lead
Please complete the online session evaluation form.
Session 11951

More Related Content

Similar to Extending the Admin UI: Proactively Preventing Poor BPRA Load/Refresh Performance via Custom Utilities

De-Mystifying Capacity Management in the Digital World
De-Mystifying Capacity Management in the Digital WorldDe-Mystifying Capacity Management in the Digital World
De-Mystifying Capacity Management in the Digital WorldPrecisely
 
Agile Chennai 2023 | Unleashing Agility: Triumphs Over Challenges in Legacy M...
Agile Chennai 2023 | Unleashing Agility: Triumphs Over Challenges in Legacy M...Agile Chennai 2023 | Unleashing Agility: Triumphs Over Challenges in Legacy M...
Agile Chennai 2023 | Unleashing Agility: Triumphs Over Challenges in Legacy M...AgileNetwork
 
Case Study: U.S. Cellular Shares Its Playbook for Efficient IT Monitoring
Case Study: U.S. Cellular Shares Its Playbook for Efficient IT MonitoringCase Study: U.S. Cellular Shares Its Playbook for Efficient IT Monitoring
Case Study: U.S. Cellular Shares Its Playbook for Efficient IT MonitoringCA Technologies
 
Implement an Enterprise Performance Test Process
Implement an Enterprise Performance Test ProcessImplement an Enterprise Performance Test Process
Implement an Enterprise Performance Test ProcessTechWell
 
Django as a Data Tool in the Enterprise - PyData New York 2015
Django as a Data Tool in the Enterprise - PyData New York 2015Django as a Data Tool in the Enterprise - PyData New York 2015
Django as a Data Tool in the Enterprise - PyData New York 2015trentoliphant
 
Velocity pythian operational visibility
Velocity pythian operational visibilityVelocity pythian operational visibility
Velocity pythian operational visibilityLaine Campbell
 
Run IT as Business Meetup self-service BI
Run IT as Business Meetup self-service BIRun IT as Business Meetup self-service BI
Run IT as Business Meetup self-service BIMark Wu
 
From Spreadsheet Hell to Streamlined Automation with QuickBase
From Spreadsheet Hell to Streamlined Automation with QuickBaseFrom Spreadsheet Hell to Streamlined Automation with QuickBase
From Spreadsheet Hell to Streamlined Automation with QuickBaseQuickBase, Inc.
 
Pre-Con Education: Building Basic ITSM Workflows in CA Service Management
Pre-Con Education: Building Basic ITSM Workflows in CA Service ManagementPre-Con Education: Building Basic ITSM Workflows in CA Service Management
Pre-Con Education: Building Basic ITSM Workflows in CA Service ManagementCA Technologies
 
MuleSoft Manchester Meetup #2 slides 29th October 2019
MuleSoft Manchester Meetup #2 slides 29th October 2019MuleSoft Manchester Meetup #2 slides 29th October 2019
MuleSoft Manchester Meetup #2 slides 29th October 2019Ieva Navickaite
 
Pythian operational visibility
Pythian operational visibilityPythian operational visibility
Pythian operational visibilityLaine Campbell
 
Database Security, Better Audits, Lower Costs
Database Security, Better Audits, Lower CostsDatabase Security, Better Audits, Lower Costs
Database Security, Better Audits, Lower CostsImperva
 
DataStax: Setting Your Database Management on Autopilot with OpsCenter
DataStax: Setting Your Database Management on Autopilot with OpsCenterDataStax: Setting Your Database Management on Autopilot with OpsCenter
DataStax: Setting Your Database Management on Autopilot with OpsCenterDataStax Academy
 

Similar to Extending the Admin UI: Proactively Preventing Poor BPRA Load/Refresh Performance via Custom Utilities (20)

12266
1226612266
12266
 
12119
1211912119
12119
 
12929 final slides
12929 final slides12929 final slides
12929 final slides
 
12139
1213912139
12139
 
De-Mystifying Capacity Management in the Digital World
De-Mystifying Capacity Management in the Digital WorldDe-Mystifying Capacity Management in the Digital World
De-Mystifying Capacity Management in the Digital World
 
Agile Chennai 2023 | Unleashing Agility: Triumphs Over Challenges in Legacy M...
Agile Chennai 2023 | Unleashing Agility: Triumphs Over Challenges in Legacy M...Agile Chennai 2023 | Unleashing Agility: Triumphs Over Challenges in Legacy M...
Agile Chennai 2023 | Unleashing Agility: Triumphs Over Challenges in Legacy M...
 
Case Study: U.S. Cellular Shares Its Playbook for Efficient IT Monitoring
Case Study: U.S. Cellular Shares Its Playbook for Efficient IT MonitoringCase Study: U.S. Cellular Shares Its Playbook for Efficient IT Monitoring
Case Study: U.S. Cellular Shares Its Playbook for Efficient IT Monitoring
 
Implement an Enterprise Performance Test Process
Implement an Enterprise Performance Test ProcessImplement an Enterprise Performance Test Process
Implement an Enterprise Performance Test Process
 
Django as a Data Tool in the Enterprise - PyData New York 2015
Django as a Data Tool in the Enterprise - PyData New York 2015Django as a Data Tool in the Enterprise - PyData New York 2015
Django as a Data Tool in the Enterprise - PyData New York 2015
 
Velocity pythian operational visibility
Velocity pythian operational visibilityVelocity pythian operational visibility
Velocity pythian operational visibility
 
Run IT as Business Meetup self-service BI
Run IT as Business Meetup self-service BIRun IT as Business Meetup self-service BI
Run IT as Business Meetup self-service BI
 
12296
1229612296
12296
 
From Spreadsheet Hell to Streamlined Automation with QuickBase
From Spreadsheet Hell to Streamlined Automation with QuickBaseFrom Spreadsheet Hell to Streamlined Automation with QuickBase
From Spreadsheet Hell to Streamlined Automation with QuickBase
 
Pre-Con Education: Building Basic ITSM Workflows in CA Service Management
Pre-Con Education: Building Basic ITSM Workflows in CA Service ManagementPre-Con Education: Building Basic ITSM Workflows in CA Service Management
Pre-Con Education: Building Basic ITSM Workflows in CA Service Management
 
12298
1229812298
12298
 
MuleSoft Manchester Meetup #2 slides 29th October 2019
MuleSoft Manchester Meetup #2 slides 29th October 2019MuleSoft Manchester Meetup #2 slides 29th October 2019
MuleSoft Manchester Meetup #2 slides 29th October 2019
 
Pythian operational visibility
Pythian operational visibilityPythian operational visibility
Pythian operational visibility
 
Database Security, Better Audits, Lower Costs
Database Security, Better Audits, Lower CostsDatabase Security, Better Audits, Lower Costs
Database Security, Better Audits, Lower Costs
 
Mayor Farm Manager
Mayor Farm ManagerMayor Farm Manager
Mayor Farm Manager
 
DataStax: Setting Your Database Management on Autopilot with OpsCenter
DataStax: Setting Your Database Management on Autopilot with OpsCenterDataStax: Setting Your Database Management on Autopilot with OpsCenter
DataStax: Setting Your Database Management on Autopilot with OpsCenter
 

More from Bryan L. Mack

Custom Star Creation for Ellucain's Enterprise Data Warehouse
Custom Star Creation for Ellucain's Enterprise Data WarehouseCustom Star Creation for Ellucain's Enterprise Data Warehouse
Custom Star Creation for Ellucain's Enterprise Data WarehouseBryan L. Mack
 
Cognos Macros: Situational Examples & Syntax
Cognos Macros: Situational Examples & SyntaxCognos Macros: Situational Examples & Syntax
Cognos Macros: Situational Examples & SyntaxBryan L. Mack
 
Oracle's Listagg Function - Uses and Duplicate Removal
Oracle's Listagg Function - Uses and Duplicate RemovalOracle's Listagg Function - Uses and Duplicate Removal
Oracle's Listagg Function - Uses and Duplicate RemovalBryan L. Mack
 
EDW PK Violation Troubleshooting Made Easy
EDW PK Violation Troubleshooting Made EasyEDW PK Violation Troubleshooting Made Easy
EDW PK Violation Troubleshooting Made EasyBryan L. Mack
 
SRP Implementation Success in a Complex Environment
SRP Implementation Success in a Complex EnvironmentSRP Implementation Success in a Complex Environment
SRP Implementation Success in a Complex EnvironmentBryan L. Mack
 
Oracle's ListAgg Function & Pertinent Use
Oracle's ListAgg Function & Pertinent UseOracle's ListAgg Function & Pertinent Use
Oracle's ListAgg Function & Pertinent UseBryan L. Mack
 
ODS Data Sleuth: Tracking Down Calculated Fields in Banner
ODS Data Sleuth: Tracking Down Calculated Fields in BannerODS Data Sleuth: Tracking Down Calculated Fields in Banner
ODS Data Sleuth: Tracking Down Calculated Fields in BannerBryan L. Mack
 

More from Bryan L. Mack (8)

Custom Star Creation for Ellucain's Enterprise Data Warehouse
Custom Star Creation for Ellucain's Enterprise Data WarehouseCustom Star Creation for Ellucain's Enterprise Data Warehouse
Custom Star Creation for Ellucain's Enterprise Data Warehouse
 
Cognos Macros: Situational Examples & Syntax
Cognos Macros: Situational Examples & SyntaxCognos Macros: Situational Examples & Syntax
Cognos Macros: Situational Examples & Syntax
 
Oracle's Listagg Function - Uses and Duplicate Removal
Oracle's Listagg Function - Uses and Duplicate RemovalOracle's Listagg Function - Uses and Duplicate Removal
Oracle's Listagg Function - Uses and Duplicate Removal
 
EDW PK Violation Troubleshooting Made Easy
EDW PK Violation Troubleshooting Made EasyEDW PK Violation Troubleshooting Made Easy
EDW PK Violation Troubleshooting Made Easy
 
SRP Implementation Success in a Complex Environment
SRP Implementation Success in a Complex EnvironmentSRP Implementation Success in a Complex Environment
SRP Implementation Success in a Complex Environment
 
Cognos Macros
Cognos MacrosCognos Macros
Cognos Macros
 
Oracle's ListAgg Function & Pertinent Use
Oracle's ListAgg Function & Pertinent UseOracle's ListAgg Function & Pertinent Use
Oracle's ListAgg Function & Pertinent Use
 
ODS Data Sleuth: Tracking Down Calculated Fields in Banner
ODS Data Sleuth: Tracking Down Calculated Fields in BannerODS Data Sleuth: Tracking Down Calculated Fields in Banner
ODS Data Sleuth: Tracking Down Calculated Fields in Banner
 

Recently uploaded

%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburgmasabamasaba
 
WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareJim McKeeth
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Bert Jan Schrijver
 
tonesoftg
tonesoftgtonesoftg
tonesoftglanshi9
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxAnnaArtyushina1
 
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...masabamasaba
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...masabamasaba
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in sowetomasabamasaba
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park masabamasaba
 

Recently uploaded (20)

%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
 
WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - Keynote
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 

Extending the Admin UI: Proactively Preventing Poor BPRA Load/Refresh Performance via Custom Utilities

  • 1. 1© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Extending the Admin UI: Proactively Preventing Poor BPRA Load/Refresh Performance via Custom Utilities Eric Boyce - DBA Bryan Mack – BI Development Team Lead April 14, 2015 Session 11951
  • 2. 2© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Session Rules of Etiquette • Please silence your cell phone/pager/purse dog • If you must leave the session early, please do so as discreetly as possible • Please avoid side conversation during the session • Please hold questions for the end of the presentation Thank you for your cooperation!
  • 3. 3© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Session rules of etiquette Bryan L. Mack bryan.mack@cccs.edu Higher-Ed Employment History • Colorado School of Mines, Asst. Director of Advancement Services 2002-2012 • Colorado Community College System, Team Lead/Data Warehouse Developer, 2012-2015
  • 4. 4© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Session rules of etiquette Eric Boyce eric.boyce@cccs.edu Higher-Ed Employment History • University of Northern Colorado, BPRA Database Administrator 2009-2012 • Colorado Community College System, BI Sr. Oracle Database Administrator, 2012-2015
  • 5. 5© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Purpose • To create an understanding of how simple it can be to add desired functionality to the BPRA Administration Interface. Further, we’ll step through two scenarios whereby the Colorado Community College System benefited from augmenting the BPRA Administration Interface’s functionality.
  • 6. 6© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID 1 Problem I – Inconsistent ODS Refresh Times 2 Potential Fixes – Baselines, Profiles, Statistics 3 Implementing a Solution – Stats Gathering 4 Problem II – BPRA Batch Window Utilization 5 Implementing a Solution – Chain Builder Agenda
  • 7. 7© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Problem I – Inconsistent ODS Refresh Times
  • 8. 8© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Inconsistent ODS Refresh Times • Greeted with this in the Morning:
  • 9. 9© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Why the Poor Performance Root Cause: Stale Statistics ● Over 4,300 daily batch jobs in CCCS’s Banner environment (AppWorx) ● Due to process ordering and contingencies batch execution times are dynamic ● Changing Maintenance Window for statistical collection ineffective
  • 10. 10© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Bad Stats Example NUM_ROWS – Updated by stats collection
  • 11. 11© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Potential Fixes – Baselines, Profiles, Statistics
  • 12. 12© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Baselines, Profiles, Statistics ● There is nothing wrong with using baselines, profiles, or dynamic sampling to achieve performance improvements ● We wanted a tool that was simple, yet effective, in improving/maintaining ODS performance ● We needed something that could handle Ellucian upgrades without adversely affecting performance i.e. Not reliant upon sql_id values ● We know the problem is poor statistics. No need to put cart in front of the horse by creating baselines or profiles
  • 13. 13© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID When Should Statistics Be Collected? According to Oracle Source: http://docs.oracle.com/cd/E25054_01/server.1111/e16638/stats.htm#i41884
  • 14. 14© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Requirements ● Collect statistics on change tables, composite tables, and indexes just prior to the execution of a mapping ● Must be simple interface to understand and utilize… otherwise nobody will use it ● Must have ability to ascertain mappings’ objects dependencies ● Should have the ability to handle various DBMS_STATS parameters
  • 15. 15© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Implementing a Solution – Stats Gathering
  • 16. 16© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Identification Identify exact locations where mappings are executed:
  • 17. 17© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Digging Deeper ● Matching String Literals from Control Report to MGKMAP Body
  • 18. 18© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Verification Query against all_source
  • 19. 19© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Before we go further… Ellucian’s stance on the modification of baseline code: -Any customizations to baseline code are NOT supported-
  • 20. 20© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Customizing Baseline Code IMPORTANT: Assure that the baseline scripts are saved off and available. If an error is encountered you can always revert to the functional baseline version.
  • 21. 21© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Testing New MGKMAP ● It worked! We now know where the stats collection should take place ● We also have the mapping object name
  • 22. 22© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Creating a Package to Gather Statistics PACKAGE: IA_ADMIN.CCCS_GATHER_ODS_STATS PROCEDURES: p_gather_mapping_stats (mapping_name, estimate %) p_gather_composite_tab_stats(mapping_name, estimate %) p_gather_srce_and_change_stats(composite_view, estimate %) FUNCTIONS: f_get_stats_check (mapping_name)
  • 23. 23© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Creating a Package to Gather Statistics p_gather_mapping_stats 1ST – Gather Composite Table Stats - Determines Composite Table using DBA_DEPENDENCIES
  • 24. 24© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Creating a Package to Gather Statistics p_gather_mapping_stats 2nd – Evaluate Mapping Type - If it is a DELETE mapping, gather statistics on change table - Determines Change Table using DBA_DEPENDENCIES
  • 25. 25© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Creating a Package to Gather Statistics p_gather_mapping_stats 3rd – If mapping is not a DELETE, then it must be an UPDATE or LOAD mapping. - Determines Composite View and dependent tables
  • 26. 26© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Creating a Package to Gather Statistics p_gather_mapping_stats 3rd (cont.)– If composite view found, call p_gather_srce_and_change_stats - Loops through source tables and collects stats
  • 27. 27© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Creating a Package to Gather Statistics f_get_stats_check ● Called from MGKMAP prior to any collection of stats ● Function checks to see if statistics should be collected for a particular mapping ● Allows for control as to which mappings collect statistics ● Uses a custom MTVPARM record
  • 28. 28© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Remember when… ● We want to collect stats on this mapping prior to execution to prevent this from happening in the future
  • 29. 29© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Create MTVPARM Parameter ● Beneficial to store the parameter values in MTVPARM as they’re easily accessible via the Admin UI
  • 30. 30© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Once again… ● Once again, we have bad statistics.
  • 31. 31© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Control Report – With Stats Collection
  • 32. 32© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Control Report – No Stats Collection ● If there is no MTVPARM record for a mapping, the f_get_stats_check will evaluate to FALSE and statistical collection is simply ignored.
  • 33. 33© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Control Report – Stats Collection on UPDATE
  • 34. 34© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Problem II - BPRA Batch Window Utilization
  • 35. 35© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Batch Window ● CCCS’s BPRA environment has a batch window from 00:00 – 07:30. ● ODS refreshes are executed concurrently as REFRESH_ALL takes too long. ● Implementing EDW and SRP caused overruns (52 Hours initially, cut down to 3 hours after in-house tuning) ● Varied ODS refresh times made it difficult to predict when to schedule the EDW Operational Refresh Job
  • 36. 36© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Need for Contingency ● SRP reliant upon ODS Student, ODS Finaid, and ODS General refresh completion ● Wanted a way to maximize our batch window by not allowing time between jobs. ● Also wanted the ability to run concurrent jobs
  • 37. 37© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Oracle Chains “A chain is a named series of tasks that are linked together for a combined objective. Chains are the means by which you can implement dependency based scheduling, in which jobs are started depending on the outcomes of one or more previous jobs.” Source: http://docs.oracle.com/cd/B28359_01/server.111/b28310/scheduse009.htm#ADMIN10021
  • 38. 38© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Oracle Chains Chains can be thought of as a series of steps with defined rules as to when a step should be performed. A step is associated with a task or action. Step Action When to start ------------------------------------------------------------------------------------------------------- Step 1 - Choose Bread TRUE (Immediately) Step 2 - Add Condiments Step 1 Completed Step 3 - Add Meat/Veggies Step 2 Completed Step 4 - Assemble Step 3 Completed Step 5 - Eat Sandwich Step 4 Completed Step 6 - Go to Sleep (End) Step 5 Completed
  • 39. 39© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID In our Case Step Action - Program When to start - Rule ------------------------------------------------------------------------------------------------------- Step 1 - Refresh Student TRUE (Immediately) Step 2 - Refresh Finaid TRUE (Immediately) Step 3 - Refresh General TRUE (Immediately) Step 4 - Refresh Custom MViews Step 1 Completed Step 5 - Refresh EDW Operational Steps 1, 2, 3, 4 Succeeded
  • 40. 40© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Defining Actions via Programs ● Oracle Scheduler Program Objects define an action for a Chain step ● Can be used to abstract a PL/SQL Block, Stored Procedure, or an executable
  • 41. 41© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Building Programs ● So couldn’t we just put these Refreshes into Programs using PL/SQL blocks? DECLARE JOB_NUM NUMBER; BEGIN SELECT sys.jobseq.nextval INTO JOB_NUM from dual; mgkmap.P_RunETLMapSlots(9,JOB_NUM,'REFRESH_FINAID',NULL, ''); END;
  • 42. 42© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Creation of a Program ● Could be done in Enterprise Manager but can be tedious when doing a large quantity.
  • 43. 43© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Implementing a Solution – Chain Builder •
  • 44. 44© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Sample Admin UI Job Script ● Ellucian delivers a sample Admin UI job script in the ODS installation code tree: odsodsdevlodsia_admindbscriptsutility_scriptssample_job.sql ● Serves as a good reference for the necessary pieces when creating a custom job.
  • 45. 45© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID INSTALLED PROCESS Parameter ● Creation of an INSTALLED PROCESS Parameter creates a link in the Admin UI’s ‘Schedule a Process’ Menu
  • 46. 46© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID JOB Parameter ● Creation of a JOB Parameter links the Installed Process to a Packaged Procedure
  • 47. 47© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Basic Packaged Procedure Header ● Main procedure of sample job noted earlier ● Main procedure of CCCS_CHAIN_ADMIN
  • 48. 48© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Questions…Questions…Questions… ● Before we go any further we have to ask ourselves: 1. How many steps should the chain builder handle? 2. How many rules will we need? 3. How are the rules created? 4. How can we monitor progress as chain is executed? 5. How do we avoid having objects of the same name?
  • 49. 49© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID First Question 1. How many steps should the chain builder handle? A: CCCS chose to start with 7. This was the fewest number of steps we would need to create a chain that could handle our EDW/SRP requirements. Note: It was decided that although CCCS would start with 7 steps, the utility needed to be flexible enough to easily handle more steps in the future.
  • 50. 50© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Second Question 2. How many rules will we need? A: We need the number of steps decided upon +1 - This is because there is a final rule that states when all steps are finished, the chain is has completed– - Additionally, the final rule need not be a parameter for a user to control as this could cause the chain to stall.
  • 51. 51© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Creating Parameters
  • 52. 52© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Rules and Steps 7 Rules and 7 Steps
  • 53. 53© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Additional Parameter ● We also wanted to allow the user to specify their own Chain Name
  • 54. 54© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID So How’s it Look
  • 55. 55© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Parameter Handling ● We use tables to store the values we’d like to display for parameter values. The ‘SELECT’ parameter type simply displays the results of a query.
  • 56. 56© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Parameter Handling (cont.) Example.
  • 57. 57© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Translation Table ● We use the ia_admin.cccs_chain_prog_xwalk table to map Display names to actual object names. Further, the SEQUENCE_NUMBER gives us a means of easily controlling, which processes are displayed in Admin UI.
  • 58. 58© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Rules Table Rules possibilities are also stored in a table.
  • 59. 59© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Admin UI Submission
  • 60. 60© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID How Parameters are Passed ● The job generated contains all of the parameters inputted, in a pipe delimited format. ● Knowing all the parameters, we can now build a chain
  • 61. 61© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Parsing Parameters ● All parameters come into the parms input parameter ● Use mgkutil.F_GetParameterValue to determine what the inputted values are
  • 62. 62© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Building Chain ● After validation that the job has basic parameters in place, we verify that no other chains of the same name exist. If they do, they are removed and an entry noting this is made in the control report. Following this step, an empty chain is created
  • 63. 63© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Building Chain Steps ● Once the chain is built, we add the steps for it ● Display names for programs are parsed to their actual object names ● Using a counter variable we loop through all the programs creating chain steps along the way.
  • 64. 64© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Building Chain Rules ● Chain Rules are built in a similar manner as the Chain Steps with a loop and a counter variable. ● There is one final rule that is built. It is the summation of all steps and informs Oracle that the chain is complete.
  • 65. 65© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Creating Scheduler Job ● We’ve now created a chain, added steps to it, and added rules to it. ● The only thing left to do now is to submit it.
  • 66. 66© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Checking Mechanism ● As we wanted to know the status of the scheduler job, we created a self checking mechanism ● Every five minutes the chain run is evaluated and it’s status is reported in the control report
  • 67. 67© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Final Control Report
  • 68. 68© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Adding More Steps in the Future ● To add additional steps, all one needs to do is create additional PROGRAM and RULE parameters following the naming convention laid forth ● Additionally, rules must be added to cccs_rule_possibilities or whatever table is chosen to store the RULE literals
  • 69. 69© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Summary With an understanding of how the Admin UI works, a developer can easily create utilities/functionality to augment what is already a great product delivered by Ellucian
  • 70. 70© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Questions & Answers
  • 71. 71© 2015 ELLUCIAN. CONFIDENTIAL & PROPRIETARY | Session ID Thank you! Eric Boyce - DBA Bryan Mack – BI Development Team Lead Please complete the online session evaluation form. Session 11951