SlideShare a Scribd company logo
1 of 233
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Connor McDonald
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
2
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
3
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
4
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Stuff
youtube bit.ly/youtube-connor
blog bit.ly/blog-connor
twitter bit.ly/twitter-connor
400+ posts mainly on database & development
250 technical videos, new uploads every week
rants and raves on tech and the world :-)
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
etc...
facebook bit.ly/facebook-connor
linkedin bit.ly/linkedin-connor
instagram bit.ly/instagram-connor
slideshare bit.ly/slideshare-connor
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
https://asktom.oracle.com
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
8https://asktom.oracle.com/officehours
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
200 hours of free access (so far)
9
Cool stuff on 18c and 19c!
Connor McDonald
Database Advocate
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 11
why me ?
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 12
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 13
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 14
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 15
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 17
why you ?
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 18
19! 18!
18! 19!
19!
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
reality :-(
19
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 20
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 21
SQL> select * from v$version;
BANNER
----------------------------------------------------------
Oracle8i Enterprise Edition Release 8.1.7.4.0 - Production
PL/SQL Release 8.1.7.4.0 - Production
CORE 8.1.7.0.0 Production
TNS for HPUX: Version 8.1.7.4.0 - Production
NLSRTL Version 3.4.1.0.0 - Production
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 22
SQL> select * from v$version;
BANNER
----------------------------------------------------------
Oracle8i Enterprise Edition Release 8.1.7.4.0 - Production
PL/SQL Release 8.1.7.4.0 - Production
CORE 8.1.7.0.0 Production
TNS for HPUX: Version 8.1.7.4.0 - Production
NLSRTL Version 3.4.1.0.0 - Production
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 23
SQL> select * from v$version;
BANNER
----------------------------------------------------------
Oracle8i Enterprise Edition Release 8.1.7.4.0 - Production
PL/SQL Release 8.1.7.4.0 - Production
CORE 8.1.7.0.0 Production
TNS for HPUX: Version 8.1.7.4.0 - Production
NLSRTL Version 3.4.1.0.0 - Production
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
you still should be here
24
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 25
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 27
there's a lot in 18/19
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 28
get started right now
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 29
install nothing
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 30
https://cloud.oracle.com/tryit
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 31
install a little bit
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 32
https://tinyurl.com/ora18vm
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 33
install lots :-)
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 34
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 35
18c/19c install lots :-)
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 36
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 37
18c/19c install lots :-)
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 38
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 39
coming soon
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 40
install lots :-)
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 41
1) gold image service
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 42
2) read-only ORACLE_HOME
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 43
3) Oracle database in Docker
https://tinyurl.com/ora18docker
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 44
licensing
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 45
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 46
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 47
UNZIP INSTALL
RPM INSTALL
DOCKER
READ-ONLY
GOLD IMAGE
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 48
external tables
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ext_emp
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
SQL> create table ext_emp (
2 empno number(4),
3 ename varchar2(10),
4 job varchar2(9),
5 mgr number(4),
6 hiredate date,
7 sal number(7,2),
8 comm number(7,2),
9 deptno number(2)
10 )
11 organization external
12 ( type oracle_loader
13 default directory TMP
14 access parameters
15 ( records delimited by newline
16 fields terminated by ','
17 missing field values are null
18 ( empno,ename,job,mgr,hiredate,sal,comm,deptno )
19 )
20 location ('emp20161001.dat'));
Table created.
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ext_emp
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
SQL> select * from ext_emp;
select * from ext_emp
*
ERROR at line 1:
ORA-29913: error in executing ODCIEXTTABLEFETCH callout
ORA-30653: reject limit reached
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 53
easy fix
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
SQL> create table ext_emp (
2 empno number(4),
...
12 ( type oracle_loader
13 default directory TMP
14 access parameters
15 ( records delimited by newline
16 fields terminated by ','
17 missing field values are null
18 ( empno,ename,job,mgr,hiredate,sal,comm,deptno )
19 )
20 location ('emp20161001.dat'))
21 REJECT LIMIT UNLIMITED;
Table created.
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 55
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 56
quick revision 12.2
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 57
query time modification
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
SQL> select * from ext_emp
2 external modify ( reject limit unlimited );
EMPNO ENAME JOB MGR HIREDATE SAL
---------- ---------- --------- ---------- --------- ---------- ---
7499 ALLEN SALESMAN 7698 20-FEB-81 1600
7521 WARD SALESMAN 7698 22-FEB-81 1250
7566 JONES MANAGER 7839 02-APR-81 2975
...
7902 FORD ANALYST 7566 03-DEC-81 3000
7934 MILLER CLERK 7782 23-JAN-82 1300
13 rows selected.
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
SQL> select * from ext_emp
2 external modify ( location ('emp20161002.dat') );
EMPNO ENAME JOB MGR HIREDATE SAL
---------- ---------- --------- ---------- --------- ---------- ---
7902 FORD ANALYST 7566 03-DEC-81 3000
7934 MILLER CLERK 7782 23-JAN-82 1300
7566 JONES MANAGER 7839 02-APR-81 2975
...
7499 ALLEN SALESMAN 7698 20-FEB-81 1600
7521 WARD SALESMAN 7698 22-FEB-81 1250
8 rows selected.
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
select * from ext_tab external modify (
[ default directory ]
[ location ]
[ access parameters ]
[ reject limit ]
);
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 61
18c+
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 62
zero ddl option
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
SQL> select * from external (
2 empno number(4),
3 ename varchar2(10),
4 ...
12 ( type oracle_loader
13 default directory TMP
14 access parameters
15 ( records delimited by newline
16 fields terminated by ','
17 missing field values are null
18 ( empno,ename,job,mgr,...)
19 )
20 location ('emp20161001.dat')
21 );
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 64
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 65
global temporary tablesprivate
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 66
SQL server etc
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 67
read locking
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 68
SELECT empno, ename, job
INTO #HighPaidJobs
FROM emp
WHERE sal > 3000
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 69
migration to Oracle difficult
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 70
SQL> create private temporary table ORA$PTT_MY_TT
2 ( empno int , ename varchar2(20)) ;
Table created.
SQL> insert into ORA$PTT_MY_TT
2 select empno, ename
3 from scott.emp
4 where sal > 3000;
1 row created.
SQL> select * from ORA$PTT_MY_TT;
EMPNO ENAME
---------- --------------------
7839 KING
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 71
"um...looks the same as before"
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 72
SQL> commit;
Commit complete.
SQL> select * from ORA$PTT_MY_TT;
select * from ORA$PTT_MY_TT
*
ERROR at line 1:
ORA-00942: table or view does not exist
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 73
it's really temporary
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 74
SQL> create private temporary table ORA$PTT_MY_TT
2 ( empno int , ename varchar2(20)) ;
Table created.
SQL> select *
2 from user_tables
3 where table_name = 'ORA$PTT_MY_TT' ;
no rows selected
SQL> select *
2 from all_objects
3 where object_name = 'ORA$PTT_MY_TT' ;
no rows selected
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 75
SQL> create private temporary table ORA$PTT_MY_TT
2 ( empno , ename )
3 on commit preserve definition
4 as select 123, 'Larry' from dual;
SQL> select * from ORA$PTT_MY_TT;
EMPNO ENAME
---------- -----
123 Larry
SQL> commit;
SQL> select * from ORA$PTT_MY_TT;
EMPNO ENAME
---------- -----
123 Larry
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 76
it's really private
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 77
SQL> create private temporary table ORA$PTT_MY_TT
2 ( empno int ,
3 ename varchar2(20)) ;
Table created.
SQL> create private temporary table ORA$PTT_MY_TT
2 ( deptno int ,
3 dname varchar2(20),
4 bonus int,
5 logo blob) ;
Table created.
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 78
it's all in the name !
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 79
SQL> create private temporary table MY_TT ( x int ) ;
create private temporary table MY_TT ( x int )
*
ERROR at line 1:
ORA-00903: invalid table name
SQL> show parameter private
NAME TYPE VALUE
------------------------------- ----------- -----------
private_temp_table_prefix string ORA$PTT_
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 80
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 81
remember temporary undo?
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
SQL> insert into t values ('Hello','There');
insert into t values ('Hello','There')
*
ERROR at line 1:
ORA-16000: database open for read-only access
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 83
Active Data Guard
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
SQL> alter session set temp_undo_enabled=true;
Session altered.
SQL> create global temporary table GTT_REPORT_STAGING
2 ( ... );
SQL> insert into GTT_REPORT_STAGING
2 select ...
SQL> select * from GTT_REPORT_STAGING join FIN_RESULTS
2 ...
85
100%
% of people that
found this useful
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 86
19c
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 87
DML redirect
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 88
Standby Primary
SQL> insert into REPORTING_STAGING
2 select * from ...
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 89
bonus DataGuard
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 90
we've all done this :-)
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 91
Standby Primary
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 92
18c
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
RMAN> connect target sys/oracle@MY_STANDBY
RMAN> connect auxiliary sys/oracle@MY_PRIMARY
RMAN> recover database from service PRIMARY;
Starting recover at 12.10.2018 14:05:17
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=187 device type=DISK
...
...
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 94
bonus bonus DataGuard !
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
SQL> alter database force logging;
95
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 96
19c
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
SQL> alter database set standby nologging for data availability;
97
deferred commit
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
SQL> alter database set standby nologging for load performance;
98
deferred transmission
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 99
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 100
a nice form of murder :-)
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 101
aka, #1 reason for upgrading to 18c
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
SQL> insert into MY_TABLE
2 select *
3 from MY_HUGE_GREAT_FAT_TABLE;
102
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 103
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
SQL> insert into MY_TABLE
2 select *
3 from MY_HUGE_GREAT_FAT_TABLE
4 where LOAD_DATE > sysdate - 1;
104
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
SQL> alter system kill session '123,456' immediate
105
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 106
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 107
18c
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
SQL> alter system kill cancel sql '123,456';
108
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 109
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 110
speaking of "#1 reason"
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 111
#1 reason for upgrading to 19c
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
SQL> select deptno, ename
2 from emp
3 order by 1,2;
DEPTNO ENAME
---------- ----------
10 CLARK
10 KING
10 MILLER
20 ADAMS
20 FORD
20 JONES
20 SCOTT
20 SMITH
30 ALLEN
30 BLAKE
30 JAMES
30 MARTIN
30 TURNER
30 WARD
112
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
DEPTNO MEMBERS
---------- -------------------------------------
10 CLARK,KING,MILLER
20 SMITH,JONES,SCOTT,ADAMS,FORD
30 ALLEN,WARD,MARTIN,BLAKE,TURNER,JAMES
113
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
how we used to do it
114
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
SQL> select deptno , rtrim(ename,',') enames
2 from ( select deptno,ename,rn
3 from emp
4 model
5 partition by (deptno)
6 dimension by (
7 row_number() over
8 (partition by deptno order by ename) rn
9 )
10 measures (cast(ename as varchar2(40)) ename)
11 rules
12 ( ename[any]
13 order by rn desc = ename[cv()]||','||ename[cv()+1])
14 )
15 where rn = 1
16 order by deptno;
DEPTNO ENAMES
---------- ----------------------------------------
10 CLARK,KING,MILLER
20 ADAMS,FORD,JONES,SCOTT,SMITH
30 ALLEN,BLAKE,JAMES,MARTIN,TURNER,WARD
115
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
SQL> select deptno,
2 substr(max(sys_connect_by_path(ename, ',')), 2) members
3 from (select deptno, ename,
4 row_number ()
5 over (partition by deptno order by empno) rn
6 from emp)
7 start with rn = 1
8 connect by prior rn = rn - 1
9 and prior deptno = deptno
10 group by deptno
11 /
DEPTNO MEMBERS
---------- ---------------------------------------------------------
30 ALLEN,WARD,MARTIN,BLAKE,TURNER,JAMES
20 SMITH,JONES,SCOTT,ADAMS,FORD
10 CLARK,KING,MILLER
116
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
SQL> select deptno,
2 xmltransform
3 ( sys_xmlagg
4 ( sys_xmlgen(ename)
5 ),
6 xmltype
7 (
8 '<?xml version="1.0"?><xsl:stylesheet version="1.0"
9 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
10 <xsl:template match="/">
11 <xsl:for-each select="/ROWSET/ENAME">
12 <xsl:value-of select="text()"/>,</xsl:for-each>
13 </xsl:template>
14 </xsl:stylesheet>'
15 )
16 ).getstringval() members
17 from emp
18 group by deptno;
DEPTNO MEMBERS
---------- --------------------------------------------------------
10 CLARK,MILLER,KING,
20 SMITH,FORD,ADAMS,SCOTT,JONES,
30 ALLEN,JAMES,TURNER,BLAKE,MARTIN,WARD,
117
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
SQL> create or replace type string_agg_type as object
2 (
3 total varchar2(4000),
4
5 static function
6 ODCIAggregateInitialize(sctx IN OUT string_agg_type )
7 return number,
8
9 member function
10 ODCIAggregateIterate(self IN OUT string_agg_type ,
11 value IN varchar2 )
12 return number,
13
14 member function
15 ODCIAggregateTerminate(self IN string_agg_type,
16 returnValue OUT varchar2,
17 flags IN number)
18 return number,
19
20 member function
21 ODCIAggregateMerge(self IN OUT string_agg_type,
22 ctx2 IN string_agg_type)
23 return number
24 );
25 /
118
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
11g
119
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
SQL> select deptno,
2 listagg( ename, ',')
3 within group (order by empno) members
4 from emp
5 group by deptno;
DEPTNO MEMBERS
---------- -----------------------------------------
10 CLARK,KING,MILLER
20 SMITH,JONES,SCOTT,ADAMS,FORD
30 ALLEN,WARD,MARTIN,BLAKE,TURNER,JAMES
120
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
except
121
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
SQL> select deptno
2 listagg(job,',') within group ( order by job) as jobs
3 from scott.emp
4 group by deptno
5 order by 1;
DEPTNO JOBS
--------- --------------------------------------------------
10 CLERK,MANAGER,PRESIDENT
20 ANALYST,ANALYST,CLERK,CLERK,MANAGER
30 CLERK,MANAGER,SALESMAN,SALESMAN,SALESMAN,SALESMAN
122
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
SQL> select owner
2 listagg(object_type,',') within group
3 ( order by object_id ) as types
4 from all_ojects
5 group by owner
6 order by 1;
ERROR:
ORA-01499: result of string concatenation is too long
123
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
19c
124
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
SQL> select deptno
2 listagg(distinct job,',') within group ( order by job) as jobs
3 from scott.emp
4 group by deptno
5 order by 1;
DEPTNO JOBS
--------- --------------------------------------------------
10 CLERK,MANAGER,PRESIDENT
20 ANALYST,CLERK,MANAGER
30 CLERK,MANAGER,SALESMAN
125
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 126
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 127
back to #1 reason for upgrading to 19c
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 128
back to bad SQL
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 129
maybe murder won't help
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
130
BAD
SQL
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 131
bad SQL just keeps coming back...
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 132
19c
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 133
automatic quarantine of bad SQL
elapsed time
resource consumption
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 134
error on subsequent execution
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 135
1) alerts to administrator
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 136
or...
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 137
2) automated historical diagnosis/repair
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 138
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 139
maybe murder wasn't the right thing
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
SQL> insert into MY_TABLE
2 select *
3 from MY_HUGE_GREAT_FAT_TABLE
4 where LOAD_DATE > sysdate - 900;
140
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 141
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
SQL> insert into MY_TABLE
2 select *
3 from MY_HUGE_GREAT_FAT_TABLE w
4 where LOAD_DATE > sysdate - 900;
142
/*+ INDEX(W CUST_DATE_IX) */ *
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 143
18c
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
SQL> alter system set optimizer_ignore_hints = true
144
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 145
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 146
cool
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 147
maybe it was the opposite ?
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
SQL> insert into MY_TABLE
2 select *
3 from MY_HUGE_GREAT_FAT_TABLE
4 where LOAD_DATE > sysdate - 1/24;
148
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 149
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
SQL> insert into MY_TABLE
2 select *
3 from MY_HUGE_GREAT_FAT_TABLE
4 where LOAD_DATE > sysdate - 1/24;
150
need an index?
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 151
but what is best practice ?
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 152
1) monitor the SQL workload
AWR / Top SQL
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 153
2) consider indexes per SQL
leading columns
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 154
3) consolidate tables/columns
(a)
(a,b)
(a,b,c)
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 155
4) create nosegment/unusable
dictionary only
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 156
5) check "virtual" explain plan
cost/cardinality
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 157
6) create true index (as invisible)
no impact risk
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 158
7) test execute each SQL for benefit
response time/IO
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 159
8) decide on each index worth
"majority wins"
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 160
9) SPM quarantine the others
no regression
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 161
10) make new indexes visible
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 162
we're done!
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 163
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 164
go to step 1
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 166
19c
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 167
automatic indexes
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 168
we follow best practice
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 169
Capture
Identify
VerifyDecide
Monitor
Identify index
candidates based
on column usage
(SQL workload)
Create indexes
unusable, invisible
and evaluate new
execution plans
without parse costs
Rebuild indexes
that offer potential
benefit (status as
invisible). Test
execute each SQL
statement
Use SPM to ensure
no regression for
excluded SQL
statements. Mark
indexes as visible
Monitor all indexes
(automatic and
manual) for ongoing
usage and potential
removal
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 170
only need to set preferences
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 171
AUTO_INDEX_EXCLUDE_SCHEMA
AUTO_INDEX_REPORT_RETENTION
AUTO_INDEX_RETENTION_FOR_AUTO
AUTO_INDEX_RETENTION_FOR_MANUAL
AUTO_INDEX_DEFAULT_TABLESPACE
AUTO_INDEX_TEMP_TABLESPACE
AUTO_INDEX_MODE
AUTO_INDEX_SPACE_BUDGET
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 172
expect this to evolve over time
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 173
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 174
statistics
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 175
what most of us do
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 176
TIME
Gather
Stale
overnight
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 177
19c
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 178
Conventional
DML
Real-time
Statistics
Gathered Statistics
Lightweight
Statistics
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 179
real time statistics
DML driven
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 180
only "cheap" essential statistics
high/low values
row/column counts
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 181
lightweight rapid gather
resource manager
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 182
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 183
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 184
one row at a time....always
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 185
SQL> create table t (
2 x int,
3 y int,
4 z int,
5 constraint t_pk primary key ( x ) );
Table created.
SQL> set timing on
SQL> begin
2 for i in 1 .. 4000000 loop
3 insert into t values (i,i,i);
4 commit;
5 end loop;
6 end;
7 /
PL/SQL procedure successfully completed.
Elapsed: 00:05:33.53
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 186
array bind, direct load, etc
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 187
19c
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 188
write optimization
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 189
SQL> alter table T memoptimize for write;
Table altered.
SQL> begin
2 for i in 1 .. 4000000 loop
3 insert /*+ memoptimize_write */ into t values (i,i,i);
4 end loop;
5 end;
6 /
PL/SQL procedure successfully completed.
Elapsed: 00:00:38.99 no commit ?
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 190
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
maybe ...
191
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
... we didn't want to store it in Oracle
192
193
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
let's talk polyglot persistence
194
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 195
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 196
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 197
"I have to learn Hadoop
....and Spark
....and Hive
....and ?
....and ?
....and ?"
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 198
Big Data SQL
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 199
19c
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 200
hybrid partitioned table
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 201
Q4_2018Q3_2018Q2_2018Q1_2018Q4_2017Q3_2017Q2_2017Q1_2017Q4_2016
ORDERS
OBJECT STORAGE
TABLE PARTITIONED BY QUARTER
SQL HOT DATACOLD DATA
UPDATES
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 202
SQL> create table hybrid_sales
2 (
3 part_key varchar2(10) not null
4 ...
5 )
6 external partition attributes (
7 type oracle_loader
8 default directory sales_data
9 )
10 partition by list (part_key)
11 (partition sales_2015 values ('2015') external
12 location ('sales2015.txt'),
13 partition sales_2016 values ('2016') external
14 location ('sales2016.txt'),
15 partition sales_2017 values '2017'),
16 partition sales_2018 values '2018'),
17 );
Table created.
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 203
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 204
"Everything is not all write"
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 205
19c
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 206
memoptimize for read
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 207
SQL> create table t (
2 x int,
3 y int,
4 z int,
5 constraint t_pk primary key ( x ) );
Table created.
SQL> insert into t
2 select rownum, rownum, rownum
3 from dual
4 connect by level <= 100000;
100000 rows created.
SQL> exec dbms_stats.gather_table_stats('','T');
PL/SQL procedure successfully completed.
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 208
SQL> set autotrace traceonly explain
SQL> select /*+special*/ * from t where x = 10;
Execution Plan
----------------------------------------------------------
Plan hash value: 1303508680
------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |
------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 15 |
| 1 | TABLE ACCESS BY INDEX ROWID| T | 1 | 15 |
|* 2 | INDEX UNIQUE SCAN | T_PK | 1 | |
------------------------------------------------------------
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 209
SQL> set autotrace off
SQL> select sql_text, executions, buffer_gets
2 from v$sql
3 where sql_text like 'sel%special%';
SQL_TEXT EXECUTIONS BUFFER_GETS
------------------------------------------- ---------- -----------
select /*+special*/ * from t where x = 10 0 21
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 210
SQL> set autotrace on stat
SQL> select /*+special*/ * from t where x = 10;
X Y Z
---------- ---------- ----------
10 10 10
1 row selected.
Statistics
----------------------------------------------------
0 recursive calls
0 db block gets
3 consistent gets
0 physical reads
0 redo size
551 bytes sent via SQL*Net to client
612 bytes received via SQL*Net from client
1 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 211
SQL> set autotrace off
SQL> select sql_text, executions, buffer_gets
2 from v$sql
3 where sql_text like 'sel%special%';
SQL_TEXT EXECUTIONS BUFFER_GETS
------------------------------------------- ---------- -----------
select /*+special*/ * from t where x = 10 1 24
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 212
SQL> create table t (
2 x int,
3 y int,
4 z int,
5 constraint t_pk primary key ( x ) )
6 segment creation immediate memoptimize for read;
Table created.
SQL> insert into t ... [as before]
SQL> exec dbms_stats.gather_table_stats('','T');
PL/SQL procedure successfully completed.
SQL> exec dbms_memoptimize.populate('','T');
PL/SQL procedure successfully completed.
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 213
SQL> set autotrace traceonly explain
SQL> select /*+special*/ * from t where x = 10;
Execution Plan
----------------------------------------------------------
Plan hash value: 1303508680
-----------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |
-----------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 15 |
| 1 | TABLE ACCESS BY INDEX ROWID READ OPTIM| T | 1 | 15 |
|* 2 | INDEX UNIQUE SCAN READ OPTIM | T_PK | 1 | |
-----------------------------------------------------------------------
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 214
SQL> set autotrace on stat
SQL> select /*+special*/ * from t where x = 10;
X Y Z
---------- ---------- ----------
10 10 10
1 row selected.
Statistics
----------------------------------------------------
0 recursive calls
0 db block gets
0 consistent gets
0 physical reads
0 redo size
551 bytes sent via SQL*Net to client
612 bytes received via SQL*Net from client
1 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 215
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
THIS
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
IS
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
THE
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
BIG
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
ONE
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
18c XE
221
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 222
100% free
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 223
We grant you a nonexclusive, nontransferable limited license to use the programs for:
(a) purposes of developing, prototyping and running your applications for your own
internal data processing operations;
(b) you may also distribute the programs with your applications;
(c) you may use the programs to provide third party demonstrations and training; and
d) you may copy and distribute the programs to your licensees provided that each such
licensee agrees to the terms of this Agreement
https://www.oracle.com/technetwork/licenses/db18c-express-license-5137264.html
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 224
12 GB of user data
2 GB of database RAM
2 CPU threads
3 Pluggable Databases
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 225
"Is it feature hobbled?"
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 226
Oracle Multitenant
SQLJ
Online index rebuild
Online table reorg
Online table redefinition
Trial recovery
Fast start recovery
Flashback table
Flashback query
Flashback database
Advanced Queueing
Network Compression
Client side result cache
Server side result cache
Adaptive plans
In-memory column store
In-memory aggregation
Attribute Clustering
Column encryption
Tablespace encryption
Advanced Security
Database Vault
Label Security
AD users
Privilege Analysis
Real Application Security
Data Redaction
Virtual Private Database
Spatial
Graph
Partitioning
Advanced Analytics
Advanced Compression
Advanced Index Compression
Transportable Tablespace
Query Rewrite
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 227
EE plus most extra cost options
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 228
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 229
wrap up
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 230
there's a lot in 18/19
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 231
lots not covered today
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 232
but ... new feature model
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Stay in touch!
youtube bit.ly/youtube-connor
blog bit.ly/blog-connor
twitter bit.ly/twitter-connor

