Clone a database
The below SQL generates a SQL script that can be used to clone a database, putting tablespaces into hot backup mode one at a time. Run it on the source database, and edit the output to specify new target file and directory names, and change cp to rcp or scp if cloning to another server.
Database clones can also be done with rman, which has the advantage of avoiding the performance draining hot backup mode.
set pages 9999 lines 132 serverout on size 99999 BEGIN FOR t IN ( select distinct tablespace_name from dba_data_files ) LOOP dbms_output.put_line('alter tablespace '||t.tablespace_name||' begin backup ;') ; FOR f IN ( select file_name from dba_data_files where tablespace_name = t.tablespace_name ) LOOP dbms_output.put_line('host cp '||f.file_name||' '||f.file_name ) ; END LOOP ; dbms_output.put_line('alter tablespace '||t.tablespace_name||' end backup ;') ; END LOOP ; END ; / set lines 80 select 'alter tablespace '||tablespace_name||' add tempfile '||file_name||' size '||bytes/1024/1024||' m ;' from dba_temp_files / prompt alter system switch logfile ;; prompt alter system backup controlfile to trace ;;
Leave a Reply