This is just an idea, I know this is not possible right now, but having a plug-in that can use an snapshot to create a clone for that PDB the snapshot belongs to in the same CDB makes sense, doesnt it?.
A short recovery would be needed in order to make the snapshot consistent but as we are always playing in the same container, RMAN history/configuration should be available.
You input and idea as always more valuable. we are planning to include PDB backup with cloning plugin, it's in plan. The cloning plugin (https://communities.netapp.com/docs/DOC-33421) does a backup before create a clone, which is application consistent and useable for restore purpose.
Certainly snapshots used for clones should be available for backup and recovery procedures, especially when those are taken while PDB is in a consistent state. Nevertheless Oracle 12c comes now with a "recover from snapshot" RMAN verb which allows to recover even when snapshot was taken inconsistently (not setting CDB or PDB depending on the case in begin/end backup mode).
But my point is a bit different, what I meant is provided you have some snapshots of a PDB taken without the need to set the PDB in read only mode, why not to feed one of those snapshots as the one to be used for the clone. So the plug-in will not take a new snapshot and build the PDB from there but reused an old snapshot as base for the new cloned PDB. I see two possible cases here :
- A: snapshot was consistent, it can be inmediately used provided we can some how extract a manifest.
- B: snapshot is not consistent, it should undergo a mini recovery before we can use it as clone, which should be possible as we are in the CDB where backups are taken.
I dont know if this makes sense to you, but I see many application for such a functionality in the multi tenancy world. Especially to avoid to set the PDB in read-only mode is a big advantage.