Differences in 18c and 19c
1. New database initialization parameters, MIN_AUTH_SERVERS
and MAX_AUTH_SERVERS
, have been added to configure Database Resident Connection Pooling (DRCP).
MIN_AUTH_SERVERS
and MAX_AUTH_SERVERS
allow the number of processes used to handle session authentication for DRCP to be configured for optimal usage.
2. The LISTAGG aggregate function now supports duplicate elimination by using the new DISTINCT keyword.
The LISTAGG aggregate function orders the rows for each group in a query according to the ORDER BY expression and then concatenates the values into a single string. You can remove duplicate values from the specified expression before concatenation into a single string using the new DISTINCT keyword. This removes the need to create complex query processing to find the distinct values before using the aggregate LISTAGG function. Use the DISTINCT option to remove duplicate values within the LISTAGG function.
3.Immutable Tables
Immutable tables are insert-only tables in which existing data cannot be modified. Deleting rows is either prohibited or restricted based on the insertion time of the rows.
Immutable tables protect data against unauthorized modification by insiders. This includes database administrators or compromised users who have access to insider credentials. Immutable tables also prevent accidental data modification that may be caused by human error.
The DBMS_IMMUTABLE_TABLE
package is used for maintenance of immutable tables.
The DELETE_EXPIRED_ROWS
procedure removes any rows that are beyond the retention period. They can't be removed using a normal DELETE
statement.
4. Performance - SQL Quarantine: SQL statements that are terminated by Oracle Database Resource Manager due to their excessive consumption of CPU and I/O resources can be automatically quarantined. The execution plans associated with the terminated SQL statements are quarantined to prevent them from being executed again.This feature protects an Oracle database from performance degradation by preventing execution of SQL statements that excessively consume CPU and I/O resources.
5. Hybrid Partitioned Tables
Partitioned external tables were introduced in 12.2. Such tables use the external table driver (ORACLE_LOADER or ORACLE_DATAPUMP) to get the data from a file or even a cloud source (see also DBMS_CLOUD). And each partition can have a different file or even a different oracle directory as the source.
Now we can have tables that have external partitions and normal table partitions. They are called hybrid partitioned tables and are a special case of the external partitioned tables.
6.MAX_IDLE_BLOCKER_TIME
Additionally to MAX_IDLE_TIME
there is a new parameter that can restrict the duration of a database session: MAX_IDLE_BLOCKER_TIME
. Both are initialization parameters, but also resource plan directives.
Setting such a parameter to 0 means the session is unrestricted. Other values (for the initialization parameters) are in minutes.
MAX_IDLE_BLOCKER_TIME
will limit sessions that consume resources. This is the much better option, because connection pools from application servers usually are idle when the are not in use. Those sessions should not be touched if we set MAX_IDLE_TIME
to 0 and MAX_IDLE_BLOCKER_TIME
to 30 for example.
7.DBMS_XPLAN : Compare Execution Plans in Oracle Database 19c and 21c (COMPARE_PLANS, COMPARE_CURSORS and COMPARE_EXPLAIN)