More Related Content

What's hot

ITOUG 2019 - 18c, 19c features
ITOUG 2019 - 18c, 19c featuresITOUG 2019 - 18c, 19c features
ITOUG 2019 - 18c, 19c featuresConnor McDonald
 
AIOUG - Groundbreakers - Jul 2019 - 19 Troubleshooting Tips and Tricks for Da...
AIOUG - Groundbreakers - Jul 2019 - 19 Troubleshooting Tips and Tricks for Da...AIOUG - Groundbreakers - Jul 2019 - 19 Troubleshooting Tips and Tricks for Da...
AIOUG - Groundbreakers - Jul 2019 - 19 Troubleshooting Tips and Tricks for Da...Sandesh Rao
 
Perth APAC Groundbreakers tour - The Autonomous Database
Perth APAC Groundbreakers tour - The Autonomous DatabasePerth APAC Groundbreakers tour - The Autonomous Database
Perth APAC Groundbreakers tour - The Autonomous DatabaseConnor McDonald
 
#dbhouseparty - Real World Problem Solving with SQL
#dbhouseparty - Real World Problem Solving with SQL#dbhouseparty - Real World Problem Solving with SQL
#dbhouseparty - Real World Problem Solving with SQLTammy Bednar
 
EXAchk for Exadata Presentation
EXAchk for Exadata PresentationEXAchk for Exadata Presentation
EXAchk for Exadata PresentationSandesh Rao
 
