PDB Logging Clause : What you give with one hand, you take away with the other…

 

The Oracle 12c 12.1.0.2 release came with a bit of functionality called the PDB Logging Clause. Or to put it another way, it didn’t because the feature just didn’t work. I raised an SR highlighting the issue.

The PDB logging clause is meant to allow you to define a default logging clause for the whole PDB. If a tablespace is created in the PDB without an explicit logging clause, the current PDB logging clause setting should be used.

It was listed as a new feature in 12.1.0.2, but like I said, it just didn’t work. You could alter the PDB logging clause setting, but the CREATE TABLESPACE command seemed oblivious to this setting…

I wrote an article about the feature, with a big note about it not working, because it confused the hell out of me when I was looking at it and I saw a bunch of other blogs talking about the feature, without mentioning it was actually broken. I figured it might be worth setting the record straight for any confused parties out there.

Today (6 months later) I got an update to the SR telling me the issue had been fixed by patch 18902135. I downloaded the patch and applied it to a test instance. At first it looked like it was working, but it has introduced a new problem. Once patched the functionality does the following.

  • If the PDB logging clause is set to NOLOGGING, any new tablespaces created without an explicit logging clause are created as NOLOGGING. That sounds like a step in the right direction! It didn’t do this before the patch was applied. 🙂
  • Unfortunately, you *can’t* override this by explicitly specifying the logging clause in the CREATE TABLESPACE command.

The docs are quite clear about how it should work.

“The specified attribute is used to establish the logging attribute of tablespaces created within the PDB if the logging_clause is not specified in the CREATE TABLESPACE statement.”

Fortunately, there is a workaround, which is to assume the feature doesn’t exist and keep doing things the way you always have. That is, manually define tablespaces as NOLOGGING when you need them.

I’ve added the problems associated with the current “bug fix” to my SR and this has been referred back to development. Let’s see how long the fix for this takes… 🙂

Cheers

Tim…

Author: Tim...

DBA, Developer, Author, Trainer.