By Franck Pachot

.
This is the session I preferred at Oracle Open World. Well, I’m writing that before going to @ludodba one and I’m sure I’ll have then two preferred sessions… So Vit Spinka has presented the internals of the new multitenant architecture. It’s always good to play with some internals things. Not only for the geeky fun of it but also because it helps understand how it work and address issues later.

I had investigated the metadata/object links in my blog post (and thanks to Vit for having referenced it during his presentation). But I learned from vit about what has changed in redo logs. In his case, the research on redo log internals is not just a curiosity. It’s mandatory for his job: he is the principal developer for Dbvisit Replicate and Dbvisit Replicate reads the redo logs: the MINER process reads them and transforms them to something that can be used by the APPLY process.

So I’ll not repeat what is available in his slides:
http://vitspinka.cz/files/CON2282%20Internals%20of%20the%20Oracle%20Database%2012c%20Multitenant%20Architecture.pdf

Finally the redo is quite the same except that it adds the container id (it’s one byte only because we are limited to 252 PDB). Addressing the files is not very special as the pluggable is very similar to transportable tablespaces. Addressing the objects is a bit different because we can have same object id across several PDB, and this is the reason to introduce the container id in the redo. But that’s not so special.

The thing to remember about the new multitenant architecture is that:

  • it is not a big change for the instance which still manages the same objects (sessions, cursors, services, buffers, etc) just adding a container id
  • it no change for the database files as transportable tablespaces already introduced ‘plugging’
  • all the magic is in the dictionary in order to have a shared dictionary for oracle objects anda  private dictionary for application objects.