AUSOUG - Introducing New AI Ops Innovations in Oracle 19c Autonomous Health F...
AUSOUG - Introducing New AI Ops Innovations in Oracle 19c Autonomous Health F...AUSOUG - Introducing New AI Ops Innovations in Oracle 19c Autonomous Health F...
AUSOUG - Introducing New AI Ops Innovations in Oracle 19c Autonomous Health F...Sandesh Rao
 
Whats new in oracle trace file analyzer 18.4.1
Whats new in oracle trace file analyzer 18.4.1Whats new in oracle trace file analyzer 18.4.1
Whats new in oracle trace file analyzer 18.4.1Gareth Chapman
 
What's new in Oracle ORAchk & EXAchk 19.2
What's new in Oracle ORAchk & EXAchk 19.2What's new in Oracle ORAchk & EXAchk 19.2
What's new in Oracle ORAchk & EXAchk 19.2Sandesh Rao
 
What's new in oracle trace file analyzer 18.2.0
What's new in oracle trace file analyzer 18.2.0What's new in oracle trace file analyzer 18.2.0
What's new in oracle trace file analyzer 18.2.0Sandesh Rao
 
Oracle Autonomous Health Service- For Protecting Your On-Premise Databases- F...
Oracle Autonomous Health Service- For Protecting Your On-Premise Databases- F...Oracle Autonomous Health Service- For Protecting Your On-Premise Databases- F...
Oracle Autonomous Health Service- For Protecting Your On-Premise Databases- F...Sandesh Rao
 
Whats new in oracle trace file analyzer 18.3.0
Whats new in oracle trace file analyzer 18.3.0Whats new in oracle trace file analyzer 18.3.0
Whats new in oracle trace file analyzer 18.3.0Gareth Chapman
 
Whats new in oracle trace file analyzer 19.2
Whats new in oracle trace file analyzer 19.2Whats new in oracle trace file analyzer 19.2
Whats new in oracle trace file analyzer 19.2Sandesh Rao
 
What's new in Oracle and Exachk version 18.4.0
What's new in Oracle and Exachk version 18.4.0What's new in Oracle and Exachk version 18.4.0
What's new in Oracle and Exachk version 18.4.0Sandesh Rao
 
Troubleshooting Tips and Tricks for Database 19c - EMEA Tour Oct 2019
Troubleshooting Tips and Tricks for Database 19c - EMEA Tour  Oct 2019Troubleshooting Tips and Tricks for Database 19c - EMEA Tour  Oct 2019
Troubleshooting Tips and Tricks for Database 19c - EMEA Tour Oct 2019Sandesh Rao
 
Oracle Trace File Analyzer Overview
Oracle Trace File Analyzer OverviewOracle Trace File Analyzer Overview
Oracle Trace File Analyzer OverviewGareth Chapman
 
Whats new in oracle orachk & exachk 18.4.0
Whats new in oracle orachk & exachk 18.4.0Whats new in oracle orachk & exachk 18.4.0
Whats new in oracle orachk & exachk 18.4.0Gareth Chapman
 
