<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4402213089738121600</id><updated>2011-04-21T15:28:35.275-07:00</updated><title type='text'>Vivek Raghavan M</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mvivekraghavan.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4402213089738121600/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mvivekraghavan.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>vivek</name><uri>http://www.blogger.com/profile/15591597830584050551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>1</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4402213089738121600.post-973177379464257112</id><published>2009-05-25T11:18:00.000-07:00</published><updated>2009-05-25T11:19:52.602-07:00</updated><title type='text'>RMAN cloning</title><content type='html'>Duplicate a Database Using RMAN&lt;br /&gt;A nice feature of RMAN is the ability to duplicate, or clone, a database from a previous backup. It is possible to create a duplicate database on a remote server with the same file structure, a remote server will a different file structure or the local server with a different file structure. In this article I'll demonstrate the last method, how to duplicate a database on the local server with a different file structure. This can prove useful when you want to recover selected objects from a backup, rather than roll back a whole database or tablespace.&lt;br /&gt;&lt;br /&gt;Frist create a target database with archivelog mode&lt;br /&gt;SQL&gt; create tablespace ts1 datafile '/disk1/oracle/app/oradata/orcl/data1.dbf' size 200m;&lt;br /&gt;&lt;br /&gt;Tablespace created.&lt;br /&gt;&lt;br /&gt;Create one user with sysdba privilage&lt;br /&gt;SQL&gt; create user reco identified by reco default tablespace ts1;&lt;br /&gt;&lt;br /&gt;User created.&lt;br /&gt;&lt;br /&gt;SQL&gt; grant sysdba,connect,create session,resource to reco;&lt;br /&gt;&lt;br /&gt;Grant succeeded.&lt;br /&gt;&lt;br /&gt;Second create a catalog database&lt;br /&gt;&lt;br /&gt;SQL&gt; create tablespace tbs1 datafile '/disk1/oracle/app/oradata/catalog/data1.dbf' size 200m;&lt;br /&gt;&lt;br /&gt;Tablespace created.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Create one user with recovery_catalog_database privilage&lt;br /&gt;&lt;br /&gt;SQL&gt; create user cache identified by cache default tablespace tbs1;&lt;br /&gt;&lt;br /&gt;User created.&lt;br /&gt;&lt;br /&gt;SQL&gt; grant recovery_catalog_owner,connect,create session,resource to cache;&lt;br /&gt;&lt;br /&gt;Grant succeeded.&lt;br /&gt;&lt;br /&gt;Create listner with target and catalog database&lt;br /&gt;&lt;br /&gt;$netca&lt;br /&gt;&lt;br /&gt;Configure RMAN&lt;br /&gt;&lt;br /&gt;$Rman target=usernmae/password@target catalog=username/password@catalog&lt;br /&gt;&lt;br /&gt;RMAN&gt;create catalog&lt;br /&gt;&lt;br /&gt;RMAN&gt;register database&lt;br /&gt;&lt;br /&gt;RMAN&gt;backup database&lt;br /&gt;&lt;br /&gt;RMAN&gt;exit&lt;br /&gt;&lt;br /&gt;we must create a password file for the duplicate instance:&lt;br /&gt;$orapwd file=/disk1/oracle/app/10g/dbs/orapwDUP password=password entries=10&lt;br /&gt;&lt;br /&gt;Next add the appropriate entries into the tnsnames.ora and listener.ora files in the $ORACLE_HOME/network/admin directory. Remember to load the new configuration into the listener:&lt;br /&gt;&lt;br /&gt;# Added to the listener.ora SID_LIST&lt;br /&gt;(SID_DESC =&lt;br /&gt;  (ORACLE_HOME = disk1/oracle/app/10g/)&lt;br /&gt;  (SID_NAME = DUP)&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;# Added to the tnsnames.ora&lt;br /&gt;DUP =&lt;br /&gt;  (DESCRIPTION =&lt;br /&gt;    (ADDRESS_LIST =&lt;br /&gt;      (ADDRESS = (PROTOCOL = TCP)(HOST = server1.tshcomputing.com)(PORT = 1521))&lt;br /&gt;    )&lt;br /&gt;    (CONNECT_DATA =&lt;br /&gt;      (ORACLE_SID = DUP)&lt;br /&gt;    )&lt;br /&gt;  )&lt;br /&gt;&lt;br /&gt;# Reload listener&lt;br /&gt;lsnrctl &gt;reload&lt;br /&gt;&lt;br /&gt;Next create an init.ora file for the duplicate database. Since we are duplicating the database onto the same server as the original we must convert the file names so there is no conflict:&lt;br /&gt;&lt;br /&gt;Vi Initdup.ora&lt;br /&gt;# Minimum Requirement.&lt;br /&gt;DB_NAME=DUP&lt;br /&gt;CONTROL_FILES /disk1/oracle/app/oradata/dub//control01.ctl,&lt;br /&gt;               /disk1/oracle/app/oradata/dub/control02.ctl,&lt;br /&gt;               /disk1/oracle/app/oradata/dub/control03.ctl)&lt;br /&gt;&lt;br /&gt;# Convert file names to allow for different directory structure.&lt;br /&gt;DB_FILE_NAME_CONVERT=(/u02/oradata/TSH1/,/u02/oradata/DUP/)&lt;br /&gt;LOG_FILE_NAME_CONVERT=(/u01/oradata/TSH1/,/u01/oradata/DUP/)&lt;br /&gt;&lt;br /&gt;# make sure block_size and compatible parameters&lt;br /&gt;# match if you are not using the default.&lt;br /&gt;DB_BLOCK_SIZE=8192&lt;br /&gt;COMPATIBLE= 10.2.0.1.0&lt;br /&gt;&lt;br /&gt;Next we connect to the duplicate instance:&lt;br /&gt;ORACLE_SID=DUP; export ORACLE_SID&lt;br /&gt;&lt;br /&gt;sqlplus /nolog&lt;br /&gt;SQL&gt;conn / as sysdba&lt;br /&gt;&lt;br /&gt;Next we create an SPFILE based on the init.ora:&lt;br /&gt;SQL&gt;CREATE SPFILE FROM PFILE='/u01/app/oracle/admin/DUP/pfile/init.ora';&lt;br /&gt;&lt;br /&gt;Next we start the database in NOMOUNT mode:&lt;br /&gt;SQL&gt;STARTUP FORCE NOMOUNT;&lt;br /&gt;With the duplicate database started we can now connect to it from RMAN. For the duplication to work we must connect to the original database (TARGET), the recovery catalog (CATALOG) and our duplicate database (AUXILIARY):&lt;br /&gt;&lt;br /&gt;ORACLE_SID=DUP; export ORACLE_SID&lt;br /&gt;$rman TARGET sys/password@tsh1 CATALOG rman/rman@tshadm AUXILIARY /&lt;br /&gt;&lt;br /&gt;We can then dupicate the database using one of the following commands:&lt;br /&gt;# Duplicate database to TARGET's current state.&lt;br /&gt;RMAN&gt;DUPLICATE TARGET DATABASE TO DUP;&lt;br /&gt;&lt;br /&gt;Or&lt;br /&gt;&lt;br /&gt;# Duplicate database to TARGET's state 4 days ago.&lt;br /&gt;RMAN&gt;DUPLICATE TARGET DATABASE TO DUP UNTIL TIME 'SYSDATE-4';&lt;br /&gt;&lt;br /&gt;&lt;a name="Steps_Required"&gt;run {&lt;/a&gt;&lt;br /&gt;    # Allocate the channel for the duplicate work&lt;br /&gt;    allocate auxiliary channel ch1 type disk;&lt;br /&gt;&lt;br /&gt;    # Duplicate the database to TESTDB&lt;br /&gt;    duplicate target database to TESTDB;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;using target database controlfile instead of recovery catalog&lt;br /&gt;allocated channel: ch1&lt;br /&gt;channel ch1: sid=13 devtype=DISK&lt;br /&gt;Starting Duplicate Db at 03-NOV-04&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;printing stored script: Memory Script&lt;br /&gt;{&lt;br /&gt;   set until scn  14757706;&lt;br /&gt;   set newname for datafile  1 to "/u06/app/oradata/TESTDB/system01.dbf";&lt;br /&gt;   set newname for datafile  2 to "/u06/app/oradata/TESTDB/undotbs1_01.dbf";&lt;br /&gt;   set newname for datafile  3 to "/u06/app/oradata/TESTDB/cwmlite01.dbf";&lt;br /&gt;   set newname for datafile  4 to "/u06/app/oradata/TESTDB/drsys01.dbf";&lt;br /&gt;   set newname for datafile  5 to "/u06/app/oradata/TESTDB/indx01.dbf";&lt;br /&gt;   set newname for datafile  6 to "/u06/app/oradata/TESTDB/odm01.dbf";&lt;br /&gt;   set newname for datafile  7 to "/u06/app/oradata/TESTDB/tools01.dbf";&lt;br /&gt;   set newname for datafile  8 to "/u06/app/oradata/TESTDB/users01.dbf";&lt;br /&gt;   set newname for datafile  9 to "/u06/app/oradata/TESTDB/xdb01.dbf";&lt;br /&gt;   set newname for datafile  10 to "/u06/app/oradata/TESTDB/example01.dbf";&lt;br /&gt;   set newname for datafile  11 to "/u06/app/oradata/TESTDB/perfstat01.dbf";&lt;br /&gt;   set newname for datafile  12 to "/u06/app/oradata/TESTDB/users02.dbf";&lt;br /&gt;   restore&lt;br /&gt;   check readonly&lt;br /&gt;   clone database ; }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4402213089738121600-973177379464257112?l=mvivekraghavan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mvivekraghavan.blogspot.com/feeds/973177379464257112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mvivekraghavan.blogspot.com/2009/05/rman-cloning.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4402213089738121600/posts/default/973177379464257112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4402213089738121600/posts/default/973177379464257112'/><link rel='alternate' type='text/html' href='http://mvivekraghavan.blogspot.com/2009/05/rman-cloning.html' title='RMAN cloning'/><author><name>vivek</name><uri>http://www.blogger.com/profile/15591597830584050551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
