Oracle 19c: Automatic Indexing


Oracle 19c 新特性/Oracle 19c New Features

Core aims: Long Term Stability 19c













































New Features




自动索引























drop table hr.big1 purge;
drop table sh.sales1 purge;

drop tablespace ts001 including contents and datafiles;
exec DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_DEFAULT_TABLESPACE', NULL);
exec DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_SCHEMA', 'null, allow => TRUE);

select con_id, parameter_name, parameter_value from cdb_auto_index_config;



exec DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','IMPLEMENT')

        option: OFF, REPORT_ONLY, IMPLEMENT

alter session set container=orclpdb1;

select con_id, parameter_name, parameter_value from cdb_auto_index_config;

create tablespace ts001 datafile '/opt/ts001.dbf' size 500m;
exec DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_DEFAULT_TABLESPACE', 'ts001');

exec DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_SCHEMA', 'HR', allow => TRUE);
exec DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_SCHEMA', 'OE', allow => FALSE);





















create table hr.big1 as select rownum id, t.* from dba_objects t;

declare
a varchar2(2000) := '';

begin
    for x in  1.. 10000 loop
        select object_name into a from hr.big1 where id =x;
    end loop;
end;
/

column task_name format a30
column advisor_name format a30
select task_name, advisor_name
from dba_advisor_tasks where owner='SYS' order by task_id;

task_name                                          advisor_name
----------------------                              ---------------------
SYS_AI_SPM_EVOLVE_TASK      SPM Evolve Advisor
SYS_AI_VERIFY_TASK                 SQL Performance Analyzer
SYS_AUTO_INDEX_TASK            SQL Access Advisor
... ....

















column owner format a20
column index_type format a10
column index_name format a20
column table_name format a20
column table_owner format a10
select owner, idnex_type, index_name, table_name, table_owner
from dba_indexes where auto='YES' order by owner, index_name;

index_name
---------------
SYS_AI_gzmy94nq3vhgq


实时统计收集























sqlplus sh/sh@localhost:1521/orclpdb1
create table sales1 as select * from sales;

set pagesize 5000
set linesize 200
col column_name format a13
col low_value format a14
col high_value format a14
col notes format a40
col partition_name format a13
select column_name, low_value, high_volue, sample_size, notes
from user_tab_col_statistics where table_name ='SALES1'
order by 1, 5;

select nvl(partitio_name, 'global') partitio_name, num_rows, block, notes
from user_tab_statistics where table_name='SALES1' order by 1,4;




















insert into sales1(prod_id, cust_id, time_id, channel_id, promo_id, quantity_sold, amount_sold)
select prod_id, cust_id, time_id, channel_id, promo_id, quantity_sold*3, amount_sold*3 from sales;

commit;

select * from table(dbms_xplan.display_cursor(format=>'TYPICAL'));





















select count(*) from sales1;

exec dbms_stats.flush_database_monitoring_info;
select nvl(partitio_name, 'global') partitio_name, num_rows, block, notes
from user_tab_statistics where table_name='SALES1' order by 1,4;















select count(*) from sales1 where quantity_sold >50;
select * from table(dbms_xplan.display_cursor(format=>'TYPICAL'));



















--Scripts--

https://oracle.zoom.com.cn/j/4382854932



autoindex:

COLUMN parameter_name FORMAT A40
COLUMN parameter_value FORMAT A20

SELECT con_id, parameter_name, parameter_value FROM cdb_auto_index_config;

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','IMPLEMENT');


#EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','REPORT ONLY');
#EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','OFF');

SELECT con_id, parameter_name, parameter_value FROM cdb_auto_index_config;

alter session set container=orclpdb1;

SELECT con_id, parameter_name, parameter_value FROM cdb_auto_index_config;

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','IMPLEMENT');

SELECT con_id, parameter_name, parameter_value FROM cdb_auto_index_config;

alter session set container=orclpdb1;

create tablespace ts001 datafile '/opt/ts001.dbf' size 500m;

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_DEFAULT_TABLESPACE','ts001');



查看AI的默认表空间

SELECT con_id, parameter_name, parameter_value FROM cdb_auto_index_config;

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_DEFAULT_TABLESPACE',NULL);


schema:

SELECT con_id, parameter_name, parameter_value FROM cdb_auto_index_config;

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_SCHEMA', 'HR', allow => TRUE);

SELECT con_id, parameter_name, parameter_value FROM cdb_auto_index_config;

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_SCHEMA', NULL, allow => TRUE);

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_SCHEMA', 'OE', allow => FALSE);

SELECT con_id, parameter_name, parameter_value FROM cdb_auto_index_config;

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_SCHEMA', NULL, allow => FALSE);

SELECT con_id, parameter_name, parameter_value FROM cdb_auto_index_config;

create table hr.big1 as select rownum id,t.* from dba_objects t;


declare
a varchar2(2000) := '';
begin
for x in 1.. 10000 loop
select object_name into a from hr.big1 where id=x;
end loop;
end;
/



COLUMN task_name FORMAT A30
COLUMN advisor_name FORMAT A30
select task_name,advisor_name from dba_advisor_tasks where owner='SYS' ORDER BY TASK_ID;



COLUMN OWNER FORMAT a10
col INDEX_TYPE format a10
col INDEX_NAME format a20
col TABLE_NAME format a20
col TABLE_OWNER format a10
SELECT OWNER,INDEX_TYPE,INDEX_NAME,TABLE_NAME,TABLE_OWNER FROM DBA_INDEXES WHERE AUTO='YES' ORDER BY OWNER,INDEX_NAME;



环境清理:

drop table hr.big1 purge;
EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_DEFAULT_TABLESPACE',NULL);
EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','OFF');
drop tablespace ts001 including CONTENTS and datafiles;




=========================================================================================================================

R-T-S

sqlplus sh/sh@localhost:1521/orclpdb1

create table sales1 as select * from sales;

set pagesize 5000
set linesize 200
col column_name format a13
col low_value format a14
col high_value format a14
col notes format a40
col partition_name format a13
select column_name,low_value,high_value,sample_size,notes from user_tab_col_statistics where table_name='SALES1' order by 1,5;

select nvl(partition_name,'global') partition_name,num_rows,blocks,notes from user_tab_statistics where table_name='SALES1' order by 1,4;


insert into sales1(prod_id,cust_id,time_id,channel_id,promo_id,quantity_sold,amount_sold)
select prod_id,cust_id,time_id,channel_id,promo_id,quantity_sold*3,amount_sold*3 from sales;

commit;

select * from table(dbms_xplan.display_cursor(format=>'TYPICAL'));

select count(*) from sales1;

exec dbms_stats.flush_database_monitoring_info;

select nvl(partition_name,'global') partition_name,num_rows,blocks,notes from user_tab_statistics where table_name='SALES1' order by 1,4;

select count(*) from sales1 where quantity_sold>50;

select * from table(dbms_xplan.display_cursor(format=>'TYPICAL'));

清理环境:
drop table sh.sales1 purge;

--End of File--

Comments

Popular posts from this blog

SQL Monitor and SQL Quarantine