15 Troubleshooting Tips and Tricks for database 21c - OGBEMEA KSAOUG
15 Troubleshooting Tips and Tricks for database 21c - OGBEMEA KSAOUG15 Troubleshooting Tips and Tricks for database 21c - OGBEMEA KSAOUG
15 Troubleshooting Tips and Tricks for database 21c - OGBEMEA KSAOUGSandesh Rao
 
TFA_Whats_New_in version 12.1.2.8.4
TFA_Whats_New_in version 12.1.2.8.4TFA_Whats_New_in version 12.1.2.8.4
TFA_Whats_New_in version 12.1.2.8.4Sandesh Rao
 

What's hot (18)

ITOUG 2019 - 18c, 19c features
ITOUG 2019 - 18c, 19c featuresITOUG 2019 - 18c, 19c features
ITOUG 2019 - 18c, 19c features
 
AIOUG - Groundbreakers - Jul 2019 - 19 Troubleshooting Tips and Tricks for Da...
AIOUG - Groundbreakers - Jul 2019 - 19 Troubleshooting Tips and Tricks for Da...AIOUG - Groundbreakers - Jul 2019 - 19 Troubleshooting Tips and Tricks for Da...
AIOUG - Groundbreakers - Jul 2019 - 19 Troubleshooting Tips and Tricks for Da...
 
Perth APAC Groundbreakers tour - The Autonomous Database
Perth APAC Groundbreakers tour - The Autonomous DatabasePerth APAC Groundbreakers tour - The Autonomous Database
Perth APAC Groundbreakers tour - The Autonomous Database
 
#dbhouseparty - Real World Problem Solving with SQL
#dbhouseparty - Real World Problem Solving with SQL#dbhouseparty - Real World Problem Solving with SQL
#dbhouseparty - Real World Problem Solving with SQL
 
EXAchk for Exadata Presentation
EXAchk for Exadata PresentationEXAchk for Exadata Presentation
EXAchk for Exadata Presentation
 
AUSOUG - Introducing New AI Ops Innovations in Oracle 19c Autonomous Health F...
AUSOUG - Introducing New AI Ops Innovations in Oracle 19c Autonomous Health F...AUSOUG - Introducing New AI Ops Innovations in Oracle 19c Autonomous Health F...
AUSOUG - Introducing New AI Ops Innovations in Oracle 19c Autonomous Health F...
 
Whats new in oracle trace file analyzer 18.4.1
Whats new in oracle trace file analyzer 18.4.1Whats new in oracle trace file analyzer 18.4.1
Whats new in oracle trace file analyzer 18.4.1
 
What's new in Oracle ORAchk & EXAchk 19.2
What's new in Oracle ORAchk & EXAchk 19.2What's new in Oracle ORAchk & EXAchk 19.2
What's new in Oracle ORAchk & EXAchk 19.2
 
What's new in oracle trace file analyzer 18.2.0
What's new in oracle trace file analyzer 18.2.0What's new in oracle trace file analyzer 18.2.0
What's new in oracle trace file analyzer 18.2.0
 
Oracle Autonomous Health Service- For Protecting Your On-Premise Databases- F...
Oracle Autonomous Health Service- For Protecting Your On-Premise Databases- F...Oracle Autonomous Health Service- For Protecting Your On-Premise Databases- F...
Oracle Autonomous Health Service- For Protecting Your On-Premise Databases- F...
 
Whats new in oracle trace file analyzer 18.3.0
Whats new in oracle trace file analyzer 18.3.0Whats new in oracle trace file analyzer 18.3.0
Whats new in oracle trace file analyzer 18.3.0
 
Whats new in oracle trace file analyzer 19.2
Whats new in oracle trace file analyzer 19.2Whats new in oracle trace file analyzer 19.2
Whats new in oracle trace file analyzer 19.2
 
What's new in Oracle and Exachk version 18.4.0
What's new in Oracle and Exachk version 18.4.0What's new in Oracle and Exachk version 18.4.0
What's new in Oracle and Exachk version 18.4.0
 
Troubleshooting Tips and Tricks for Database 19c - EMEA Tour Oct 2019
Troubleshooting Tips and Tricks for Database 19c - EMEA Tour  Oct 2019Troubleshooting Tips and Tricks for Database 19c - EMEA Tour  Oct 2019
Troubleshooting Tips and Tricks for Database 19c - EMEA Tour Oct 2019
 
Oracle Trace File Analyzer Overview
Oracle Trace File Analyzer OverviewOracle Trace File Analyzer Overview
Oracle Trace File Analyzer Overview
 
Whats new in oracle orachk & exachk 18.4.0
Whats new in oracle orachk & exachk 18.4.0Whats new in oracle orachk & exachk 18.4.0
Whats new in oracle orachk & exachk 18.4.0
 
15 Troubleshooting Tips and Tricks for database 21c - OGBEMEA KSAOUG
15 Troubleshooting Tips and Tricks for database 21c - OGBEMEA KSAOUG15 Troubleshooting Tips and Tricks for database 21c - OGBEMEA KSAOUG
15 Troubleshooting Tips and Tricks for database 21c - OGBEMEA KSAOUG
 
TFA_Whats_New_in version 12.1.2.8.4
TFA_Whats_New_in version 12.1.2.8.4TFA_Whats_New_in version 12.1.2.8.4
TFA_Whats_New_in version 12.1.2.8.4
 

Similar to 18c and 19c features for DBAs

Perth APAC Groundbreakers tour - 18c features
Perth APAC Groundbreakers tour - 18c featuresPerth APAC Groundbreakers tour - 18c features
Perth APAC Groundbreakers tour - 18c featuresConnor McDonald
 
OpenWorld 2018 - Pagination
OpenWorld 2018 - PaginationOpenWorld 2018 - Pagination
OpenWorld 2018 - PaginationConnor McDonald
 
OpenWorld 2018 - 20 years of hints and tips
OpenWorld 2018 - 20 years of hints and tipsOpenWorld 2018 - 20 years of hints and tips
OpenWorld 2018 - 20 years of hints and tipsConnor McDonald
 
Wellington APAC Groundbreakers tour - Upgrading to the 12c Optimizer
Wellington APAC Groundbreakers tour - Upgrading to the 12c OptimizerWellington APAC Groundbreakers tour - Upgrading to the 12c Optimizer
Wellington APAC Groundbreakers tour - Upgrading to the 12c OptimizerConnor McDonald
 
OpenWorld 2018 - SQL Tuning in 20 mins
OpenWorld 2018 - SQL Tuning in 20 minsOpenWorld 2018 - SQL Tuning in 20 mins
OpenWorld 2018 - SQL Tuning in 20 minsConnor McDonald
 
Melbourne Groundbreakers Tour - Upgrading without risk
Melbourne Groundbreakers Tour - Upgrading without riskMelbourne Groundbreakers Tour - Upgrading without risk
Melbourne Groundbreakers Tour - Upgrading without riskConnor McDonald
 
Latin America Tour 2019 - pattern matching
Latin America Tour 2019 - pattern matchingLatin America Tour 2019 - pattern matching
Latin America Tour 2019 - pattern matchingConnor McDonald
 
Kscope19 - Flashback: Good for Developers as well as DBAs
Kscope19 - Flashback: Good for Developers as well as DBAsKscope19 - Flashback: Good for Developers as well as DBAs
Kscope19 - Flashback: Good for Developers as well as DBAsConnor McDonald
 
APEX Connect 2019 - successful application development
APEX Connect 2019 - successful application developmentAPEX Connect 2019 - successful application development
APEX Connect 2019 - successful application developmentConnor McDonald
 
ILOUG 2019 - Autonomous, what does it mean for DBAs
ILOUG 2019 - Autonomous, what does it mean for DBAsILOUG 2019 - Autonomous, what does it mean for DBAs
ILOUG 2019 - Autonomous, what does it mean for DBAsConnor McDonald
 
APEX Connect 2019 - SQL Tuning 101
APEX Connect 2019 - SQL Tuning 101APEX Connect 2019 - SQL Tuning 101
APEX Connect 2019 - SQL Tuning 101Connor McDonald
 
Pattern Matching with SQL - APEX World Rotterdam 2019
Pattern Matching with SQL - APEX World Rotterdam 2019Pattern Matching with SQL - APEX World Rotterdam 2019
Pattern Matching with SQL - APEX World Rotterdam 2019Connor McDonald
 
Latin America tour 2019 - Flashback
Latin America tour 2019 -  FlashbackLatin America tour 2019 -  Flashback
Latin America tour 2019 - FlashbackConnor McDonald
 
“Quantum” Performance Effects: beyond the Core
“Quantum” Performance Effects: beyond the Core“Quantum” Performance Effects: beyond the Core
“Quantum” Performance Effects: beyond the CoreC4Media
 
Five more things about Oracle SQL and PLSQL
Five more things about Oracle SQL and PLSQLFive more things about Oracle SQL and PLSQL
Five more things about Oracle SQL and PLSQLConnor McDonald
 
Troubleshooting Ecommerce Performance
 Troubleshooting Ecommerce Performance Troubleshooting Ecommerce Performance
Troubleshooting Ecommerce PerformanceDiego Cardozo
 
MySQL InnoDB Cluster and Group Replication in a nutshell hands-on tutorial
MySQL InnoDB Cluster and Group Replication in a nutshell  hands-on tutorialMySQL InnoDB Cluster and Group Replication in a nutshell  hands-on tutorial
MySQL InnoDB Cluster and Group Replication in a nutshell hands-on tutorialFrederic Descamps
 
Diagnose Your Microservices
Diagnose Your MicroservicesDiagnose Your Microservices
Diagnose Your MicroservicesMarcus Hirt
 
AMIS Oracle OpenWorld & CodeOne Review - Pillar 1 - Data (5 november 2018)
AMIS Oracle OpenWorld & CodeOne Review - Pillar 1 - Data (5 november 2018)AMIS Oracle OpenWorld & CodeOne Review - Pillar 1 - Data (5 november 2018)
AMIS Oracle OpenWorld & CodeOne Review - Pillar 1 - Data (5 november 2018)Lucas Jellema
 

