Automatic Reoptimization in Oracle Database 12c Release 1 (12.1)
See how statistics feedback and performance feedback are used by automatic reoptimization in Oracle Database 12c Release 1.
oracle 12cconfigurationintermediate
by OracleDba
14 views
See how statistics feedback and performance feedback are used by automatic reoptimization in Oracle Database 12c Release 1.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
CONN test/test@pdb1
-- Create the types to support the table function.
DROP TYPE t_tf_tab;
DROP TYPE t_tf_row;
CREATE TYPE t_tf_row AS OBJECT (
id NUMBER,
description VARCHAR2(50)
);
/
CREATE TYPE t_tf_tab IS TABLE OF t_tf_row;
/
-- Build the table function itself.
CREATE OR REPLACE FUNCTION get_tab_ptf (p_rows IN NUMBER) RETURN t_tf_tab PIPELINED AS
BEGIN
FOR i IN 1 .. p_rows LOOP
PIPE ROW (t_tf_row(i, 'Description for ' || i));
END LOOP;
RETURN;
END;
/
SELECT /*+ GATHER_PLAN_STATISTICS */
*
FROM TABLE(get_tab_ptf(10));
SET LINESIZE 200 PAGESIZE 100
SELECT * FROM TABLE(DBMS_XPLAN.display_cursor(format => 'allstats last'));
PLAN_TABLE_OUTPUT
-------------------------------------------------------------------------------------------------
SQL_ID 0ktmsgvczysxy, child number 0
-------------------------------------
SELECT /*+ GATHER_PLAN_STATISTICS */ * FROM
TABLE(get_tab_ptf(10))
Plan hash value: 822655197
-------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time |
-------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | 10 |00:00:00.01 |
| 1 | COLLECTION ITERATOR PICKLER FETCH| GET_TAB_PTF | 1 | 8168 | 10 |00:00:00.01 |
-------------------------------------------------------------------------------------------------
SQL>
COLUMN sql_text FORMAT A50
COLUMN is_reoptimizable FORMAT A16
SELECT sql_text, is_reoptimizable
FROM v$sql
WHERE sql_text LIKE '%get_tab_ptf%'
AND sql_text NOT LIKE '%v$sql%';
SQL_TEXT IS_REOPTIMIZABLE
-------------------------------------------------- ----------------
SELECT /*+ GATHER_PLAN_STATISTICS */ * FROM Y
TABLE(get_tab_ptf(10))
SQL>
SELECT /*+ GATHER_PLAN_STATISTICS */
*
FROM TABLE(get_tab_ptf(10));
SET LINESIZE 200 PAGESIZE 100
SELECT * FROM TABLE(DBMS_XPLAN.display_cursor(format => 'allstats last'));
PLAN_TABLE_OUTPUT
-------------------------------------------------------------------------------------------------
SQL_ID 0ktmsgvczysxy, child number 1
-------------------------------------
SELECT /*+ GATHER_PLAN_STATISTICS */ * FROM
TABLE(get_tab_ptf(10))
Plan hash value: 822655197
-------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time |
-------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | 10 |00:00:00.01 |
| 1 | COLLECTION ITERATOR PICKLER FETCH| GET_TAB_PTF | 1 | 20 | 10 |00:00:00.01 |
-------------------------------------------------------------------------------------------------
Note
-----
- statistics feedback used for this statement
SQL>
CONN sys@pdb1 AS SYSDBA
EXEC DBMS_SPD.flush_sql_plan_directive;
SET LINESIZE 200
COLUMN dir_id FORMAT A20
COLUMN owner FORMAT A10
COLUMN object_name FORMAT A10
COLUMN col_name FORMAT A10
SELECT TO_CHAR(d.directive_id) dir_id, o.owner, o.object_name,
o.subobject_name col_name, o.object_type, d.type, d.state, d.reason
FROM dba_sql_plan_directives d, dba_sql_plan_dir_objects o
WHERE d.directive_id=o.directive_id
AND o.owner = 'TEST'
ORDER BY 1,2,3,4,5;
no rows selected
SQL>Please to add comments
No comments yet. Be the first to comment!