Skip to content

Oracle 12c

12c Multitenant internals: PDB_PLUG_IN_VIOLATIONS

By Franck Pachot . In the previous post https://www.dbi-services.com/blog/12c-multitenant-internals-pdb-replay-ddl-for-common-users I’ve done some DDL on a common user to show how this is replayed later for PDBs that were not opened at that time. But what happens when one of the DDL fails on one PDB? PDB$LASTREPLAY In the last post, the C##USER1 common user was created and all pluggable databases… 

12c Multitenant internals: PDB replay DDL for common users

By Franck Pachot . In multitenant, you can create common Users, Roles, and Profiles. You create them in CDB$ROOT, with the CONTAINER=ALL clause (which is optional because it is the only possible value when connected to CDB$ROOT) but they are visible to all containers. As the goal of multitenant is to avoid to duplicate common metadata to all containers, You… 

Drop PDB including datafiles may keep files open

By Franck Pachot . I like that Oracle drops the datafiles from the operating system when we remove them from the database (with drop tablespace or drop pluggable database) because I don’t like to have orphean files remaining in the filesystem. However, to ensure that space is reclaimed, we must be sure that Oracle did not leave a process with… 

12cR2 Subquery Elimination

By Franck Pachot . More and more we can see crazy queries generated by ORM frameworks or BI query generators. They are build to be easily generated rather than being optimal. Then, the optimizer has to implement more and more transformations to get an efficient execution plan. Here is one new that appeared in Oracle 12cR2: Subquery Elimination when the… 

Naming of archivelog files with non existing top level archivelog directory

In Oracle 12.2 an archive log directory is accepted, if top level directory does not exist: oracle@localhost:/u01/app/oracle/product/12.2.0/dbhome_1/dbs/ [DMK] ls -l /u02/oradata/DMK/ total 2267920 drwxr-xr-x. 2 oracle dba        96 Dec  6 05:36 arch … Now database accepts this non existing archivelog destination: SQL> alter system set log_archive_dest_3=’LOCATION=/u02/oradata/DMK/arch/arch2′; System altered. But not this: SQL> alter system set log_archive_dest_4=’LOCATION=/u02/oradata/DMK/arch/arch2/arch4′; alter system set log_archive_dest_4=’LOCATION=/u02/oradata/DMK/arch/arch2/arch4’… 

impdp logtime=all metrics=y and 12cR2 parallel metadata

By Franck Pachot . A quick post to show why you should always use LOGTIME=ALL METRICS=Y when using Data Pump. Just look at an example showing the timestamp in front of each line and a message about each task completed by the worker: 15-NOV-17 11:48:32.305: W-5 Processing object type DATABASE_EXPORT/SCHEMA/PROCACT_SCHEMA 15-NOV-17 11:48:34.439: W-13 Completed 28 PROCACT_SCHEMA objects in 1 seconds… 

12c Multitenant Internals: compiling system package from PDB

By Franck Pachot . When I explain the multitenant internals, I show that all metadata about system procedures and packages are stored only in CDB$ROOT and are accessed from the PDBs through metadata links. I take an example with DBMS_SYSTEM that has nothing in SOURCE$ of the PDB. But I show that we can compile it from the PDB. This… 

CBO, FIRST_ROWS and VIEW misestimate

By Franck Pachot . There are several bugs with the optimizer in FIRST_ROWS mode. Here is one I encountered during a 10.2.0.4 to 12.2.0.1 migration when a view had an ‘order by’ in its definition. Here is the test case that reproduces the problem. A big table: SQL> create table DEMO1 (n constraint DEMO1_N primary key,x,y) as select 1/rownum,’x’,’y’ from… 

Dynamic Sampling vs. Extended Statistics

By Franck Pachot . On datawarehouse databases, I frequently recommend increasing the level of dynamic sampling because: Queries have complex predicates with AND, OR, IN(), ranges and correlated values for which the optimizer cannot estimate the cardinality properly Queries are long anyway (compared to OLTP) and can afford more parse time to get an optimized execution plan However, there’s a… 

Multitenant internals: INT$ and INT$INT$ views

By Franck Pachot . This month, I’ll talk – with lot of demos – about multitenant internals at DOAG conference. The multitenant dictionary architecture starts with a simple idea: system metadata and data are in CDB$ROOT and user metadata and data are in PDB. And it could have been that simple. When a session connected to a PDB needs to… 

Multitenant dictionary: what is consolidated and what is not

By Franck Pachot . The documentation says that for Reduction of duplication and Ease of database upgrade the Oracle-supplied objects such as data dictionary table definitions and PL/SQL packages are represented only in the root. Unfortunately, this is only partly true. System PL/SQL packages are only in root but system table definition are replicated into all PDBs. This post is… 

Max PDBs in Standard Edition

By Franck Pachot . Here is a small warning. In Standard Edition, you may expect that the features that are not available for your edition are blocked, but in 12.2 you can create more than one PDB in Standard Edition, and you should set MAX_PDBS to prevent that. 12cR1 In 12.1 Standard Edition, when you try to create more than…