Similar to 18c and 19c features for DBAs (20)

Perth APAC Groundbreakers tour - 18c features
Perth APAC Groundbreakers tour - 18c featuresPerth APAC Groundbreakers tour - 18c features
Perth APAC Groundbreakers tour - 18c features
 
OpenWorld 2018 - Pagination
OpenWorld 2018 - PaginationOpenWorld 2018 - Pagination
OpenWorld 2018 - Pagination
 
OpenWorld 2018 - 20 years of hints and tips
OpenWorld 2018 - 20 years of hints and tipsOpenWorld 2018 - 20 years of hints and tips
OpenWorld 2018 - 20 years of hints and tips
 
Wellington APAC Groundbreakers tour - Upgrading to the 12c Optimizer
Wellington APAC Groundbreakers tour - Upgrading to the 12c OptimizerWellington APAC Groundbreakers tour - Upgrading to the 12c Optimizer
Wellington APAC Groundbreakers tour - Upgrading to the 12c Optimizer
 
OpenWorld 2018 - SQL Tuning in 20 mins
OpenWorld 2018 - SQL Tuning in 20 minsOpenWorld 2018 - SQL Tuning in 20 mins
OpenWorld 2018 - SQL Tuning in 20 mins
 
Melbourne Groundbreakers Tour - Upgrading without risk
Melbourne Groundbreakers Tour - Upgrading without riskMelbourne Groundbreakers Tour - Upgrading without risk
Melbourne Groundbreakers Tour - Upgrading without risk
 
Latin America Tour 2019 - pattern matching
Latin America Tour 2019 - pattern matchingLatin America Tour 2019 - pattern matching
Latin America Tour 2019 - pattern matching
 
Kscope19 - Flashback: Good for Developers as well as DBAs
Kscope19 - Flashback: Good for Developers as well as DBAsKscope19 - Flashback: Good for Developers as well as DBAs
Kscope19 - Flashback: Good for Developers as well as DBAs
 
APEX Connect 2019 - successful application development
APEX Connect 2019 - successful application developmentAPEX Connect 2019 - successful application development
APEX Connect 2019 - successful application development
 
ILOUG 2019 - Autonomous, what does it mean for DBAs
ILOUG 2019 - Autonomous, what does it mean for DBAsILOUG 2019 - Autonomous, what does it mean for DBAs
ILOUG 2019 - Autonomous, what does it mean for DBAs
 
APEX Connect 2019 - SQL Tuning 101
APEX Connect 2019 - SQL Tuning 101APEX Connect 2019 - SQL Tuning 101
APEX Connect 2019 - SQL Tuning 101
 
Pattern Matching with SQL - APEX World Rotterdam 2019
Pattern Matching with SQL - APEX World Rotterdam 2019Pattern Matching with SQL - APEX World Rotterdam 2019
Pattern Matching with SQL - APEX World Rotterdam 2019
 
Latin America tour 2019 - Flashback
Latin America tour 2019 -  FlashbackLatin America tour 2019 -  Flashback
Latin America tour 2019 - Flashback
 
“Quantum” Performance Effects: beyond the Core
“Quantum” Performance Effects: beyond the Core“Quantum” Performance Effects: beyond the Core
“Quantum” Performance Effects: beyond the Core
 
Five more things about Oracle SQL and PLSQL
Five more things about Oracle SQL and PLSQLFive more things about Oracle SQL and PLSQL
Five more things about Oracle SQL and PLSQL
 
Troubleshooting Ecommerce Performance
 Troubleshooting Ecommerce Performance Troubleshooting Ecommerce Performance
Troubleshooting Ecommerce Performance
 
MySQL InnoDB Cluster and Group Replication in a nutshell hands-on tutorial
MySQL InnoDB Cluster and Group Replication in a nutshell  hands-on tutorialMySQL InnoDB Cluster and Group Replication in a nutshell  hands-on tutorial
MySQL InnoDB Cluster and Group Replication in a nutshell hands-on tutorial
 
Diagnose Your Microservices
Diagnose Your MicroservicesDiagnose Your Microservices
Diagnose Your Microservices
 
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Data
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: DataAMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Data
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Data
 
AMIS Oracle OpenWorld & CodeOne Review - Pillar 1 - Data (5 november 2018)
AMIS Oracle OpenWorld & CodeOne Review - Pillar 1 - Data (5 november 2018)AMIS Oracle OpenWorld & CodeOne Review - Pillar 1 - Data (5 november 2018)
AMIS Oracle OpenWorld & CodeOne Review - Pillar 1 - Data (5 november 2018)
 

More from Connor McDonald

Sangam 19 - PLSQL still the coolest
Sangam 19 - PLSQL still the coolestSangam 19 - PLSQL still the coolest
Sangam 19 - PLSQL still the coolestConnor McDonald
 
Sangam 19 - Analytic SQL
Sangam 19 - Analytic SQLSangam 19 - Analytic SQL
Sangam 19 - Analytic SQLConnor McDonald
 
UKOUG - 25 years of hints and tips
UKOUG - 25 years of hints and tipsUKOUG - 25 years of hints and tips
UKOUG - 25 years of hints and tipsConnor McDonald
 
Sangam 19 - Successful Applications on Autonomous
Sangam 19 - Successful Applications on AutonomousSangam 19 - Successful Applications on Autonomous
Sangam 19 - Successful Applications on AutonomousConnor McDonald
 
Sangam 2019 - The Latest Features
Sangam 2019 - The Latest FeaturesSangam 2019 - The Latest Features
Sangam 2019 - The Latest FeaturesConnor McDonald
 
UKOUG 2019 - SQL features
UKOUG 2019 - SQL featuresUKOUG 2019 - SQL features
UKOUG 2019 - SQL featuresConnor McDonald
 
APEX tour 2019 - successful development with autonomous
APEX tour 2019 - successful development with autonomousAPEX tour 2019 - successful development with autonomous
APEX tour 2019 - successful development with autonomousConnor McDonald
 
APAC Groundbreakers 2019 - Perth/Melbourne
APAC Groundbreakers 2019 - Perth/Melbourne APAC Groundbreakers 2019 - Perth/Melbourne
APAC Groundbreakers 2019 - Perth/Melbourne Connor McDonald
 
OOW19 - Flashback, not just for DBAs
OOW19 - Flashback, not just for DBAsOOW19 - Flashback, not just for DBAs
OOW19 - Flashback, not just for DBAsConnor McDonald
 
OOW19 - Read consistency
OOW19 - Read consistencyOOW19 - Read consistency
OOW19 - Read consistencyConnor McDonald
 
OOW19 - Slower and less secure applications
OOW19 - Slower and less secure applicationsOOW19 - Slower and less secure applications
OOW19 - Slower and less secure applicationsConnor McDonald
 
OOW19 - Killing database sessions
OOW19 - Killing database sessionsOOW19 - Killing database sessions
OOW19 - Killing database sessionsConnor McDonald
 
OOW19 - Ten Amazing SQL features
OOW19 - Ten Amazing SQL featuresOOW19 - Ten Amazing SQL features
OOW19 - Ten Amazing SQL featuresConnor McDonald
 
Latin America Tour 2019 - 10 great sql features
Latin America Tour 2019  - 10 great sql featuresLatin America Tour 2019  - 10 great sql features
Latin America Tour 2019 - 10 great sql featuresConnor McDonald
 
OG Yatra - upgrading to the new 12c+ optimizer
OG Yatra - upgrading to the new 12c+ optimizerOG Yatra - upgrading to the new 12c+ optimizer
OG Yatra - upgrading to the new 12c+ optimizerConnor McDonald
 
OG Yatra - 25 years of hints and tips
OG Yatra - 25 years of hints and tipsOG Yatra - 25 years of hints and tips
OG Yatra - 25 years of hints and tipsConnor McDonald
 
OG Yatra - Flashback, not just for developers
OG Yatra - Flashback, not just for developersOG Yatra - Flashback, not just for developers
OG Yatra - Flashback, not just for developersConnor McDonald
 
Kscope19 - Understanding the basics of SQL processing
Kscope19 - Understanding the basics of SQL processingKscope19 - Understanding the basics of SQL processing
Kscope19 - Understanding the basics of SQL processingConnor McDonald
 

More from Connor McDonald (20)

Flashback ITOUG
Flashback ITOUGFlashback ITOUG
Flashback ITOUG
 
Sangam 19 - PLSQL still the coolest
Sangam 19 - PLSQL still the coolestSangam 19 - PLSQL still the coolest
Sangam 19 - PLSQL still the coolest
 
Sangam 19 - Analytic SQL
Sangam 19 - Analytic SQLSangam 19 - Analytic SQL
Sangam 19 - Analytic SQL
 
UKOUG - 25 years of hints and tips
UKOUG - 25 years of hints and tipsUKOUG - 25 years of hints and tips
UKOUG - 25 years of hints and tips
 
Sangam 19 - Successful Applications on Autonomous
Sangam 19 - Successful Applications on AutonomousSangam 19 - Successful Applications on Autonomous
Sangam 19 - Successful Applications on Autonomous
 
Sangam 2019 - The Latest Features
Sangam 2019 - The Latest FeaturesSangam 2019 - The Latest Features
Sangam 2019 - The Latest Features
 
UKOUG 2019 - SQL features
UKOUG 2019 - SQL featuresUKOUG 2019 - SQL features
UKOUG 2019 - SQL features
 
APEX tour 2019 - successful development with autonomous
APEX tour 2019 - successful development with autonomousAPEX tour 2019 - successful development with autonomous
APEX tour 2019 - successful development with autonomous
 
APAC Groundbreakers 2019 - Perth/Melbourne
APAC Groundbreakers 2019 - Perth/Melbourne APAC Groundbreakers 2019 - Perth/Melbourne
APAC Groundbreakers 2019 - Perth/Melbourne
 
