240 likes | 527 Views
Tim Hall Oracle ACE Director Oracle ACE of the Year 2006 OakTable Network OCP DBA (7, 8, 8i, 9i, 10g, 11g) OCP Advanced PL/SQL Developer Oracle Database: SQL Certified Expert http://www.oracle-base.com Books Oracle PL/SQL Tuning Oracle Job Scheduling.
E N D
Tim Hall Oracle ACE Director Oracle ACE of the Year 2006 OakTable NetworkOCP DBA (7, 8, 8i, 9i, 10g, 11g) OCP Advanced PL/SQL Developer Oracle Database: SQL Certified Expert http://www.oracle-base.com Books Oracle PL/SQL Tuning Oracle Job Scheduling Clonedb: The quick and easy cloning solution you never knew you had. 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 notappropriate). http://www.oracle-base.com
How do we Clone Databases? • There are already several methods for cloning databases including: • Manually copy files and recreate the database. • RMAN DUPLICATE - active database (11g). • RMAN DUPLICATE - backup. • 3rd Party solutions. • All require copying or restoring filesto 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) NFS C.O.W. Files • Clones use read-only image copies of datafiles as source. • Only modified blocks are written to NFS location. Clone Database Datafile Image Copies NFS C.O.W. Files Clone Database 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 repeatedcloning 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 /u01/nfs-share • Append the share into the “/etc/exports” file./u01/nfs-share *(rw,sync,no_wdelay,insecure, 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 ’/u01/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='/u01/backups/prod/initTEST.ora' FROM SPFILE; • Edit the PFILE, changing allreferences to the original SIDand 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 directoriesfor the NFS mount and tosupport 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.nas1:/u01/nfs-share /u01/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 /u01/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 thegenerated 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 tablespacehas 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 usedfor performance testing, do youreally want a different storagetechnology in the mix? • Possible performanceimprovements 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 copybackups how much space are youreally 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/11g/Clonedb_11gR2.php http://www.oracle-base.com