The final part of the SQL Tuning workshop focuses on applying the techniques discussed in the previous sections to help diagnose and correct a number of problematic SQL statements and shows how you can use SQL Plan Management or a SQL Patch to influence an execution plan.
Part 3 of the SQL Tuning workshop examines the different aspects of an execution plan, from cardinality estimates to parallel execution and explains what information you should be gleaming from the plan and how it affects the execution. It offers insight into what caused the Optimizer to make the decision it did as well as a set of corrective measures that can be used to improve each aspect of the plan.
Part1 of SQL Tuning Workshop - Understanding the OptimizerMaria Colgan
Part 1 of a 5 part SQL Tuning workshop, This presentation covers the history of the Oracle Optimizer and explains the first thing the Optimizer does when it receives a SQL statements, which is to transform the SQL statement in order to open up additional access paths.
The presentation helps to introduce the key aspects of the Oracle Optimizer and how you find out what it's up to and how you can influence its decisions.
Harnessing the Power of Optimizer HintsMaria Colgan
The goal of the Oracle Optimizer is to examine all possible execution plans for a SQL statement and to pick the one with the lowest cost, which should be the most efficient. From time to time, it may become necessary to influence the plan the Optimizer chooses. The most powerful way to alter the plan chosen is via Optimizer hints. But knowing when and how to use Optimizer hints correctly is somewhat of a dark art. This session explains in detail how Optimizer hints are interpreted, when they should be used, and why they sometimes appear to be ignored.
Part 3 of the SQL Tuning workshop examines the different aspects of an execution plan, from cardinality estimates to parallel execution and explains what information you should be gleaming from the plan and how it affects the execution. It offers insight into what caused the Optimizer to make the decision it did as well as a set of corrective measures that can be used to improve each aspect of the plan.
Part1 of SQL Tuning Workshop - Understanding the OptimizerMaria Colgan
Part 1 of a 5 part SQL Tuning workshop, This presentation covers the history of the Oracle Optimizer and explains the first thing the Optimizer does when it receives a SQL statements, which is to transform the SQL statement in order to open up additional access paths.
The presentation helps to introduce the key aspects of the Oracle Optimizer and how you find out what it's up to and how you can influence its decisions.
Harnessing the Power of Optimizer HintsMaria Colgan
The goal of the Oracle Optimizer is to examine all possible execution plans for a SQL statement and to pick the one with the lowest cost, which should be the most efficient. From time to time, it may become necessary to influence the plan the Optimizer chooses. The most powerful way to alter the plan chosen is via Optimizer hints. But knowing when and how to use Optimizer hints correctly is somewhat of a dark art. This session explains in detail how Optimizer hints are interpreted, when they should be used, and why they sometimes appear to be ignored.
This presentation talks about the different ways of getting SQL Monitoring reports, reading them correctly, common issues with SQL Monitoring reports - and plenty of Oracle 12c-specific improvements!
In this session, we looked at five things you might not know about the Oracle Database or might have forgotten. For each topic, I explained the functionality and demonstrated the benefits using real-world examples. The topics covered apply to anyone running Oracle Database 11g and up, including Standard Edition, with only a few minor exceptions.
Session aims at introducing less familiar audience to the Oracle database statistics concept, why statistics are necessary and how the Oracle Cost-Based Optimizer uses them
Oracle Database Performance Tuning Advanced Features and Best Practices for DBAsZohar Elkayam
Oracle Week 2017 slides.
Agenda:
Basics: How and What To Tune?
Using the Automatic Workload Repository (AWR)
Using AWR-Based Tools: ASH, ADDM
Real-Time Database Operation Monitoring (12c)
Identifying Problem SQL Statements
Using SQL Performance Analyzer
Tuning Memory (SGA and PGA)
Parallel Execution and Compression
Oracle Database 12c Performance New Features
Any DBA from beginner to advanced level, who wants to fill in some gaps in his/her knowledge about Performance Tuning on an Oracle Database, will benefit from this workshop.
All of the Performance Tuning Features in Oracle SQL DeveloperJeff Smith
An overview of all of the performance tuning instrumentation, tools, and features in Oracle SQL Developer. Get help making those applications and their queries more performant.
Tanel Poder Oracle Scripts and Tools (2010)Tanel Poder
Tanel Poder's Oracle Performance and Troubleshooting Scripts & Tools presentation initially presented at Hotsos Symposium Training Day back in year 2010
Query Optimization with MySQL 5.6: Old and New Tricks - Percona Live London 2013Jaime Crespo
Tutorial delivered at Percona MySQL Conference Live London 2013.
It doesn't matter what new SSD technologies appear, or what are the latest breakthroughs in flushing algorithms: the number one cause for MySQL applications being slow is poor execution plan of SQL queries. While the latest GA version provided a huge amount of transparent optimizations -specially for JOINS and subqueries- it is still the developer's responsibility to take advantage of all new MySQL 5.6 features.
In this tutorial we will propose the attendants a sample PHP application with bad response time. Through practical examples, we will suggest step-by-step strategies to improve its performance, including:
* Checking MySQL & InnoDB configuration
* Internal (performance_schema) and external tools for profiling (pt-query-digest)
* New EXPLAIN tools
* Simple and multiple column indexing
* Covering index technique
* Index condition pushdown
* Batch key access
* Subquery optimization
Understanding my database through SQL*Plus using the free tool eDB360Carlos Sierra
This session introduces eDB360 - a free tool that is executed from SQL*Plus and generates a set of reports providing a 360-degree view of an Oracle database; all without installing anything on the database.
If using Oracle Enterprise Manager (OEM) is off-limits for you or your team, and you can only access the database thorough a SQL*Plus connection with no direct access to the database server, then this tool is a perfect fit to provide you with a broad overview of the database configuration, performance, top SQL and much more. You only need a SQL*Plus account with read access to the data dictionary, and common Oracle licenses like the Diagnostics or the Tuning Pack.
Typical uses of this eDB360 tool include: databases health-checks, performance assessments, pre or post upgrade verifications, snapshots of the environment for later use, compare between two similar environments, documenting the state of a database when taking ownership of it, etc.
Once you learn how to use eDB360 and get to appreciate its value, you may want to execute this tool on all your databases on a regular basis, so you can keep track of things for long periods of time. This tool is becoming part of a large collection of goodies many DBAs use today.
During this session you will learn the basics about the free eDB360 tool, plus some cool tricks. The target audience is: DBAs, developers and consultants (some managers could also benefit).
This is a recording of my Advanced Oracle Troubleshooting seminar preparation session - where I showed how I set up my command line environment and some of the main performance scripts I use!
Your tuning arsenal: AWR, ADDM, ASH, Metrics and AdvisorsJohn Kanagaraj
Oracle Database 10g brought in a slew of tuning and performance related tools and indeed a new way of dealing with performance issues. Even though 10g has been around for a while, many DBAs haven’t really used many of the new features, mostly because they are not well known or understood. In this Expert session, we will look past the slick demos of the new tuning and performance related tools and go “under the hood”. Using this knowledge, we will bypass the GUI and look at the views and counters that matter and quickly understand what they are saying. Tools covered include AWR, ADDM, ASH, Metrics, Tuning Advisors and their related views. Much of information about Oracle Database 10g presented in this paper has been adapted from my book and I acknowledge that with gratitude to my publisher - SAMS (Pearson).
DB Time, Average Active Sessions, and ASH Math - Oracle performance fundamentalsJohn Beresniewicz
RMOUG 2020 abstract:
This session will cover core concepts for Oracle performance analysis first introduced in Oracle 10g and forming the backbone of many features in the Diagnostic and Tuning packs. The presentation will cover the theoretical basis and meaning of these concepts, as well as illustrate how they are fundamental to many user-facing features in both the database itself and Enterprise Manager.
This presentation talks about the different ways of getting SQL Monitoring reports, reading them correctly, common issues with SQL Monitoring reports - and plenty of Oracle 12c-specific improvements!
In this session, we looked at five things you might not know about the Oracle Database or might have forgotten. For each topic, I explained the functionality and demonstrated the benefits using real-world examples. The topics covered apply to anyone running Oracle Database 11g and up, including Standard Edition, with only a few minor exceptions.
Session aims at introducing less familiar audience to the Oracle database statistics concept, why statistics are necessary and how the Oracle Cost-Based Optimizer uses them
Oracle Database Performance Tuning Advanced Features and Best Practices for DBAsZohar Elkayam
Oracle Week 2017 slides.
Agenda:
Basics: How and What To Tune?
Using the Automatic Workload Repository (AWR)
Using AWR-Based Tools: ASH, ADDM
Real-Time Database Operation Monitoring (12c)
Identifying Problem SQL Statements
Using SQL Performance Analyzer
Tuning Memory (SGA and PGA)
Parallel Execution and Compression
Oracle Database 12c Performance New Features
Any DBA from beginner to advanced level, who wants to fill in some gaps in his/her knowledge about Performance Tuning on an Oracle Database, will benefit from this workshop.
All of the Performance Tuning Features in Oracle SQL DeveloperJeff Smith
An overview of all of the performance tuning instrumentation, tools, and features in Oracle SQL Developer. Get help making those applications and their queries more performant.
Tanel Poder Oracle Scripts and Tools (2010)Tanel Poder
Tanel Poder's Oracle Performance and Troubleshooting Scripts & Tools presentation initially presented at Hotsos Symposium Training Day back in year 2010
Query Optimization with MySQL 5.6: Old and New Tricks - Percona Live London 2013Jaime Crespo
Tutorial delivered at Percona MySQL Conference Live London 2013.
It doesn't matter what new SSD technologies appear, or what are the latest breakthroughs in flushing algorithms: the number one cause for MySQL applications being slow is poor execution plan of SQL queries. While the latest GA version provided a huge amount of transparent optimizations -specially for JOINS and subqueries- it is still the developer's responsibility to take advantage of all new MySQL 5.6 features.
In this tutorial we will propose the attendants a sample PHP application with bad response time. Through practical examples, we will suggest step-by-step strategies to improve its performance, including:
* Checking MySQL & InnoDB configuration
* Internal (performance_schema) and external tools for profiling (pt-query-digest)
* New EXPLAIN tools
* Simple and multiple column indexing
* Covering index technique
* Index condition pushdown
* Batch key access
* Subquery optimization
Understanding my database through SQL*Plus using the free tool eDB360Carlos Sierra
This session introduces eDB360 - a free tool that is executed from SQL*Plus and generates a set of reports providing a 360-degree view of an Oracle database; all without installing anything on the database.
If using Oracle Enterprise Manager (OEM) is off-limits for you or your team, and you can only access the database thorough a SQL*Plus connection with no direct access to the database server, then this tool is a perfect fit to provide you with a broad overview of the database configuration, performance, top SQL and much more. You only need a SQL*Plus account with read access to the data dictionary, and common Oracle licenses like the Diagnostics or the Tuning Pack.
Typical uses of this eDB360 tool include: databases health-checks, performance assessments, pre or post upgrade verifications, snapshots of the environment for later use, compare between two similar environments, documenting the state of a database when taking ownership of it, etc.
Once you learn how to use eDB360 and get to appreciate its value, you may want to execute this tool on all your databases on a regular basis, so you can keep track of things for long periods of time. This tool is becoming part of a large collection of goodies many DBAs use today.
During this session you will learn the basics about the free eDB360 tool, plus some cool tricks. The target audience is: DBAs, developers and consultants (some managers could also benefit).
This is a recording of my Advanced Oracle Troubleshooting seminar preparation session - where I showed how I set up my command line environment and some of the main performance scripts I use!
Your tuning arsenal: AWR, ADDM, ASH, Metrics and AdvisorsJohn Kanagaraj
Oracle Database 10g brought in a slew of tuning and performance related tools and indeed a new way of dealing with performance issues. Even though 10g has been around for a while, many DBAs haven’t really used many of the new features, mostly because they are not well known or understood. In this Expert session, we will look past the slick demos of the new tuning and performance related tools and go “under the hood”. Using this knowledge, we will bypass the GUI and look at the views and counters that matter and quickly understand what they are saying. Tools covered include AWR, ADDM, ASH, Metrics, Tuning Advisors and their related views. Much of information about Oracle Database 10g presented in this paper has been adapted from my book and I acknowledge that with gratitude to my publisher - SAMS (Pearson).
DB Time, Average Active Sessions, and ASH Math - Oracle performance fundamentalsJohn Beresniewicz
RMOUG 2020 abstract:
This session will cover core concepts for Oracle performance analysis first introduced in Oracle 10g and forming the backbone of many features in the Diagnostic and Tuning packs. The presentation will cover the theoretical basis and meaning of these concepts, as well as illustrate how they are fundamental to many user-facing features in both the database itself and Enterprise Manager.
Optimizer is the component of the DB2 SQL compiler responsible for selecting an optimal access plan for an SQL statement. The optimizer works by calculating the execution cost of many alternative access plans, and then choosing the one with the minimal estimated cost. Understanding how the optimizer works and knowing how to influence its behaviour can lead to improved query performance and better resource usage.
This presentation was created for the workshop delivered at the CASCON 2011 conference. Its aim is to introduce basic optimizer and related concepts, and to serve as a starting point for further study of the optimizer techniques.
Ground Breakers Romania: Explain the explain_planMaria Colgan
This session was delivered as part of the EMEA Ground Breakers tour in Romania, Oct. 2019. The execution plan for a SQL statement can often seem complicated and hard to understand. Determining if the execution plan you are looking at is the best plan you could get or attempting to improve a poorly performing execution plan can be a daunting task even for the most experienced DBA or developer. This session examines the different aspects of an execution plan, from selectivity to parallel execution and explains what information you should be gleaming from the plan and how it affects the execution. It offers insight into what caused the Optimizer to make the decision it did as well as a set of corrective measures that can be used to improve each aspect of the plan.
In this first of a series of presentations, we'll overview the differences between SQL and PL/SQL, and the first steps in optimization, as understanding RULE vs. COST, and how to slash 90% response time in data extractions running in SQL*Plus.
Managing Statistics for Optimal Query PerformanceKaren Morton
Half the battle of writing good SQL is in understanding how the Oracle query optimizer analyzes your code and applies statistics in order to derive the “best” execution plan. The other half of the battle is successfully applying that knowledge to the databases that you manage. The optimizer uses statistics as input to develop query execution plans, and so these statistics are the foundation of good plans. If the statistics supplied aren’t representative of your actual data, you can expect bad plans. However, if the statistics are representative of your data, then the optimizer will probably choose an optimal plan.
Antes de migrar de 10g a 11g o 12c, tome en cuenta las siguientes consideraciones. No es tan sencillo como simplemente cambiar de motor de base de datos, se necesita hacer consideraciones a nivel del aplicativo.
This paper describes the evolution of the Plan table and DBMSX_PLAN in 11g and some of the features that can be used to troubelshoot SQL performance effectively and efficiently.
PHP UK 2020 Tutorial: MySQL Indexes, Histograms And other ways To Speed Up Yo...Dave Stokes
Slow query? Add an index or two! But things are suddenly even slower! Indexes are great tools to speed data lookup but have overhead issues. Histograms don’t have that overhead but may not be suited. And how you lock rows also effects performance. So what do you do to speed up queries smartly?
Advanced tips for making Oracle databases fasterSolarWinds
If you struggle with performance issues in your Oracle database instance and can't easily pinpoint the cause, you may be missing crucial performance information.
Learn how to determine the best approach for tuning SQL statements and other issues by identifying the specific causes of slow performance.
Horizontally Scalable Relational Databases with Spark: Spark Summit East talk...Spark Summit
Scaling out doesn’t have to mean giving up transactions and efficient joins! Relational databases can scale horizontally, and using them as a store for Spark Streaming or batch computations can help cover areas in which Spark is typically weaker. Examples will be drawn from our experience using Citus (https://github.com/citusdata/citus), an open-source extension to Postgres, but lessons learned should be applicable to many databases.
Query Optimization & How to interpret query execution planAmol Barewar
Efficient methods of processing unanticipated queries are a crucial prerequisite for the success of generalized database management systems. A wide variety of approaches to improve the performance of query evaluation algorithms have been proposed: logic-based and semantic transformations, fast implementations of basic operations, and combinatorial or heuristic algorithms for generating alternative access plans and choosing among them. These methods are presented in the framework of a general query evaluation procedure using the relational calculus representation of queries
Part4 Influencing Execution Plans with Optimizer HintsMaria Colgan
Part 4 of the SQL Tuning workshop is called “Harnessing the power of optimizer hints”. Although I am not a strong supporter of adding hints to SQL statements for a whole host of reasons, from time to time, it may become necessary to influence the plan the Optimizer chooses. The most powerful way to alter the plan chosen is via Optimizer hints. But knowing when and how to use Optimizer hints correctly is somewhat of a dark art. This session explains how Optimizer hints are interpreted, when and where they should be used, and why they sometimes appear to be ignored.
Part2 Best Practices for Managing Optimizer StatisticsMaria Colgan
Part 2 of the SQL Tuning workshop focuses on Optimizer Statistics and the best practices for managing them, including when and how to gather statistics. It also covers what additional information you may need to give the Optimizer and provides guidance on when not to gather statistics. Finally we look at all of the techniques you can use to speed up statistics gathering including taking advantage of Incremental statistics, parallelism and concurrency.
This session was delivered as part of the Oracle Ground Breakers EMEA tour in Romania. What does "autonomous" really mean, and what makes the database autonomous? If you're looking for the answers to these questions, this is the session for you! In this session, we invite you to take a peek under the hood of the Oracle Autonomous Database, so you can get a clear understanding of how our unique Autonomous Database works. We’ll share our exclusive combination of database features, best practices and machine learning algorithms that make up this family of cloud services. With the use of live demos, we’ll illustrates how it can simplify your approach to data management and accelerate your transition to the cloud.
What to Expect From Oracle database 19cMaria Colgan
The Oracle Database has recently switched to an annual release model. Oracle Database 19c is only the second release in this new model. So what can you expect from the latest version of the Oracle Database? This presentation explains how Oracle Database 19c is really 12.2.0.3 the terminal release of the 12.2 family and the new features you can find in this release.
The Changing Role of a DBA in an Autonomous WorldMaria Colgan
The advent of the cloud and the introduction of Oracle Autonomous Database Cloud presents opportunities for every organization, but what's the future role for the DBA? This presentation explores how the role of the DBA will continue to evolve, and provides advice on key skills required to be a successful DBA in the world of the cloud.
This presentation provides a clear overview of how Oracle Database In-Memory optimizes both analytics and mixed workloads, delivering outstanding performance while supporting real-time analytics, business intelligence, and reporting. It provides details on what you can expect from Database In-Memory in both Oracle Database 12.1.0.2 and 12.2.
This is one of the 15 minute "TED" style talk presented as part of the Database Symposium at the ODTUG Kscope18 conference. In this presentation @SQLMaria shares details on 4 useful supplied PL/SQL package with the Oracle Database
This is one of the 15 minute "TED" style talk presented as part of the Database Symposium at the ODTUG Kscope18 conference. In this presentation @SQLMaria coveres topics like what data type you should use to store JSON documents (varchar2, clob or blob) the pro's and con's of using an IS JSON check constraint, and how to load, index, and query JSON documents.
Five Tips to Get the Most Out of Your IndexingMaria Colgan
This is one of the 15 minute "TED" style talk presented as part of the Database Symposium at the ODTUG Kscope18 conference. In this presentation @SQLMaria provides 5 useful tips for getting the most out of indexes in the Oracle Database
Databases are fundamentally changing due to new technologies and new requirements. This has never been more evident than with Oracle Database 12c, which has been the most rapidly adopted release in over a decade. This session provides a technical introduction to what's new in Oracle Database 12c and Oracle’s Engineered systems. We will describe which industry transformation inspired each enhancement and explain when and how you can embrace each enhancement while preserving your existing performance.
For decades developers and DBAs have battled over who controls the world. With each new development paradigm the battle flares again as developers push DBAs to adopt and support new data structures (JSON), new APIs (REST services), new technologies (In-Memory) and new platforms (Cloud). In this session, Gerald Venzl takes on the role of lead developer on a project to deploy a RESTful web-based application for a new coffeeshop chain, while Maria Colgan takes on the role of the DBA. Through the use of live demos, they learn to work together to find a solution that will allow them to embrace a more agile development approach, as well as the latest technology trends without exposing the business to painful availability or security vulnerabilities.
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...Neo4j
Leonard Jayamohan, Partner & Generative AI Lead, Deloitte
This keynote will reveal how Deloitte leverages Neo4j’s graph power for groundbreaking digital twin solutions, achieving a staggering 100x performance boost. Discover the essential role knowledge graphs play in successful generative AI implementations. Plus, get an exclusive look at an innovative Neo4j + Generative AI solution Deloitte is developing in-house.
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfPeter Spielvogel
Building better applications for business users with SAP Fiori.
• What is SAP Fiori and why it matters to you
• How a better user experience drives measurable business benefits
• How to get started with SAP Fiori today
• How SAP Fiori elements accelerates application development
• How SAP Build Code includes SAP Fiori tools and other generative artificial intelligence capabilities
• How SAP Fiori paves the way for using AI in SAP apps
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024Neo4j
Neha Bajwa, Vice President of Product Marketing, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
2. The following is intended to outline our general product direction. It is intended for information purposes
only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code,
or functionality, and should not be relied upon in making purchasing decisions. The development, release,
timing, and pricing of any features or functionality described for Oracle’s products may change and
remains at the sole discretion of Oracle Corporation.
Safe harbor statement
2
3. 3
4
3
2
1 Use the right Tools
Functions Friends or Foe
Data Type Dilemmas
Influencing an execution without adding hints
Agenda
5
6
4. Query – How many customers do we have in a specific zipcode?
SELECT Count(cust_first_name)
FROM customers2
WHERE zipcode = :n;
• Customers2 table has 20,000 rows
• A b-tree index exists on zipcode
• There is also a histogram on the zipcode column due to data skew
Expecting index range scan execution plan
Using the right tools
5. Expected index range scan but got full table scan.Why?
Using the right tools
Set bind variable :n
to 94065
6. Using literal value gets the right plan
Using the right tools
Let’s try using literal
value to get the plan we
want
7. Using the right tools
• Let’s check our bind
statement and plan again
• Why is a simple equality
predicate being applied as
filter and not as as access
predicate?
• Why is there a
TO_NUMBER function on
the bind variable n after it
was defined as a number?
Let’s double check our code
8. Using the right tools
• Autotrace is not aware of
binds at all
• All binds treated as strings
hence TO_NUMBER on n
• Also no bind peeking takes
place
Bad plan is caused by using Autotrace
9. Using the right tools
• No bind peeking means the
histogram can’t be used for
cardinality estimate
• Calculated using
Bad plan is caused by using Autotrace
ROW_NUM 20,000
NDV 2
10. Solution – use DBMS_XPLAN.DISPLAY_CURSOR
Using the right tools
Execute the statement
with the bind then run
DBMS_XPLAN
command
11. Solution – use DBMS_XPLAN.DISPLAY_CURSOR
Using the right tools
Additional format
option shows actual
bind value under the
plan
12. 12
4
3
2
1 Use the right Tools
Functions Friends or Foe
Data Type Dilemmas
Influencing an execution without adding hints
Agenda
5
6
13. Functions Friend or Foe
CREATE table t
AS
SELECT *
FROM all_objects;
Table created.
OWNER VARCHAR2(128) NOT NULL
OBJECT_NAME VARCHAR2(128) NOT NULL
SUBOBJECT_NAME VARCHAR2(128)
OBJECT_ID NUMBER NOT NULL
DATA_OBJECT_ID NUMBER
OBJECT_TYPE VARCHAR2(23)
CREATED DATE NOT NULL
LAST_DDL_TIME DATE NOT NULL
TIMESTAMP VARCHAR2(19)
STATUS VARCHAR2(7)
TEMPORARY VARCHAR2(1)
GENERATED VARCHAR2(1)
SECONDARY VARCHAR2(1)
NAMESPACE NUMBER NOT NULL
EDITION_NAME VARCHAR2(128)
SHARING VARCHAR2(13)
EDITIONABLE VARCHAR2(1)
ORACLE_MAINTAINED VARCHAR2(1)
APPLICATION VARCHAR2(1)
DEFAULT_COLLATION VARCHAR2(100)
DUPLICATED VARCHAR2(1)
SHARDED VARCHAR2(1)
CREATED_APPID NUMBER
CREATED_VSNID NUMBER
MODIFIED_APPID NUMBER
MODIFIED_VSNID NUMBER
ALL_OBJECTS
14. Functions Friend or Foe
SELECT count(*)
FROM t
WHERE created >= to_date( '5-sep-2010', 'dd-mon-yyyy’ )
AND created < to_date( '6-sep-2010', 'dd-mon-yyyy’ );
COUNT(*)
----------
65925
SELECT count(*), 0.01 * count(*), 0.01 * 0.01 * count(*)
FROM t;
COUNT(*) 0.01*COUNT(*) 0.01*0.01*COUNT(*)
---------- ------------- ------------------
72926 729.26 7.2926
15. Functions Friend or Foe
EXEC dbms_stats.gather_table_stats( user, 'T' );
PL/SQL procedure successfully completed.
• Why did I wait till here to gather statistics?
16. Functions Friend or Foe
SELECT count(*)
FROM t
WHERE created >= to_date( '5-sep-2010', 'dd-mon-yyyy’ )
AND created < to_date( '6-sep-2010', 'dd-mon-yyyy’ );
COUNT(*)
----------
65925
select * from table(dbms_xplan.display_cursor);
---------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | | 291 (100)| |
| 1 | SORT AGGREGATE | | 1 | 8 | | |
|* 2 | TABLE ACCESS FULL| T | 65462 | 511K| 291 (1)| 00:00:04 |
---------------------------------------------------------------------------
17. Functions Friend or Foe
SELECT count(*)
FROM t
WHERE trunc(created) = to_date( '5-sep-2010', 'dd-mon-yyyy’ );
COUNT(*)
----------
65925
select * from table(dbms_xplan.display_cursor);
---------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | | 294 (100)| |
| 1 | SORT AGGREGATE | | 1 | 8 | | |
|* 2 | TABLE ACCESS FULL| T | 729 | 5832 | 294 (2)| 00:00:04 |
---------------------------------------------------------------------------
Optimizer doesn’t know impact of the function on NDV so assumes 1% of the tables
18. Functions Friend or Foe
Optimizer doesn’t know impact of either function, but additional predicate reduces rows..
SELECT count(*)
FROM t
WHERE trunc(created) = to_date( '5-sep-2010', 'dd-mon-yyyy’ )
And substr( owner, 1, 3 ) = 'SYS';
COUNT(*)
----------
33535
select * from table(dbms_xplan.display_cursor);
---------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | | 292 (100)| |
| 1 | SORT AGGREGATE | | 1 | 14 | | |
|* 2 | TABLE ACCESS FULL| T | 7 | 98 | 292 (1)| 00:00:04 |
---------------------------------------------------------------------------
19. Query – How many packages of bounce did we sell?
SELECT /*+ gather_plan_statistics */ count(*)
FROM sales2
WHERE to_char(prod_id)=‘139’;
COUNT(*)
----------
11547
• Sales 2 has 400,000 rows
• Sales2 has a b-tree index on the prod_id column
Expected index range scan but got fast full index scan
Functions friends or foe?
20. • Use GATHER_PLAN_STATISTICS
hint to capture execution
statistics
• Use format parameter of
DBMS_XPLAN to show estimated
and execution statistics in plan
• Additional column added to the
plan to show Actual Rows
produce by each operation
Let’s check Cardinality Estimate
Functions friends or foe?
21. • Cardinality estimate is in
the right ballpark so not a
problem with statistics
Expected index range scan but got fast full index scan
Functions friends or foe?
• But why is an equality
predicate being
evaluated as a filter
and not an access
predicate?
• Could it have something
to do with the TO_CHAR
function?
22. What data type is the prod_id column ?
But literal value is a character string ‘139’
Expected index range scan but got fast full index scan
Functions friends or foe?
Better to apply inverse function on other side of predicate
23. SELECT /*+ gather_plan_statistics */ count(*)
FROM sales2
WHERE prod_id= to_number(‘139’);
COUNT(*)
----------
11547
Expected index range scan but got fast full index scan
Functions friends or foe?
24. Query – calculate total amount sold for one year
SELECT sum(amount_sold)
FROM sh.sales s
WHERE TO_CHAR(s.time_id,’YYYYMMDD’) BETWEEN
‘19990101’ AND ‘19991231’;
• Sales table is partitioned on the time_id column
• Sales table has quarterly partitions for historical data
Expected query to access only 4 partitions but its accesses all
Functions friends or foe?
25. Expected query to access only 4 partitions but its accesses all
Functions friends or foe?
Why has an
additional
INTERNAL_FUNCTION
been added to our
predicate?
26. • INTERNAL_FUNCTION typically means a data type conversion has occurred
• Predicate is TO_CHAR(s.time_id,’YYYYMMDD’)
• Optimizer has no idea how TO_CHAR function will effect the values in the
time_id column
• Optimizer can’t determine which partitions will be accessed now
• Needs to scan them all just in case
Expected query to access only 4 partitions but its accesses all
Functions friends or foe?
27. Solution – Use inverse function on other side of predicate
Functions friends or foe?
28. Keep the following in mind when deciding where to place the function
• Try to place functions on top of constants (literals, binds) rather than on columns
• Avoid using a function on index columns or partition keys as it prevents index use or partition
pruning
• For function-based index to be considered, use that exact function as specified in index
• If multiple predicates involve the same columns, write predicates such that they share common
expressions For example,
WHERE f(a) = b WHERE a = inv_f(b)
AND a = c AND a = c
Using inverse function on other side of predicate
Functions friends or foe?
Should be rewritten as
This will allow transitive predicate c=inv_f(b) to be added by the optimizer
29. 29
4
3
2
1 Use the right Tools
Functions Friends or Foe
Data Type Dilemmas
Influencing an execution without adding hints
Agenda
5
6
30. Query – Simple IAS part of an ETL process
INSERT /*+ APPEND gather_plan_statistics */
INTO t1(row_id, modification_num, operation, last_upd)
SELECT row_id, 1 , 'I', last_upd
FROM t2
WHERE t2.last_upd > systimestamp;
• T2 has 823,926 rows
• T2 has a b-tree index on the last_upd column
Expected index range scan but got fast full index scan
Data type dilemmas
31. • Cardinality Estimate is
seriously wrong
• Only 1 non-equality access
predicate
• So why is our access
predicate applied as a
filter?
• What does the
INTERNAL_FUNCTION
mean?
Data type dilemmas
Expected index range scan but got fast full index scan
32. • INTERNAL_FUNCTION typically means a data type conversion has occurred
• Predicate is “t2.last_upd > systimestamp”
• What data type is the last_upd column
Expected index range scan but got fast full index scan
Data type dilemmas
33. • Presence of the INTERNAL_FUNCTION cause the Optimizer to guess the cardinality
estimate
• Optimizer has no way of knowing how function effects data in LAST_UPD column
• Without a function-based index or extended statistics the Optimizer must guess
• Guess is 5% of the rows in the tables
• 5% of 823296 is 41,164.8 or 41,165
Why is the cardinality estimate wrong?
Data type dilemmas
34. INSERT /*+ APPEND gather_plan_statistics */
INTO t1(row_id, modification_num, operation, last_upd)
SELECT row_id, 1 , 'I', last_upd
FROM t2
WHERE t2.last_upd > sysdate;
Solution - correct data type mismatch
Data type dilemmas
35. Query – calculate total amount sold that was return same day
SELECT sum(amount_sold)
FROM sh.sales s, sh.sales_returns sr
WHERE s.time_id = sr.time_id
AND sr.time_id=‘31-DEC-19’;
• Sales table is range partitioned on time_id
• Sales table has 4 years of data in quarterly partitions
Expected to get partition pruning via a join but didn’t
Data type dilemmas
36. Expected to get partition pruning via a join but didn’t
Data type dilemmas
Getting transitive
predicate but
INTERNAL_FUNCTION
on partitioned column
prevents pruning
Function needed
because the join
columns have different
data types
37. Solution – ensure join columns have the same data type
Data type dilemmas
KEY means dynamic
pruning at execution
timeAP meansAnd
Pruning, caused by
bloom filter
Now get transitive predicate without
data type conversion hence pruning
38. 38
4
3
2
1 Use the right Tools
Functions Friends or Foe
Data Type Dilemmas
Influencing an execution without adding hints
Agenda
5
6
39. 39
Different ways to influence the Optimizer
Statistics
Use the auto job or DBMS_STATS package Think about using extended
statistics and histograms Don’t forget to include all constraints too
Stored
Outline
Provides plan stability by freezing an execution plan No way to evolve a
plan over time Currently deprecated
SQL Plan
Management
Provides plan stability but can delay adopt of new plans as they need to
be verification. Can't be shared across stmts.
SQL Profile
Requires Diagnostics Pack and may go stale. Can be shared by multiple
SQL stmts with force matching
SQL Patch
A SQL manageability object that can be generated by the SQL Repair
Advisor, in order to circumvent a plan which causes a failure
Hints
Only use as a last resort and only as a complete set of hints. Remember
if you can hint it you can baseline or patch it!
40. • It is not always possible to add hints to third party applications
• Hints can be extremely difficult to manage over time
• Once added never removed
Alternative approach to hints
If you can hint it, baseline it
Solution
• Use SQL Plan Management (SPM)
• Influence the execution plan without adding hints directly to queries
• SPM available in Enterprise Edition*, no additional options required
41. SQL Plan Management
If you can hint it, baseline it
User
Plan baseline
Execute Plan
Plan Acceptable
NOTE:: Actual execution plans
stored in SQL plan baseline in
Oracle Database 12c
SQL Management Base
Parse SQL Generate Plan
ACCEPTED UNACCEPTED
42. SQL Plan Management
If you can hint it, baseline it
NOTE::You do not need to be in
auto-capture mode to have a new
plan added to an existing SQL plan
baseline
Additional fields such as fetches,
row processed etc. are not
populated because new plan has
never executed
User Parse SQL Generate Plan
Plan baseline
SQL Management Base
ACCEPTED UNACCEPTED
43. SQL Plan Management
If you can hint it, baseline it
User Parse SQL Plan used
Plan baseline
SQL Management Base
ACCEPTED UNACCEPTED
Execute Plan
Plan Acceptable
44. Simple two table join between the SALES and PRODUCTS tables
SELECT p.prod_name,SUM(s.amount_sold)
FROM products p, sales s
WHERE p.prod_id = s.prod_id
AND p.supplier_id = :sup_id
GROUP BY p.prod_name;
Example Overview
Influence execution plan without adding hints
Current Plan
GROUP BY
HASH JOIN
TABLEACCESS
SALES
TABLEACCESS
PRODUCTS
45. Simple two table join between the SALES and PRODUCTS tables
SELECT p.prod_name,SUM(s.amount_sold)
FROM products p, sales s
WHERE p.prod_id = s.prod_id
AND p.supplier_id = :sup_id
GROUP BY p.prod_name;
Example Overview
Influence execution plan without adding hints
GROUP BY
HASH JOIN
INDEX RANGE SCAN
PROD_SUPP_ID_INDX
TABLEACCESS
SALES
Desired Plan
46. SELECT p.prod_name,SUM(s.amount_sold)
FROM products p, sales s
WHERE p.prod_id = s.prod_id
AND p.supplier_id = :sup_id
GROUP BY p.prod_name;
PROD_NAME SUM(S.AMOUNT_SOLD)
--------------------------------------- ------------------
Baseball trouser Kids 91
Short Sleeve Rayon Printed Shirt $8.99 32
Step 1. Execute the non-hinted SQL statement
Influence execution plan without adding hints
47. Default plan uses full table scans followed by a hash join
Influence execution plan without adding hints
48. SELECT sql_id,
sql_fulltext
FROM v$sql
WHERE sql_text LIKE 'SELECT p.prod_name, %';
SQL_ID SQL_FULLTEXT
------------- ----------------------------------------
akuntdurat7yr SELECT p.prod_name, SUM(s.amount_sold)
FROM products p , sales s
WHERE p.prod
Step 2. Find the SQL_ID for the non-hinted statement inV$SQL
Influence execution plan without adding hints
49. VARIABLE cnt NUMBER
EXECUTE :cnt := dbms_spm.load_plans_from_cursor_cache(sql_id=>'akuntdurat7yr');
PL/SQL PROCEDURE successfully completed.
SELECT sql_handle, sql_text, plan_name, enabled
FROM dba_sql_plan_baselines
WHERE sql_text LIKE 'SELECT p.prod_name, %';
SQL_HANDLE SQL_TEXT PLAN_NAME ENA
------------------ --------------------------------------- -------------------- ---
SQL_8f876d84821398cf SELECT p.prod_name, sum(s.amount_sold) SQL_PLAN_8z1vdhk1176 YES
FROM products p , sales s g42949306
Step 3. Create a SQL plan baseline for the non-hinted SQL statement
Influence execution plan without adding hints
50. EXECUTE :cnt := dbms_spm.alter_sql_plan_baseline(sql_handle=>'SQL_8f876d84821398cf’,-
plan_name=>'SQL_PLAN_8z1vdhk11766g42949306',-
attribute_name => 'enabled’, -
attribute_value => 'NO');
PL/SQL PROCEDURE successfully completed.
SELECT sql_handle, sql_text, plan_name, enabled
FROM dba_sql_plan_baselines
WHERE sql_text LIKE 'SELECT p.prod_name, %';
SQL_HANDLE SQL_TEXT PLAN_NAME ENA
------------------ ---------------------------------------- --------------------- ---
SQL_8f876d84821398cf SELECT p.prod_name, sum(s.amount_sold) SQL_PLAN_8z1vdhk1176 NO
FROM products p , sales s g42949306
Step 4. Disable plan in SQL plan baseline for the non-hinted SQL statement
Influence execution plan without adding hints
51. SELECT /*+ index(p) */ p.prod_name,SUM(s.amount_sold)
FROM products p, sales s
WHERE p.prod_id = s.prod_id
AND p.supplier_id = :sup_id
GROUP BY p.prod_name;
PROD_NAME SUM(S.AMOUNT_SOLD)
--------------------------------------- ------------------
Baseball trouser Kids 91
Short Sleeve Rayon Printed Shirt $8.99 32
Step 5. Manually modify the SQL statement to use the hint(s) & execute it
Influence execution plan without adding hints
52. SELECT sql_id, plan_hash_value, sql_fulltext
FROM v$sql
WHERE sql_text LIKE 'SELECT /*+ index(p) */ p.prod_name, %';
SQL_ID PLAN_HASH_VLAUE SQL_FULLTEXT
------------- --------------- -----------------------------------
avph0nnq5pfc2 2567686925 SELECT /*+ index(p) */ p.prod_name,
SUM( s.amount_sold) FROM products p,
sales
Step 6. Find SQL_ID & PLAN_HASH_VALUE for hinted SQL stmt inV$SQL
Influence execution plan without adding hints
53. VARIABLE cnt NUMBER
EXECUTE :cnt := dbms_spm.load_plans_from_cursor_cache(sql_id=>'avph0nnq5pfc2’,-
plan_hash_value=>'2567686925', -
sql_handle=>'SQL_8f876d84821398cf‘);
PL/SQL PROCEDURE successfully completed.
Step 7. Associate hinted plan with original SQL stmt’s SQL HANDLE
Influence execution plan without adding hints
SQL_ID & PLAN_HASH_VALUE belong to hinted
statement
SQL_HANDLE is for the non-hinted statement
54. SELECT sql_handle, sql_text, plan_name, enabled
FROM dba_sql_plan_baselines
WHERE sql_text LIKE 'SELECT p.prod_name, %';
SQL_HANDLE SQL_TEXT PLAN_NAME ENA
------------------ --------------------------------------- -------------------- ---
SQL_8f876d84821398cf SELECT p.prod_name, sum(s.amount_sold) SQL_PLAN_8z1vdhk1176 NO
FROM products p , sales s g42949306
SQL_8f876d84821398cf SELECT p.prod_name, sum(s.amount_sold) SQL_PLAN_8z1vdhk1176 YES
FROM products p , sales s 6ge1c67f67
Step 8. Confirm SQL statement has two plans in its SQL plan baseline
Influence execution plan without adding hints
Hinted plan is the only enabled
plan for non-hinted SQL statement
55. Step 9. Confirm hinted plan is being used
Influence execution plan without adding hints
Non-hinted SQL text but it
is using the plan hash
value for the hinted
statement
Note section also confirms
SQL plan baseline used for
statement
56. 56
CREATE table t (n number NOT NULL)
AS
SELECT object_id
FROM all_objects;
Table created.
CREATE INDEX ind_t_n ON t(n);
Index created.
Setup
How to Create a SQL Patch to influence execution plans
57. 57
EXPLAIN PLAN FOR
SELECT *
FROM t
WHERE n > 0;
Explained.
SELECT * FROM table(dbms_xplan.display());
---------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 69478 | 882K| 42 (29)| 00:00:01 |
|* 1 | TABLE ACCESS FULL| T | 69478 | 882K| 42 (29)| 00:00:01 |
---------------------------------------------------------------------------
Step 1 What is the current plan
How to Create a SQL Patch to influence execution plans
But what if we needed the plan to use the index?
58. 58
DECLARE
patch_name varchar2(100);
BEGIN
patch_name := sys.dbms_sqldiag.create_sql_patch(-
sql_text=>'select * from t where n > 0’, -
hint_text=>'INDEX(@"SEL$1" "T")’, -
name=>'TEST_PATCH');
END;
/
PL/SQL procedure successfully completed.
Step 2 Create a SQL Patch with the hint to force an index plan
How to Create a SQL Patch to influence execution plans
59. 59
EXPLAIN PLAN FOR
SELECT *
FROM t
WHERE n > 0;
Explained.
SELECT * FROM table(dbms_xplan.display());
-----------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-----------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 70187 | 891K| 166 (8)| 00:00:01 |
|* 1 | INDEX RANGE SCAN| IND_T_N1 | 70187 | 891K| 166 (8)| 00:00:01 |
-----------------------------------------------------------------------------
Note
-----
- SQL patch "TEST_PATCH" used for this statement
Step 3 Check patch took affect
How to Create a SQL Patch to influence execution plans