OOW19 - Flashback, not just for DBAs
OOW19 - Flashback, not just for DBAsOOW19 - Flashback, not just for DBAs
OOW19 - Flashback, not just for DBAs
 
OOW19 - Read consistency
OOW19 - Read consistencyOOW19 - Read consistency
OOW19 - Read consistency
 
OOW19 - Slower and less secure applications
OOW19 - Slower and less secure applicationsOOW19 - Slower and less secure applications
OOW19 - Slower and less secure applications
 
OOW19 - Killing database sessions
OOW19 - Killing database sessionsOOW19 - Killing database sessions
OOW19 - Killing database sessions
 
OOW19 - Ten Amazing SQL features
OOW19 - Ten Amazing SQL featuresOOW19 - Ten Amazing SQL features
OOW19 - Ten Amazing SQL features
 
Latin America Tour 2019 - 10 great sql features
Latin America Tour 2019  - 10 great sql featuresLatin America Tour 2019  - 10 great sql features
Latin America Tour 2019 - 10 great sql features
 
ANSI vs Oracle language
ANSI vs Oracle languageANSI vs Oracle language
ANSI vs Oracle language
 
OG Yatra - upgrading to the new 12c+ optimizer
OG Yatra - upgrading to the new 12c+ optimizerOG Yatra - upgrading to the new 12c+ optimizer
OG Yatra - upgrading to the new 12c+ optimizer
 
OG Yatra - 25 years of hints and tips
OG Yatra - 25 years of hints and tipsOG Yatra - 25 years of hints and tips
OG Yatra - 25 years of hints and tips
 
OG Yatra - Flashback, not just for developers
OG Yatra - Flashback, not just for developersOG Yatra - Flashback, not just for developers
OG Yatra - Flashback, not just for developers
 
Kscope19 - Understanding the basics of SQL processing
Kscope19 - Understanding the basics of SQL processingKscope19 - Understanding the basics of SQL processing
Kscope19 - Understanding the basics of SQL processing
 

Recently uploaded

Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 

Recently uploaded (20)

Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 

