Instead of writing and adapting cloning scripts for each client, I was looked today at gDBClone script, provided by Oracle note gDBClone Powerful Database Clone/Snapshot Management Tool (Doc ID 2099214.1).
Ruggero Citton did an excellent work and I believe that for most of situations and mainly in a development environment with the need of fast DB Snapshots this tool provides an alternative to developing new tools.
I find great that for database cloning it creates a temporary listener, and does not mixup with existing configuration. Another great thing is the possibility to use a pre-created passwordfile to clone remote DBs, without the need to provide any password at run time (or hardcode, or having a wallet).
It is a tool that works with DBs from Oracle 11.2 up, and also with RAC, RAC One node, it can perform upgrades, create standby, it works in ODA, etc.
The long set of pre-checks is very nice:
MacroStep1 - Getting information and validating setup... INFO: 2022-01-13 15:40:09: Validating environment INFO: 2022-01-13 15:40:09: Checking superuser usage INFO: 2022-01-13 15:40:09: Checking if target database name 'xpto' is a valid name INFO: 2022-01-13 15:40:09: Checking if target database home 'OraHome3' exists INFO: 2022-01-13 15:40:09: Checking if Oracle Restart INFO: 2022-01-13 15:40:09: Checking ping to host 'server27' INFO: 2022-01-13 15:40:09: Getting ORACLE_BASE path from orabase INFO: 2022-01-13 15:40:09: Checking if target database 'xpto' exists INFO: 2022-01-13 15:40:09: Checking registered instance 'xpto' INFO: 2022-01-13 15:40:12: Checking listener on 'server27:1521' INFO: 2022-01-13 15:40:12: Checking ASM command options INFO: 2022-01-13 15:40:15: Checking if '+U02' is a valid ASM diskgroup INFO: 2022-01-13 15:40:15: Checking '+U02' RDBMS compatible INFO: 2022-01-13 15:40:16: Checking if '+U01' is a valid ASM diskgroup INFO: 2022-01-13 15:40:16: Checking '+U01' RDBMS compatible INFO: 2022-01-13 15:40:16: Checking if '+U01' is a valid ASM diskgroup INFO: 2022-01-13 15:40:17: Checking '+U01' RDBMS compatible INFO: 2022-01-13 15:40:20: Checking source and target database version INFO: 2022-01-13 15:40:21: Checking source database size INFO: 2022-01-13 15:40:23: Checking source database role INFO: 2022-01-13 15:40:23: Checking source log mode INFO: 2022-01-13 15:40:24: Checking Flash Cache setting SUCCESS: 2022-01-13 15:40:24: Environment validation complete
At the client I’m these days however I would be happy with some more flexibility.
- The database unique name convention include underscores (xptodb_2 for instance). gDBClone only accepts alphanumeric elements to the clone database name.
- gDBClone needs to run with root privileges. You can (recommended) configure in /etc/sudoers, however this is far too much for my client.
- Cloning a dataguard protected database configured with broker failed at the end of the duplicate, as the clone automatically started the broker and connected back to the primary, failing then with
ORA-16649: possible failover to another database prevents this database from being opened. The half-baked clone needs to be dropped manually.
- It would be nice to have commands (or be part of clone) to create new ACFS mountpoints
At the end I get the impression that gDBClone was developed for specific customer needs and I’m sure it does it really well. For the needs and restrictions I’ve in different clients unfortunately I still need to use my set of tools. Luckily with the most recent Oracle versions the cloning, snapping, upgrades has become much easier and scripting it does not require many lines of code.