Clonedb The quick and easy cloning solution you

Clonedb: The quick and easy cloning solution you never knew you had. Tim Hall Oracle ACE Director Oracle ACE of the Year 2006 Oak. Table Network OCP DBA (7, 8, 8 i, 9 i, 10 g, 11 g) OCP Advanced PL/SQL Developer Oracle Database: SQL Certified Expert http: //www. oracle-base. com Books Oracle PL/SQL Tuning Oracle Job Scheduling http: //www. oracle-base. com

Clonedb: The quick and easy cloning solution you never knew you had. • What is a clone? • Why clone databases? • How do we clone databases? • What is Clonedb? • Demo of Clonedb • Considerations http: //www. oracle-base. com

What is a Clone? • An exact copy of the original. http: //www. oracle-base. com

Why Clone Databases? • Set up new databases as copies of existing ones. • Data refresh for development and test environments from production. • Test backup & recovery. • Create standby databases. • Recover lost data or objects (where flashback is not appropriate). http: //www. oracle-base. com

How do we Clone Databases? • There already several methods for cloning databases including: – – Manually copy files and recreate the database. RMAN DUPLICATE - active database (11 g). RMAN DUPLICATE - backup. 3 rd Party solutions. • All require copying or restoring files to new location requiring: – Additional disk space. – Time to perform the copy. • Clonedb makes cloning quicker and saves space. http: //www. oracle-base. com

What is Clonedb? • In 11. 1 Oracle added the Direct NFS Client to the database. • The 11. 2. 0. 2 patch set introduced Clonedb functionality, built on top of Direct NFS. • Clonedb uses Copy-On-Write (COW) technology for clones. http: //www. oracle-base. com

Copy-On-Write (COW) Clone Database NFS C. O. W. Files Datafile Image Copies • Clones use read-only image copies of datafiles as source. • Only modified blocks are written to NFS location. http: //www. oracle-base. com

What is Clonedb? (continued) • Clonedb saves space when you have multiple clones as they can all reference the same source files. • One-time server setup, then repeated cloning is super-quick. • Only documented in My Oracle Support (MOS) Note 1210656. 1 http: //www. oracle-base. com

Demo (cleanup. sql) http: //www. oracle-base. com

NFS Server Setup • Create a directory to hold the copy-on-write files. # mkdir -p /u 01/nfs-share • Append the share into the “/etc/exports” file. /u 01/nfs-share *(rw, sync, no_wdelay, insecure_locks, no_root_squash) • Make sure the NFS service is turned on. # chkconfig nfs on # service nfs restart http: //www. oracle-base. com

Production Backup • Make an image copy backup of the database. The copy can be placed on a share (CIFS/NFS) or copied to the local file system of the server running the clone. configure controlfile autobackup off; sql 'alter database begin backup'; run { set nocfau; backup as copy database format ’/u 01/backups/prod/%U’; } sql 'alter database end backup'; (backup. sh) http: //www. oracle-base. com

Copy Production PFILE • Take a copy of the production PFILE by running the following command as the SYS user. (create_pfile. sh) CREATE PFILE='/u 01/backups/prod/init. TEST. ora' FROM SPFILE; • Edit the PFILE, changing all references to the original SID and database name. http: //www. oracle-base. com

Clonedb Server Setup • Turn on Direct NFS for the ORACLE_HOME on the clonedb server. (dnfs. sh) $ cd $ORACLE_HOME/rdbms/lib $ make -f ins_rdbms. mk dnfs_on • Make the necessary directories for the NFS mount and to support the instance. (directories. sh) http: //www. oracle-base. com

NFS Mount • Add the NFS mount to the “/etc/fstab” file, along with any other necessary shares. nas 1: /u 01/nfs-share /u 01/copy-on-write nfs rw, bg, hard, nointr, tcp, vers=3, timeo=600, rsize=32768, wsize=32768, actimeo=0 0 0 • Mount the copy-on-write location. # mount /u 01/copy-on-write http: //www. oracle-base. com

Clone the database • Set the required environment variables and run the “clone. pl” script. (create_clone_script. sh) • Review the contents of the generated files. • Run the files to create the clone. (create_clone. sh) http: //www. oracle-base. com

Clone the database • If you did hot backup you may need to recover database. SQL> RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL; SQL> ALTER DATABASE OPEN RESETLOGS; • Make sure the TEMP tablespace has been handled properly. (manage_temp. sql) • Check the database. (datafiles. sql) http: //www. oracle-base. com

Considerations - Performance • Copy-On-Write location is NFS. Is that an issue for you? • If a cloned database is to be used for performance testing, do you really want a different storage technology in the mix? • Possible performance improvements on the horizon? http: //www. oracle-base. com

Considerations - Space Savings • Over time more changed blocks will be written to NFS location, so space savings will reduce. • Only works with image copies. If you don’t use image copy backups how much space are you really saving? http: //www. oracle-base. com

Considerations - Others • Very little documentation. • Very new. http: //www. oracle-base. com

Where would I use it? • For short-lived clones used for functional, not performance testing. • To test backups. • To recover lost objects. http: //www. oracle-base. com

Where would I NOT use it? • Setting up long-term clones. • For clones used for performance testing. • For setting up a standby database. http: //www. oracle-base. com

Summary • Very quick cloning. • Potential for big space savings. • Need to be on at least 11. 2. 0. 2. • Need to use NFS for COW location. http: //www. oracle-base. com

The End… • Download slides and example code at: http: //www. oracle-base. com/workshops • Article: http: //www. oracle-base. com/articles/11 g/Clonedb_11 g. R 2. php http: //www. oracle-base. com
- Slides: 23