18c and 19c features for DBAs

  • 1. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Connor McDonald
  • 2. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 2
  • 3. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 3
  • 4. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 4
  • 5. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Stuff youtube bit.ly/youtube-connor blog bit.ly/blog-connor twitter bit.ly/twitter-connor 400+ posts mainly on database & development 250 technical videos, new uploads every week rants and raves on tech and the world :-)
  • 6. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. etc... facebook bit.ly/facebook-connor linkedin bit.ly/linkedin-connor instagram bit.ly/instagram-connor slideshare bit.ly/slideshare-connor
  • 7. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | https://asktom.oracle.com
  • 8. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 8https://asktom.oracle.com/officehours
  • 9. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 200 hours of free access (so far) 9
  • 10. Cool stuff on 18c and 19c! Connor McDonald Database Advocate
  • 11. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 11 why me ?
  • 12. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 12
  • 13. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 13
  • 14. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 14
  • 15. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 15
  • 16. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
  • 17. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 17 why you ?
  • 18. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 18 19! 18! 18! 19! 19!
  • 19. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | reality :-( 19
  • 20. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 20
  • 21. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 21 SQL> select * from v$version; BANNER ---------------------------------------------------------- Oracle8i Enterprise Edition Release 8.1.7.4.0 - Production PL/SQL Release 8.1.7.4.0 - Production CORE 8.1.7.0.0 Production TNS for HPUX: Version 8.1.7.4.0 - Production NLSRTL Version 3.4.1.0.0 - Production
  • 22. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 22 SQL> select * from v$version; BANNER ---------------------------------------------------------- Oracle8i Enterprise Edition Release 8.1.7.4.0 - Production PL/SQL Release 8.1.7.4.0 - Production CORE 8.1.7.0.0 Production TNS for HPUX: Version 8.1.7.4.0 - Production NLSRTL Version 3.4.1.0.0 - Production
  • 23. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 23 SQL> select * from v$version; BANNER ---------------------------------------------------------- Oracle8i Enterprise Edition Release 8.1.7.4.0 - Production PL/SQL Release 8.1.7.4.0 - Production CORE 8.1.7.0.0 Production TNS for HPUX: Version 8.1.7.4.0 - Production NLSRTL Version 3.4.1.0.0 - Production
  • 24. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | you still should be here 24
  • 25. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 25
  • 26. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
  • 27. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 27 there's a lot in 18/19
  • 28. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 28 get started right now
  • 29. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 29 install nothing
  • 30. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 30 https://cloud.oracle.com/tryit
  • 31. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 31 install a little bit
  • 32. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 32 https://tinyurl.com/ora18vm
  • 33. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 33 install lots :-)
  • 34. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 34 http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
  • 35. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 35 18c/19c install lots :-)
  • 36. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 36
  • 37. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 37 18c/19c install lots :-)
  • 38. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 38
  • 39. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 39 coming soon
  • 40. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 40 install lots :-)
  • 41. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 41 1) gold image service
  • 42. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 42 2) read-only ORACLE_HOME
  • 43. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 43 3) Oracle database in Docker https://tinyurl.com/ora18docker
  • 44. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 44 licensing
  • 45. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 45
  • 46. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 46
  • 47. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 47 UNZIP INSTALL RPM INSTALL DOCKER READ-ONLY GOLD IMAGE
  • 48. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 48 external tables
  • 49. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ext_emp
  • 50. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | SQL> create table ext_emp ( 2 empno number(4), 3 ename varchar2(10), 4 job varchar2(9), 5 mgr number(4), 6 hiredate date, 7 sal number(7,2), 8 comm number(7,2), 9 deptno number(2) 10 ) 11 organization external 12 ( type oracle_loader 13 default directory TMP 14 access parameters 15 ( records delimited by newline 16 fields terminated by ',' 17 missing field values are null 18 ( empno,ename,job,mgr,hiredate,sal,comm,deptno ) 19 ) 20 location ('emp20161001.dat')); Table created.
  • 51. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ext_emp
  • 52. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | SQL> select * from ext_emp; select * from ext_emp * ERROR at line 1: ORA-29913: error in executing ODCIEXTTABLEFETCH callout ORA-30653: reject limit reached
  • 53. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 53 easy fix
  • 54. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | SQL> create table ext_emp ( 2 empno number(4), ... 12 ( type oracle_loader 13 default directory TMP 14 access parameters 15 ( records delimited by newline 16 fields terminated by ',' 17 missing field values are null 18 ( empno,ename,job,mgr,hiredate,sal,comm,deptno ) 19 ) 20 location ('emp20161001.dat')) 21 REJECT LIMIT UNLIMITED; Table created.
  • 55. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 55
  • 56. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 56 quick revision 12.2
  • 57. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 57 query time modification
  • 58. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | SQL> select * from ext_emp 2 external modify ( reject limit unlimited ); EMPNO ENAME JOB MGR HIREDATE SAL ---------- ---------- --------- ---------- --------- ---------- --- 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 7521 WARD SALESMAN 7698 22-FEB-81 1250 7566 JONES MANAGER 7839 02-APR-81 2975 ... 7902 FORD ANALYST 7566 03-DEC-81 3000 7934 MILLER CLERK 7782 23-JAN-82 1300 13 rows selected.
  • 59. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | SQL> select * from ext_emp 2 external modify ( location ('emp20161002.dat') ); EMPNO ENAME JOB MGR HIREDATE SAL ---------- ---------- --------- ---------- --------- ---------- --- 7902 FORD ANALYST 7566 03-DEC-81 3000 7934 MILLER CLERK 7782 23-JAN-82 1300 7566 JONES MANAGER 7839 02-APR-81 2975 ... 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 7521 WARD SALESMAN 7698 22-FEB-81 1250 8 rows selected.
  • 60. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | select * from ext_tab external modify ( [ default directory ] [ location ] [ access parameters ] [ reject limit ] );
  • 61. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 61 18c+
  • 62. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 62 zero ddl option
  • 63. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | SQL> select * from external ( 2 empno number(4), 3 ename varchar2(10), 4 ... 12 ( type oracle_loader 13 default directory TMP 14 access parameters 15 ( records delimited by newline 16 fields terminated by ',' 17 missing field values are null 18 ( empno,ename,job,mgr,...) 19 ) 20 location ('emp20161001.dat') 21 );
  • 64. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 64
  • 65. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 65 global temporary tablesprivate
  • 66. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 66 SQL server etc
  • 67. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 67 read locking
  • 68. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 68 SELECT empno, ename, job INTO #HighPaidJobs FROM emp WHERE sal > 3000
  • 69. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 69 migration to Oracle difficult
  • 70. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 70 SQL> create private temporary table ORA$PTT_MY_TT 2 ( empno int , ename varchar2(20)) ; Table created. SQL> insert into ORA$PTT_MY_TT 2 select empno, ename 3 from scott.emp 4 where sal > 3000; 1 row created. SQL> select * from ORA$PTT_MY_TT; EMPNO ENAME ---------- -------------------- 7839 KING
  • 71. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 71 "um...looks the same as before"
  • 72. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 72 SQL> commit; Commit complete. SQL> select * from ORA$PTT_MY_TT; select * from ORA$PTT_MY_TT * ERROR at line 1: ORA-00942: table or view does not exist
  • 73. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 73 it's really temporary
  • 74. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 74 SQL> create private temporary table ORA$PTT_MY_TT 2 ( empno int , ename varchar2(20)) ; Table created. SQL> select * 2 from user_tables 3 where table_name = 'ORA$PTT_MY_TT' ; no rows selected SQL> select * 2 from all_objects 3 where object_name = 'ORA$PTT_MY_TT' ; no rows selected
  • 75. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 75 SQL> create private temporary table ORA$PTT_MY_TT 2 ( empno , ename ) 3 on commit preserve definition 4 as select 123, 'Larry' from dual; SQL> select * from ORA$PTT_MY_TT; EMPNO ENAME ---------- ----- 123 Larry SQL> commit; SQL> select * from ORA$PTT_MY_TT; EMPNO ENAME ---------- ----- 123 Larry
  • 76. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 76 it's really private
  • 77. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 77 SQL> create private temporary table ORA$PTT_MY_TT 2 ( empno int , 3 ename varchar2(20)) ; Table created. SQL> create private temporary table ORA$PTT_MY_TT 2 ( deptno int , 3 dname varchar2(20), 4 bonus int, 5 logo blob) ; Table created.
  • 78. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 78 it's all in the name !
  • 79. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 79 SQL> create private temporary table MY_TT ( x int ) ; create private temporary table MY_TT ( x int ) * ERROR at line 1: ORA-00903: invalid table name SQL> show parameter private NAME TYPE VALUE ------------------------------- ----------- ----------- private_temp_table_prefix string ORA$PTT_
  • 80. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 80
  • 81. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 81 remember temporary undo?
  • 82. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | SQL> insert into t values ('Hello','There'); insert into t values ('Hello','There') * ERROR at line 1: ORA-16000: database open for read-only access
  • 83. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 83 Active Data Guard
  • 84. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | SQL> alter session set temp_undo_enabled=true; Session altered. SQL> create global temporary table GTT_REPORT_STAGING 2 ( ... ); SQL> insert into GTT_REPORT_STAGING 2 select ... SQL> select * from GTT_REPORT_STAGING join FIN_RESULTS 2 ...
  • 85. 85 100% % of people that found this useful
  • 86. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 86 19c
  • 87. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 87 DML redirect
  • 88. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 88 Standby Primary SQL> insert into REPORTING_STAGING 2 select * from ...
  • 89. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 89 bonus DataGuard
  • 90. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 90 we've all done this :-)
  • 91. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 91 Standby Primary
  • 92. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 92 18c
  • 93. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | RMAN> connect target sys/oracle@MY_STANDBY RMAN> connect auxiliary sys/oracle@MY_PRIMARY RMAN> recover database from service PRIMARY; Starting recover at 12.10.2018 14:05:17 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=187 device type=DISK ... ...
  • 94. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 94 bonus bonus DataGuard !
  • 95. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | SQL> alter database force logging; 95
  • 96. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 96 19c
  • 97. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | SQL> alter database set standby nologging for data availability; 97 deferred commit
  • 98. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | SQL> alter database set standby nologging for load performance; 98 deferred transmission
  • 99. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 99
  • 100. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 100 a nice form of murder :-)
  • 101. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 101 aka, #1 reason for upgrading to 18c
  • 102. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | SQL> insert into MY_TABLE 2 select * 3 from MY_HUGE_GREAT_FAT_TABLE; 102
  • 103. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 103
  • 104. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | SQL> insert into MY_TABLE 2 select * 3 from MY_HUGE_GREAT_FAT_TABLE 4 where LOAD_DATE > sysdate - 1; 104
  • 105. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | SQL> alter system kill session '123,456' immediate 105
  • 106. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 106
  • 107. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 107 18c
  • 108. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | SQL> alter system kill cancel sql '123,456'; 108
  • 109. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 109
  • 110. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 110 speaking of "#1 reason"
  • 111. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 111 #1 reason for upgrading to 19c
  • 112. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | SQL> select deptno, ename 2 from emp 3 order by 1,2; DEPTNO ENAME ---------- ---------- 10 CLARK 10 KING 10 MILLER 20 ADAMS 20 FORD 20 JONES 20 SCOTT 20 SMITH 30 ALLEN 30 BLAKE 30 JAMES 30 MARTIN 30 TURNER 30 WARD 112
  • 113. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | DEPTNO MEMBERS ---------- ------------------------------------- 10 CLARK,KING,MILLER 20 SMITH,JONES,SCOTT,ADAMS,FORD 30 ALLEN,WARD,MARTIN,BLAKE,TURNER,JAMES 113
  • 114. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | how we used to do it 114
  • 115. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | SQL> select deptno , rtrim(ename,',') enames 2 from ( select deptno,ename,rn 3 from emp 4 model 5 partition by (deptno) 6 dimension by ( 7 row_number() over 8 (partition by deptno order by ename) rn 9 ) 10 measures (cast(ename as varchar2(40)) ename) 11 rules 12 ( ename[any] 13 order by rn desc = ename[cv()]||','||ename[cv()+1]) 14 ) 15 where rn = 1 16 order by deptno; DEPTNO ENAMES ---------- ---------------------------------------- 10 CLARK,KING,MILLER 20 ADAMS,FORD,JONES,SCOTT,SMITH 30 ALLEN,BLAKE,JAMES,MARTIN,TURNER,WARD 115
  • 116. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | SQL> select deptno, 2 substr(max(sys_connect_by_path(ename, ',')), 2) members 3 from (select deptno, ename, 4 row_number () 5 over (partition by deptno order by empno) rn 6 from emp) 7 start with rn = 1 8 connect by prior rn = rn - 1 9 and prior deptno = deptno 10 group by deptno 11 / DEPTNO MEMBERS ---------- --------------------------------------------------------- 30 ALLEN,WARD,MARTIN,BLAKE,TURNER,JAMES 20 SMITH,JONES,SCOTT,ADAMS,FORD 10 CLARK,KING,MILLER 116
  • 117. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | SQL> select deptno, 2 xmltransform 3 ( sys_xmlagg 4 ( sys_xmlgen(ename) 5 ), 6 xmltype 7 ( 8 '<?xml version="1.0"?><xsl:stylesheet version="1.0" 9 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 10 <xsl:template match="/"> 11 <xsl:for-each select="/ROWSET/ENAME"> 12 <xsl:value-of select="text()"/>,</xsl:for-each> 13 </xsl:template> 14 </xsl:stylesheet>' 15 ) 16 ).getstringval() members 17 from emp 18 group by deptno; DEPTNO MEMBERS ---------- -------------------------------------------------------- 10 CLARK,MILLER,KING, 20 SMITH,FORD,ADAMS,SCOTT,JONES, 30 ALLEN,JAMES,TURNER,BLAKE,MARTIN,WARD, 117
  • 118. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | SQL> create or replace type string_agg_type as object 2 ( 3 total varchar2(4000), 4 5 static function 6 ODCIAggregateInitialize(sctx IN OUT string_agg_type ) 7 return number, 8 9 member function 10 ODCIAggregateIterate(self IN OUT string_agg_type , 11 value IN varchar2 ) 12 return number, 13 14 member function 15 ODCIAggregateTerminate(self IN string_agg_type, 16 returnValue OUT varchar2, 17 flags IN number) 18 return number, 19 20 member function 21 ODCIAggregateMerge(self IN OUT string_agg_type, 22 ctx2 IN string_agg_type) 23 return number 24 ); 25 / 118
  • 119. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 11g 119
  • 120. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | SQL> select deptno, 2 listagg( ename, ',') 3 within group (order by empno) members 4 from emp 5 group by deptno; DEPTNO MEMBERS ---------- ----------------------------------------- 10 CLARK,KING,MILLER 20 SMITH,JONES,SCOTT,ADAMS,FORD 30 ALLEN,WARD,MARTIN,BLAKE,TURNER,JAMES 120
  • 121. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | except 121
  • 122. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | SQL> select deptno 2 listagg(job,',') within group ( order by job) as jobs 3 from scott.emp 4 group by deptno 5 order by 1; DEPTNO JOBS --------- -------------------------------------------------- 10 CLERK,MANAGER,PRESIDENT 20 ANALYST,ANALYST,CLERK,CLERK,MANAGER 30 CLERK,MANAGER,SALESMAN,SALESMAN,SALESMAN,SALESMAN 122
  • 123. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | SQL> select owner 2 listagg(object_type,',') within group 3 ( order by object_id ) as types 4 from all_ojects 5 group by owner 6 order by 1; ERROR: ORA-01499: result of string concatenation is too long 123
  • 124. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 19c 124
  • 125. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | SQL> select deptno 2 listagg(distinct job,',') within group ( order by job) as jobs 3 from scott.emp 4 group by deptno 5 order by 1; DEPTNO JOBS --------- -------------------------------------------------- 10 CLERK,MANAGER,PRESIDENT 20 ANALYST,CLERK,MANAGER 30 CLERK,MANAGER,SALESMAN 125
  • 126. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 126
  • 127. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 127 back to #1 reason for upgrading to 19c
  • 128. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 128 back to bad SQL
  • 129. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 129 maybe murder won't help
  • 130. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 130 BAD SQL
  • 131. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 131 bad SQL just keeps coming back...
  • 132. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 132 19c
  • 133. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 133 automatic quarantine of bad SQL elapsed time resource consumption
  • 134. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 134 error on subsequent execution
  • 135. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 135 1) alerts to administrator
  • 136. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 136 or...
  • 137. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 137 2) automated historical diagnosis/repair
  • 138. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 138
  • 139. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 139 maybe murder wasn't the right thing
  • 140. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | SQL> insert into MY_TABLE 2 select * 3 from MY_HUGE_GREAT_FAT_TABLE 4 where LOAD_DATE > sysdate - 900; 140
  • 141. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 141
  • 142. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | SQL> insert into MY_TABLE 2 select * 3 from MY_HUGE_GREAT_FAT_TABLE w 4 where LOAD_DATE > sysdate - 900; 142 /*+ INDEX(W CUST_DATE_IX) */ *
  • 143. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 143 18c
  • 144. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | SQL> alter system set optimizer_ignore_hints = true 144
  • 145. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 145
  • 146. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 146 cool
  • 147. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 147 maybe it was the opposite ?
  • 148. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | SQL> insert into MY_TABLE 2 select * 3 from MY_HUGE_GREAT_FAT_TABLE 4 where LOAD_DATE > sysdate - 1/24; 148
  • 149. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 149
  • 150. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | SQL> insert into MY_TABLE 2 select * 3 from MY_HUGE_GREAT_FAT_TABLE 4 where LOAD_DATE > sysdate - 1/24; 150 need an index?
  • 151. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 151 but what is best practice ?
  • 152. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 152 1) monitor the SQL workload AWR / Top SQL
  • 153. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 153 2) consider indexes per SQL leading columns
  • 154. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 154 3) consolidate tables/columns (a) (a,b) (a,b,c)
  • 155. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 155 4) create nosegment/unusable dictionary only
  • 156. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 156 5) check "virtual" explain plan cost/cardinality
  • 157. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 157 6) create true index (as invisible) no impact risk
  • 158. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 158 7) test execute each SQL for benefit response time/IO
  • 159. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 159 8) decide on each index worth "majority wins"
  • 160. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 160 9) SPM quarantine the others no regression
  • 161. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 161 10) make new indexes visible
  • 162. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 162 we're done!
  • 163. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 163
  • 164. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 164 go to step 1
  • 165. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
  • 166. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 166 19c
  • 167. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 167 automatic indexes
  • 168. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 168 we follow best practice
  • 169. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 169 Capture Identify VerifyDecide Monitor Identify index candidates based on column usage (SQL workload) Create indexes unusable, invisible and evaluate new execution plans without parse costs Rebuild indexes that offer potential benefit (status as invisible). Test execute each SQL statement Use SPM to ensure no regression for excluded SQL statements. Mark indexes as visible Monitor all indexes (automatic and manual) for ongoing usage and potential removal
  • 170. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 170 only need to set preferences
  • 171. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 171 AUTO_INDEX_EXCLUDE_SCHEMA AUTO_INDEX_REPORT_RETENTION AUTO_INDEX_RETENTION_FOR_AUTO AUTO_INDEX_RETENTION_FOR_MANUAL AUTO_INDEX_DEFAULT_TABLESPACE AUTO_INDEX_TEMP_TABLESPACE AUTO_INDEX_MODE AUTO_INDEX_SPACE_BUDGET
  • 172. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 172 expect this to evolve over time
  • 173. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 173
  • 174. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 174 statistics
  • 175. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 175 what most of us do
  • 176. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 176 TIME Gather Stale overnight
  • 177. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 177 19c
  • 178. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 178 Conventional DML Real-time Statistics Gathered Statistics Lightweight Statistics
  • 179. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 179 real time statistics DML driven
  • 180. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 180 only "cheap" essential statistics high/low values row/column counts
  • 181. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 181 lightweight rapid gather resource manager
  • 182. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 182
  • 183. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 183
  • 184. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 184 one row at a time....always
  • 185. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 185 SQL> create table t ( 2 x int, 3 y int, 4 z int, 5 constraint t_pk primary key ( x ) ); Table created. SQL> set timing on SQL> begin 2 for i in 1 .. 4000000 loop 3 insert into t values (i,i,i); 4 commit; 5 end loop; 6 end; 7 / PL/SQL procedure successfully completed. Elapsed: 00:05:33.53
  • 186. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 186 array bind, direct load, etc
  • 187. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 187 19c
  • 188. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 188 write optimization
  • 189. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 189 SQL> alter table T memoptimize for write; Table altered. SQL> begin 2 for i in 1 .. 4000000 loop 3 insert /*+ memoptimize_write */ into t values (i,i,i); 4 end loop; 5 end; 6 / PL/SQL procedure successfully completed. Elapsed: 00:00:38.99 no commit ?
  • 190. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 190
  • 191. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | maybe ... 191
  • 192. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ... we didn't want to store it in Oracle 192
  • 193. 193
  • 194. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | let's talk polyglot persistence 194
  • 195. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 195
  • 196. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 196
  • 197. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 197 "I have to learn Hadoop ....and Spark ....and Hive ....and ? ....and ? ....and ?"
  • 198. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 198 Big Data SQL
  • 199. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 199 19c
  • 200. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 200 hybrid partitioned table
  • 201. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 201 Q4_2018Q3_2018Q2_2018Q1_2018Q4_2017Q3_2017Q2_2017Q1_2017Q4_2016 ORDERS OBJECT STORAGE TABLE PARTITIONED BY QUARTER SQL HOT DATACOLD DATA UPDATES
  • 202. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 202 SQL> create table hybrid_sales 2 ( 3 part_key varchar2(10) not null 4 ... 5 ) 6 external partition attributes ( 7 type oracle_loader 8 default directory sales_data 9 ) 10 partition by list (part_key) 11 (partition sales_2015 values ('2015') external 12 location ('sales2015.txt'), 13 partition sales_2016 values ('2016') external 14 location ('sales2016.txt'), 15 partition sales_2017 values '2017'), 16 partition sales_2018 values '2018'), 17 ); Table created.
  • 203. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 203
  • 204. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 204 "Everything is not all write"
  • 205. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 205 19c
  • 206. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 206 memoptimize for read
  • 207. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 207 SQL> create table t ( 2 x int, 3 y int, 4 z int, 5 constraint t_pk primary key ( x ) ); Table created. SQL> insert into t 2 select rownum, rownum, rownum 3 from dual 4 connect by level <= 100000; 100000 rows created. SQL> exec dbms_stats.gather_table_stats('','T'); PL/SQL procedure successfully completed.
  • 208. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 208 SQL> set autotrace traceonly explain SQL> select /*+special*/ * from t where x = 10; Execution Plan ---------------------------------------------------------- Plan hash value: 1303508680 ------------------------------------------------------------ | Id | Operation | Name | Rows | Bytes | ------------------------------------------------------------ | 0 | SELECT STATEMENT | | 1 | 15 | | 1 | TABLE ACCESS BY INDEX ROWID| T | 1 | 15 | |* 2 | INDEX UNIQUE SCAN | T_PK | 1 | | ------------------------------------------------------------
  • 209. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 209 SQL> set autotrace off SQL> select sql_text, executions, buffer_gets 2 from v$sql 3 where sql_text like 'sel%special%'; SQL_TEXT EXECUTIONS BUFFER_GETS ------------------------------------------- ---------- ----------- select /*+special*/ * from t where x = 10 0 21
  • 210. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 210 SQL> set autotrace on stat SQL> select /*+special*/ * from t where x = 10; X Y Z ---------- ---------- ---------- 10 10 10 1 row selected. Statistics ---------------------------------------------------- 0 recursive calls 0 db block gets 3 consistent gets 0 physical reads 0 redo size 551 bytes sent via SQL*Net to client 612 bytes received via SQL*Net from client 1 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1 rows processed
  • 211. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 211 SQL> set autotrace off SQL> select sql_text, executions, buffer_gets 2 from v$sql 3 where sql_text like 'sel%special%'; SQL_TEXT EXECUTIONS BUFFER_GETS ------------------------------------------- ---------- ----------- select /*+special*/ * from t where x = 10 1 24
  • 212. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 212 SQL> create table t ( 2 x int, 3 y int, 4 z int, 5 constraint t_pk primary key ( x ) ) 6 segment creation immediate memoptimize for read; Table created. SQL> insert into t ... [as before] SQL> exec dbms_stats.gather_table_stats('','T'); PL/SQL procedure successfully completed. SQL> exec dbms_memoptimize.populate('','T'); PL/SQL procedure successfully completed.
  • 213. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 213 SQL> set autotrace traceonly explain SQL> select /*+special*/ * from t where x = 10; Execution Plan ---------------------------------------------------------- Plan hash value: 1303508680 ----------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | ----------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 15 | | 1 | TABLE ACCESS BY INDEX ROWID READ OPTIM| T | 1 | 15 | |* 2 | INDEX UNIQUE SCAN READ OPTIM | T_PK | 1 | | -----------------------------------------------------------------------
  • 214. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 214 SQL> set autotrace on stat SQL> select /*+special*/ * from t where x = 10; X Y Z ---------- ---------- ---------- 10 10 10 1 row selected. Statistics ---------------------------------------------------- 0 recursive calls 0 db block gets 0 consistent gets 0 physical reads 0 redo size 551 bytes sent via SQL*Net to client 612 bytes received via SQL*Net from client 1 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1 rows processed
  • 215. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 215
  • 216. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. THIS
  • 217. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. IS
  • 218. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. THE
  • 219. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. BIG
  • 220. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. ONE
  • 221. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 18c XE 221
  • 222. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 222 100% free
  • 223. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 223 We grant you a nonexclusive, nontransferable limited license to use the programs for: (a) purposes of developing, prototyping and running your applications for your own internal data processing operations; (b) you may also distribute the programs with your applications; (c) you may use the programs to provide third party demonstrations and training; and d) you may copy and distribute the programs to your licensees provided that each such licensee agrees to the terms of this Agreement https://www.oracle.com/technetwork/licenses/db18c-express-license-5137264.html
  • 224. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 224 12 GB of user data 2 GB of database RAM 2 CPU threads 3 Pluggable Databases
  • 225. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 225 "Is it feature hobbled?"
  • 226. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 226 Oracle Multitenant SQLJ Online index rebuild Online table reorg Online table redefinition Trial recovery Fast start recovery Flashback table Flashback query Flashback database Advanced Queueing Network Compression Client side result cache Server side result cache Adaptive plans In-memory column store In-memory aggregation Attribute Clustering Column encryption Tablespace encryption Advanced Security Database Vault Label Security AD users Privilege Analysis Real Application Security Data Redaction Virtual Private Database Spatial Graph Partitioning Advanced Analytics Advanced Compression Advanced Index Compression Transportable Tablespace Query Rewrite
  • 227. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 227 EE plus most extra cost options
  • 228. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 228
  • 229. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 229 wrap up
  • 230. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 230 there's a lot in 18/19
  • 231. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 231 lots not covered today
  • 232. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 232 but ... new feature model
  • 233. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Stay in touch! youtube bit.ly/youtube-connor blog bit.ly/blog-connor twitter bit.ly/twitter-connor