{"id":12870,"date":"2019-10-09T10:33:46","date_gmt":"2019-10-09T08:33:46","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/oracle-19c\/"},"modified":"2019-10-09T10:33:46","modified_gmt":"2019-10-09T08:33:46","slug":"oracle-19c","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/oracle-19c\/","title":{"rendered":"Oracle 19c"},"content":{"rendered":"<h3>Oracle 19c has been released quite a while ago already and some customers already run it in Production. However, as it is the long term supported release, I thought I blog about some interesting information and features around 19c to encourage people to migrate to it.<\/h3>\n<p><strong>Download Oracle 19c:<\/strong><\/p>\n<p><a href=\"https:\/\/www.oracle.com\/technetwork\/database\/enterprise-edition\/downloads\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.oracle.com\/technetwork\/database\/enterprise-edition\/downloads<\/a><br \/>\nor<br \/>\n<a href=\"https:\/\/edelivery.oracle.com\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/edelivery.oracle.com<\/a> (search e.g. for &#8220;Database Enterprise Edition&#8221;)<\/p>\n<p>Docker-Images:<br \/>\n<a href=\"https:\/\/github.com\/oracle\/docker-images\/tree\/master\/OracleDatabase\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/github.com\/oracle\/docker-images\/tree\/master\/OracleDatabase<\/a><\/p>\n<p><strong>Oracle provides different offerings for 19c:<\/strong><\/p>\n<p>On-premises:<br \/>\n&#8211; Oracle Database Standard Edition 2 (SE2)<br \/>\n&#8211; Oracle Database Enterprise Edition (EE)<br \/>\n&#8211; Oracle Database Enterprise Edition on Engineered Systems (EE-ES)<br \/>\n&#8211; Oracle Database Personal Edition (PE)<\/p>\n<p>Cloud:<br \/>\n&#8211; Oracle Database Cloud Service Standard Edition (DBCS SE)<br \/>\n&#8211; Oracle Database Cloud Service Enterprise Edition (DBCS EE)<br \/>\n&#8211; Oracle Database Cloud Service Enterprise Edition -High Performance (DBCS EE-HP)<br \/>\n&#8211; Oracle Database Cloud Service Enterprise Edition -Extreme Performance (DBCS EE-EP)<br \/>\n&#8211; Oracle Database Exadata Cloud Service (ExaCS)<\/p>\n<p>REMARK: When this Blog was released the Autonomous DB offerings provided by Oracle did not run on 19c yet (they actually ran on 18c).<\/p>\n<p>Unfortunately some promising 19c new features are only available on Exadata. If that&#8217;s the case (like for Automatic Indexing) then you can still test the feature on EE after setting:<\/p>\n<p><code><br \/>\nSQL&gt; alter system set \"_exadata_feature_on\"=TRUE scope=spfile;<br \/>\n<\/code><br \/>\nand a DB-Restart.<\/p>\n<p><strong>REMARK: DO THAT ON YOUR OWN TESTSYSTEMS ONLY AND USE INTERNAL ORACLE PARAMETERS ONLY WHEN ORACLE SUPPORT RECOMMENDS TO DO SO.<\/strong><\/p>\n<p>Anyway, there are lots of new features and I wanted to share some interesting of them with you and provide some examples.<\/p>\n<p><strong>REMARK:<\/strong> You may check <a href=\"https:\/\/www.oracle.com\/a\/tech\/docs\/database19c-wp.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.oracle.com\/a\/tech\/docs\/database19c-wp.pdf<\/a> as well<\/p>\n<p><strong>1. Automatic Indexing (only available on EE-ES and ExaCS)<\/strong><\/p>\n<p>Oracle continually evaluates the executing SQL and the underlying tables to determine which indexes to automatically create and which ones to potentially remove.<\/p>\n<p>Documentation:<\/p>\n<p>You can use the AUTO_INDEX_MODE configuration setting to enable or disable automatic indexing in a database.<\/p>\n<p>The following statement enables automatic indexing in a database and creates any new auto indexes as visible indexes, so that they can be used in SQL statements:<\/p>\n<p><code><br \/>\nEXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','IMPLEMENT');<br \/>\n<\/code><\/p>\n<p>The following statement enables automatic indexing in a database, but creates any new auto indexes as invisible indexes, so that they cannot be used in SQL statements:<\/p>\n<p><code><br \/>\nEXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','REPORT ONLY');<br \/>\n<\/code><\/p>\n<p>The following statement disables automatic indexing in a database, so that no new auto indexes are created, and the existing auto indexes are disabled:<\/p>\n<p><code><br \/>\nEXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','OFF');<br \/>\n<\/code><\/p>\n<p>Show a report of automatic indexing activity:<\/p>\n<p><code><br \/>\nset serveroutput on size unlimited lines 200 pages 200<br \/>\ndeclare<br \/>\n   report clob := null;<br \/>\nbegin<br \/>\n   report := DBMS_AUTO_INDEX.REPORT_LAST_ACTIVITY();<br \/>\n   dbms_output.put_line(report);<br \/>\nend;<br \/>\n\/<br \/>\n<\/code><\/p>\n<p>In a test I ran some statements repeatedly on a table T1 (which contains 32 times the data of all_objects). The table has no index:<\/p>\n<p><code><br \/>\nSQL&gt; select * from t1 where object_id=:b1;<br \/>\nSQL&gt; select * from t1 where data_object_id=:b2;<br \/>\n<\/code><\/p>\n<p>After some time indexes were created automatically:<\/p>\n<p><code><br \/>\nSQL&gt; select table_name, index_name, auto from ind;<br \/>\n&nbsp;<br \/>\nTABLE_NAME                       INDEX_NAME                       AUT<br \/>\n-------------------------------- -------------------------------- ---<br \/>\nT1                               SYS_AI_5mzwj826444wv             YES<br \/>\nT1                               SYS_AI_gs3pbvztmyaqx             YES<br \/>\n&nbsp;<br \/>\n2 rows selected.<br \/>\n&nbsp;<br \/>\nSQL&gt; select dbms_metadata.get_ddl('INDEX','SYS_AI_5mzwj826444wv') from dual;<br \/>\n&nbsp;<br \/>\nDBMS_METADATA.GET_DDL('INDEX','SYS_AI_5MZWJ826444WV')<br \/>\n------------------------------------------------------------------------------------<br \/>\nCREATE INDEX \"CBLEILE\".\"SYS_AI_5mzwj826444wv\" ON \"CBLEILE\".\"T1\" (\"OBJECT_ID\") AUTO<br \/>\nPCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS<br \/>\nSTORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645<br \/>\nPCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1<br \/>\nBUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)<br \/>\nTABLESPACE \"USERS\"<br \/>\n<\/code><\/p>\n<p><strong>2. Real-Time Statistics (only available on EE-ES and ExaCS)<\/strong><\/p>\n<p>The database automatically gathers real-time statistics during conventional DML operations. You can see in the Note-section of dbms_xplan.display_cursor when stats used to optimize a Query were gathered during DML:<\/p>\n<p><code><br \/>\nSQL&gt; select * from table(dbms_xplan.display_cursor);<br \/>\n&nbsp;<br \/>\nPLAN_TABLE_OUTPUT<br \/>\n-------------------------------------------------------------------------------------------------------<br \/>\nSQL_ID  7cd3thpuf7jxm, child number 0<br \/>\n-------------------------------------<br \/>\n&nbsp;<br \/>\nselect * from t2 where object_id=:y<br \/>\n&nbsp;<br \/>\nPlan hash value: 1513984157<br \/>\n--------------------------------------------------------------------------<br \/>\n| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |<br \/>\n--------------------------------------------------------------------------<br \/>\n|   0 | SELECT STATEMENT  |      |       |       | 24048 (100)|          |<br \/>\n|*  1 |  TABLE ACCESS FULL| T2   |   254 | 31242 | 24048   (1)| 00:00:01 |<br \/>\n--------------------------------------------------------------------------<br \/>\n&nbsp;<br \/>\nPredicate Information (identified by operation id):<br \/>\n---------------------------------------------------<br \/>\n&nbsp;<br \/>\n1 - filter(\"OBJECT_ID\"=:Y)<br \/>\n&nbsp;<br \/>\nNote<br \/>\n-----<br \/>\n- dynamic statistics used: statistics for conventional DML<br \/>\n<\/code><\/p>\n<p><strong>3. Quarantine problematic SQL (only available on EE-ES and ExaCS)<\/strong><\/p>\n<p>Runaway SQL statements terminated by Resource Manager due to excessive consumption of processor and I\/O resources can now be automatically quarantined. I.e. instead of letting the SQL run until it reaches a resource plan limit, the SQL is not executed at all.<\/p>\n<p>E.g. create a resource plan which limits SQL-exec-time for User CBLEILE to 16 seconds:<\/p>\n<p><code><br \/>\nbegin<br \/>\n   -- Create a pending area<br \/>\n   dbms_resource_manager.create_pending_area();<br \/>\n...<br \/>\n   dbms_resource_manager.create_plan_directive(<br \/>\n      plan             =&gt; 'LIMIT_RESOURCE',<br \/>\n      group_or_subplan =&gt; 'TEST_RUNAWAY_GROUP',<br \/>\n      comment          =&gt; 'Terminate SQL statements when they exceed the' ||'execution time of 16 seconds',<br \/>\n      switch_group     =&gt; 'CANCEL_SQL',<br \/>\n      switch_time      =&gt; 16,<br \/>\n      switch_estimate  =&gt; false);<br \/>\n...<br \/>\n   -- Set the initial consumer group of the 'CBLEILE' user to 'TEST_RUNAWAY_GROUP'<br \/>\n   dbms_resource_manager.set_initial_consumer_group('CBLEILE','TEST_RUNAWAY_GROUP');<br \/>\nend;<br \/>\n\/<br \/>\n<\/code><\/p>\n<p>A SQL-Statement with SQL_ID 12jc0zpmb85tm executed by CBLEILE runs in the 16 seconds limit:<\/p>\n<p><code><br \/>\nSQL&gt; select count(*) X<br \/>\n2  from kill_cpu<br \/>\n3  connect by n &gt; prior n<br \/>\n4  start with n = 1<br \/>\n5  ;<br \/>\nfrom kill_cpu<br \/>\n*<br \/>\nERROR at line 2:<br \/>\nORA-00040: active time limit exceeded - call aborted<br \/>\n&nbsp;<br \/>\nElapsed: 00:00:19.85<br \/>\n<\/code><\/p>\n<p>So I quarantine the SQL now:<\/p>\n<p><code><br \/>\nset serveroutput on size unlimited<br \/>\nDECLARE<br \/>\nquarantine_config VARCHAR2(80);<br \/>\nBEGIN<br \/>\nquarantine_config := DBMS_SQLQ.CREATE_QUARANTINE_BY_SQL_ID(<br \/>\nSQL_ID =&gt; '12jc0zpmb85tm');<br \/>\ndbms_output.put_line(quarantine_config);<br \/>\nEND;<br \/>\n\/<br \/>\n&nbsp;<br \/>\nSQL_QUARANTINE_1d93x3d6vumvs<br \/>\n&nbsp;<br \/>\nPL\/SQL procedure successfully completed.<br \/>\n&nbsp;<br \/>\nSQL&gt; select NAME,ELAPSED_TIME,ENABLED from dba_sql_quarantine;<br \/>\n&nbsp;<br \/>\nNAME                                     ELAPSED_TIME                     ENA<br \/>\n---------------------------------------- -------------------------------- ---<br \/>\nSQL_QUARANTINE_1d93x3d6vumvs             ALWAYS                           YES<br \/>\n<\/code><\/p>\n<p>Other CBLEILE-session:<\/p>\n<p><code><br \/>\nSQL&gt; select count(*) X<br \/>\n2  from kill_cpu<br \/>\n3  connect by n &gt; prior n<br \/>\n4  start with n = 1<br \/>\n5  ;<br \/>\nfrom kill_cpu<br \/>\n*<br \/>\n&nbsp;<br \/>\nERROR at line 2:<br \/>\nORA-56955: quarantined plan used<br \/>\nElapsed: 00:00:00.00<br \/>\n&nbsp;<br \/>\nSQL&gt; !oerr ora 56955<br \/>\n56955, 00000, \"quarantined plan used\"<br \/>\n\/\/ *Cause: A quarantined plan was used for this statement.<br \/>\n\/\/ *Action: Increase the Oracle Database Resource Manager limits or use a new plan.<br \/>\n<\/code><\/p>\n<p>&#8211;&gt; The SQL does not run for 16 seconds, but is stopped immediately (is under quarantine). You can define the Plan-Hash-Value for which a SQL should be in quarantine and define quarantine thresholds. E.g. 20 seconds for the elapsed time. As long as the resource plan is below those 20 seconds the SQL is under quarantine. If the resource plan is defined to be above 20 seconds execution time limit, the SQL is executed.<\/p>\n<p><strong>4. Active Standby DML Redirect (only available with Active Data Guard)<\/strong><\/p>\n<p>On Active Data Guard you may allow moderate write activity. These writes are then transparently redirected to the primary database and written there first (to ensure consistency) and then the changes are shipped back to the standby. This approach allows applications to use the standby for moderate write workloads.<\/p>\n<p><strong>5. Hybrid Partitioned Tables<\/strong><\/p>\n<p>Create partitioned tables where some partitions are inside and some partitions are outside the database (on filesystem, on a Cloud-Filesystem-service or on a Hadoop Distributed File System (HDFS)). This allows e.g. &#8220;cold&#8221; partitions to remain accessible, but on cheap storage.<\/p>\n<p>Here an example with 3 partitions external (data of 2016-2018) and 1 partition in the DB (data of 2019):<\/p>\n<p><code><br \/>\n!mkdir -p \/u01\/my_data\/sales_data1<br \/>\n!mkdir -p \/u01\/my_data\/sales_data2<br \/>\n!mkdir -p \/u01\/my_data\/sales_data3<br \/>\n!echo \"1,1,01-01-2016,1,1,1000,2000\" &gt; \/u01\/my_data\/sales_data1\/sales2016_data.txt<br \/>\n!echo \"2,2,01-01-2017,2,2,2000,4000\" &gt; \/u01\/my_data\/sales_data2\/sales2017_data.txt<br \/>\n!echo \"3,3,01-01-2018,3,3,3000,6000\" &gt; \/u01\/my_data\/sales_data3\/sales2018_data.txt<br \/>\n&nbsp;<br \/>\nconnect \/ as sysdba<br \/>\nalter session set container=pdb1;<br \/>\n&nbsp;<br \/>\nCREATE DIRECTORY sales_data1 AS '\/u01\/my_data\/sales_data1';<br \/>\nGRANT READ,WRITE ON DIRECTORY sales_data1 TO cbleile;<br \/>\n&nbsp;<br \/>\nCREATE DIRECTORY sales_data2 AS '\/u01\/my_data\/sales_data2';<br \/>\nGRANT READ,WRITE ON DIRECTORY sales_data2 TO cbleile;<br \/>\n&nbsp;<br \/>\nCREATE DIRECTORY sales_data3 AS '\/u01\/my_data\/sales_data3';<br \/>\nGRANT READ,WRITE ON DIRECTORY sales_data3 TO cbleile;<br \/>\n&nbsp;<br \/>\nconnect cbleile\/difficult_password@pdb1<br \/>\n&nbsp;<br \/>\nCREATE TABLE hybrid_partition_table<br \/>\n( prod_id       NUMBER        NOT NULL,<br \/>\ncust_id       NUMBER        NOT NULL,<br \/>\ntime_id       DATE          NOT NULL,<br \/>\nchannel_id    NUMBER        NOT NULL,<br \/>\npromo_id      NUMBER        NOT NULL,<br \/>\nquantity_sold NUMBER(10,2)  NOT NULL,<br \/>\namount_sold   NUMBER(10,2)  NOT NULL<br \/>\n)<br \/>\nEXTERNAL PARTITION ATTRIBUTES (<br \/>\nTYPE ORACLE_LOADER<br \/>\nDEFAULT DIRECTORY sales_data1<br \/>\nACCESS PARAMETERS(<br \/>\nFIELDS TERMINATED BY ','<br \/>\n(prod_id,cust_id,time_id DATE 'dd-mm-yyyy',channel_id,promo_id,quantity_sold,amount_sold)<br \/>\n)<br \/>\nREJECT LIMIT UNLIMITED<br \/>\n)<br \/>\nPARTITION BY RANGE (time_id)<br \/>\n(<br \/>\nPARTITION sales_2016 VALUES LESS THAN (TO_DATE('01-01-2017','dd-mm-yyyy')) EXTERNAL<br \/>\nLOCATION ('sales2016_data.txt'),<br \/>\nPARTITION sales_2017 VALUES LESS THAN (TO_DATE('01-01-2018','dd-mm-yyyy')) EXTERNAL<br \/>\nDEFAULT DIRECTORY sales_data2 LOCATION ('sales2017_data.txt'),<br \/>\nPARTITION sales_2018 VALUES LESS THAN (TO_DATE('01-01-2019','dd-mm-yyyy')) EXTERNAL<br \/>\nDEFAULT DIRECTORY sales_data3 LOCATION ('sales2018_data.txt'),<br \/>\nPARTITION sales_2019 VALUES LESS THAN (TO_DATE('01-01-2020','dd-mm-yyyy'))<br \/>\n);<br \/>\n&nbsp;<br \/>\ninsert into hybrid_partition_table values (4,4,to_date('01-01-2019','dd-mm-yyyy'),4,4,4000,8000);<br \/>\n&nbsp;<br \/>\ncommit;<br \/>\n&nbsp;<br \/>\nSQL&gt; select * from hybrid_partition_table where time_id in (to_date('01-01-2017','dd-mm-yyyy'),to_date('01-01-2019','dd-mm-yyyy'));<br \/>\n&nbsp;<br \/>\nPROD_ID    CUST_ID TIME_ID   CHANNEL_ID   PROMO_ID QUANTITY_SOLD AMOUNT_SOLD<br \/>\n---------- ---------- --------- ---------- ---------- ------------- -----------<br \/>\n2          2 01-JAN-17          2          2          2000        4000<br \/>\n4          4 01-JAN-19          4          4          4000        8000<br \/>\n&nbsp;<br \/>\n2 rows selected.<br \/>\n&nbsp;<br \/>\nSQL&gt; select * from table(dbms_xplan.display_cursor);<br \/>\n&nbsp;<br \/>\nPLAN_TABLE_OUTPUT<br \/>\n-------------------------------------------------------------------------------<br \/>\nSQL_ID  c5s33u5kanzb5, child number 0<br \/>\n-------------------------------------<br \/>\nselect * from hybrid_partition_table where time_id in<br \/>\n(to_date('01-01-2017','dd-mm-yyyy'),to_date('01-01-2019','dd-mm-yyyy'))<br \/>\n&nbsp;<br \/>\nPlan hash value: 2612538111<br \/>\n&nbsp;<br \/>\n-------------------------------------------------------------------------------------------------------------------------<br \/>\n| Id  | Operation                      | Name                   | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |<br \/>\n-------------------------------------------------------------------------------------------------------------------------<br \/>\n|   0 | SELECT STATEMENT               |                        |       |       |    83 (100)|          |       |       |<br \/>\n|   1 |  PARTITION RANGE INLIST        |                        |   246 | 21402 |    83   (0)| 00:00:01 |KEY(I) |KEY(I) |<br \/>\n|*  2 |   TABLE ACCESS HYBRID PART FULL| HYBRID_PARTITION_TABLE |   246 | 21402 |    83   (0)| 00:00:01 |KEY(I) |KEY(I) |<br \/>\n|*  3 |    TABLE ACCESS FULL           | HYBRID_PARTITION_TABLE |       |       |            |          |KEY(I) |KEY(I) |<br \/>\n-------------------------------------------------------------------------------------------------------------------------<br \/>\n&nbsp;<br \/>\nPredicate Information (identified by operation id):<br \/>\n---------------------------------------------------<br \/>\n&nbsp;<br \/>\n2 - filter((SYS_OP_XTNN(\"HYBRID_PARTITION_TABLE\".\"AMOUNT_SOLD\",\"HYBRID_PARTITION_TABLE\".\"QUANTITY_SOLD\",\"HYBRID_PARTITION_TABLE\".\"PROMO_ID\",\"HYBRID_PARTITION_TABLE\".\"CHANNEL_ID\",\"HYBRID_PARTITION_TABLE\".\"TIME_ID\",\"HYBRID_PARTITION_TABLE\".\"CUST_ID\",\"HYBRID_PARTITION_TABLE\".\"PROD_ID\") AND INTERNAL_FUNCTION(\"TIME_ID\")))<br \/>\n&nbsp;<br \/>\n3 - filter((SYS_OP_XTNN(\"HYBRID_PARTITION_TABLE\".\"AMOUNT_SOLD\",\"HYBRID_PARTITION_TABLE\".\"QUANTITY_SOLD\",\"HYBRID_PARTITION_TABLE\".\"PROMO_ID\",\"HYBRID_PARTITION_TABLE\".\"CHANNEL_ID\",\"HYBRID_PARTITION_TABLE\".\"TIME_ID\",\"HYBRID_PARTITION_TABLE\".\"CUST_ID\",\"HYBRID_PARTITION_TABLE\".\"PROD_ID\") AND INTERNAL_FUNCTION(\"TIME_ID\")))<br \/>\n<\/code><\/p>\n<p><strong>6. Memoptimized Rowstore<\/strong><\/p>\n<p>Enables fast data inserts into Oracle Database 19c from applications, such as Internet of Things (IoT), which ingest small, high volume transactions with a minimal amount of transactional overhead.<\/p>\n<p><strong>7. 3 PDBs per Multitenant-DB without having to pay for the Multitenant option<\/strong><\/p>\n<p>Beginning with 19c it is allowed to create 3 PDBs in a Container-DB without requiring the Mutitenant-Option license from Oracle. As the single- or multi-tenant DB becomes a must in Oracle 20, it is a good idea to start using the container-DB architecture with 19c already.<\/p>\n<h3>Please let me know your experience with Oracle 19c.<\/h3>\n","protected":false},"excerpt":{"rendered":"<p>Oracle 19c has been released quite a while ago already and some customers already run it in Production. However, as it is the long term supported release, I thought I blog about some interesting information and features around 19c to encourage people to migrate to it. Download Oracle 19c: https:\/\/www.oracle.com\/technetwork\/database\/enterprise-edition\/downloads or https:\/\/edelivery.oracle.com (search e.g. for [&hellip;]<\/p>\n","protected":false},"author":35,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229,59],"tags":[280,1672,96,1171],"type_dbi":[],"class_list":["post-12870","post","type-post","status-publish","format-standard","hentry","category-database-administration-monitoring","category-oracle","tag-database","tag-new-features","tag-oracle","tag-oracle-19c"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Oracle 19c - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/oracle-19c\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Oracle 19c\" \/>\n<meta property=\"og:description\" content=\"Oracle 19c has been released quite a while ago already and some customers already run it in Production. However, as it is the long term supported release, I thought I blog about some interesting information and features around 19c to encourage people to migrate to it. Download Oracle 19c: https:\/\/www.oracle.com\/technetwork\/database\/enterprise-edition\/downloads or https:\/\/edelivery.oracle.com (search e.g. for [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/oracle-19c\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-10-09T08:33:46+00:00\" \/>\n<meta name=\"author\" content=\"Clemens Bleile\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ifgtxD2SrQ8r!YuXj\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Clemens Bleile\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-19c\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-19c\/\"},\"author\":{\"name\":\"Clemens Bleile\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0ac04011f60f2e93c115358d0789c2da\"},\"headline\":\"Oracle 19c\",\"datePublished\":\"2019-10-09T08:33:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-19c\/\"},\"wordCount\":863,\"commentCount\":0,\"keywords\":[\"database\",\"New Features\",\"Oracle\",\"Oracle 19c\"],\"articleSection\":[\"Database Administration &amp; Monitoring\",\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/oracle-19c\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-19c\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/oracle-19c\/\",\"name\":\"Oracle 19c - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2019-10-09T08:33:46+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0ac04011f60f2e93c115358d0789c2da\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-19c\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/oracle-19c\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-19c\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Oracle 19c\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0ac04011f60f2e93c115358d0789c2da\",\"name\":\"Clemens Bleile\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/1f596609fc67cb28ed714e7bccc81ed4cd73b8582a8148a490c77daeb2fde21a?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1f596609fc67cb28ed714e7bccc81ed4cd73b8582a8148a490c77daeb2fde21a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1f596609fc67cb28ed714e7bccc81ed4cd73b8582a8148a490c77daeb2fde21a?s=96&d=mm&r=g\",\"caption\":\"Clemens Bleile\"},\"description\":\"Clemens Bleile has more than 30 years of IT experience, thirteen in Oracle Support and fifteen in Oracle Consulting. He is specialized in Oracle Database Performance Tuning (SQL Tuning, DB Tuning) and developing an Oracle DB IT architecture (highly available, low-maintenance, cost efficient storage of data). He is an expert in problem analysis and resolution. Prior to joining dbi services, Clemens Bleile was Manager of the EMEA Database Performance team at the Oracle Global Customer Support Services. Clemens Bleile is Oracle Certified Professional 11g, 12c and Oracle Certified Expert for Performance Management and Tuning and holds a Master Degree, Business Information Systems from the Fachhochschule Furtwangen, Germany.\",\"sameAs\":[\"https:\/\/www.dbi-services.com\",\"https:\/\/x.com\/ifgtxD2SrQ8r!YuXj\"],\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/clemens-bleile\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Oracle 19c - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/oracle-19c\/","og_locale":"en_US","og_type":"article","og_title":"Oracle 19c","og_description":"Oracle 19c has been released quite a while ago already and some customers already run it in Production. However, as it is the long term supported release, I thought I blog about some interesting information and features around 19c to encourage people to migrate to it. Download Oracle 19c: https:\/\/www.oracle.com\/technetwork\/database\/enterprise-edition\/downloads or https:\/\/edelivery.oracle.com (search e.g. for [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/oracle-19c\/","og_site_name":"dbi Blog","article_published_time":"2019-10-09T08:33:46+00:00","author":"Clemens Bleile","twitter_card":"summary_large_image","twitter_creator":"@ifgtxD2SrQ8r!YuXj","twitter_misc":{"Written by":"Clemens Bleile","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-19c\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-19c\/"},"author":{"name":"Clemens Bleile","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0ac04011f60f2e93c115358d0789c2da"},"headline":"Oracle 19c","datePublished":"2019-10-09T08:33:46+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-19c\/"},"wordCount":863,"commentCount":0,"keywords":["database","New Features","Oracle","Oracle 19c"],"articleSection":["Database Administration &amp; Monitoring","Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/oracle-19c\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-19c\/","url":"https:\/\/www.dbi-services.com\/blog\/oracle-19c\/","name":"Oracle 19c - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2019-10-09T08:33:46+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0ac04011f60f2e93c115358d0789c2da"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-19c\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/oracle-19c\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-19c\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Oracle 19c"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0ac04011f60f2e93c115358d0789c2da","name":"Clemens Bleile","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/1f596609fc67cb28ed714e7bccc81ed4cd73b8582a8148a490c77daeb2fde21a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1f596609fc67cb28ed714e7bccc81ed4cd73b8582a8148a490c77daeb2fde21a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1f596609fc67cb28ed714e7bccc81ed4cd73b8582a8148a490c77daeb2fde21a?s=96&d=mm&r=g","caption":"Clemens Bleile"},"description":"Clemens Bleile has more than 30 years of IT experience, thirteen in Oracle Support and fifteen in Oracle Consulting. He is specialized in Oracle Database Performance Tuning (SQL Tuning, DB Tuning) and developing an Oracle DB IT architecture (highly available, low-maintenance, cost efficient storage of data). He is an expert in problem analysis and resolution. Prior to joining dbi services, Clemens Bleile was Manager of the EMEA Database Performance team at the Oracle Global Customer Support Services. Clemens Bleile is Oracle Certified Professional 11g, 12c and Oracle Certified Expert for Performance Management and Tuning and holds a Master Degree, Business Information Systems from the Fachhochschule Furtwangen, Germany.","sameAs":["https:\/\/www.dbi-services.com","https:\/\/x.com\/ifgtxD2SrQ8r!YuXj"],"url":"https:\/\/www.dbi-services.com\/blog\/author\/clemens-bleile\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/12870","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=12870"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/12870\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=12870"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=12870"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=12870"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=12870"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}