<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Administración Oracle &#187; clonar base de datos con rman</title>
	<atom:link href="http://www.xgodoy.com/wordpress/tag/clonar-base-de-datos-con-rman/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.xgodoy.com/wordpress</link>
	<description>Blog para compartir experiencias y conocimientos en administración de bases de datos Oracle</description>
	<lastBuildDate>Fri, 25 Dec 2009 17:09:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Clonar Base De Datos con RMAN</title>
		<link>http://www.xgodoy.com/wordpress/2008/09/09/clonar-base-de-datos-con-rman/#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://www.xgodoy.com/wordpress/2008/09/09/clonar-base-de-datos-con-rman/#comments</comments>
		<pubDate>Tue, 09 Sep 2008 16:20:07 +0000</pubDate>
		<dc:creator>Jimy Godoy</dc:creator>
				<category><![CDATA[RMAN]]></category>
		<category><![CDATA[backup and restore oracle]]></category>
		<category><![CDATA[clonar base de datos con rman]]></category>
		<category><![CDATA[Clonar base de datos oracle]]></category>

		<guid isPermaLink="false">http://administracionoracle.wordpress.com/?p=10</guid>
		<description><![CDATA[Muchas veces crear una copia de la base de datos es un dolor de cabeza,  afortunadamente RMAN tiene la habilidad de clonar una base de datos, el requisito: un backup de la base de datos a clonar realizado con RMAN. En este articulo un ejemplo práctico de cómo clonar una base de datos Oracle.]]></description>
			<content:encoded><![CDATA[<p class="parrafo">&ldquo;Necesito  una copia exacta de la base de datos&rdquo;, &ldquo;Quiero que clonen esta base de datos aqu&iacute;, all&aacute;,  y otro clon para comparar versiones y otro clon para&hellip;&rdquo;. &iquest;Cu&aacute;ntas veces  hemos escuchado esas solicitudes?, afortunadamente RMAN tiene la habilidad de  clonar una base de datos, el requisito: un backup de la base de datos a clonar  realizado con RMAN. A continuaci&oacute;n realizaremos un ejemplo de clonaci&oacute;n o  duplicaci&oacute;n de una base de datos.</p>
<p class="parrafo">Para  este ejemplo utilizaremos una base de datos llamada PRUEBADB y la  clonaremos con el nombre CLONDB.</p>
<p class="subtitulo"><span  >Requisitos:</span> </p>
<p class="parrafo">Debe  existir al menos un backup de la base de datos a clonar, este backup debe ser  realizado con RMAN. Si nuestra base de datos no se encuentra bajo un r&eacute;gimen de  respaldos tendremos que realizar un backup de esta.<br />
  Para  este ejemplo el ORACLE_HOME es /u01/app/oracle/</p>
<p class="subtitulo">
<span >Paso  0:</span></p>
<p class="parrafo">
<span >Modificar  el archivo /etc/oratab y agregar al final la siguiente l&iacute;nea:</span></p>
<div class="shell">  CLONDB:/u01/app/oracle/db:N </div>
<p>
<p class="parrafo">Luego,  debemos ambientarnos:</p>
<div class="shell">  [oracle@nodo1 ~]$ .  oraenv<br />
  ORACLE_SID = [oracle] ? PRUEBADB<br />
[oracle@nodo1 ~]$ </div>
<p></p>
<p class="parrafo">Si  no existe un backup, se realizar&aacute; uno a trav&eacute;s de RMAN.<br />
Se  crea el directorio /u02/backup</p>
<div class="shell">  mkdir -p  /u02/backup </div>
<p></p>
<p class="parrafo">Es  necesario dejar la base de datos en modo ARCHIVELOG:</p>
<div class="sql" ><span >SQL&gt; shutdown immediate;<br />
  SQL&gt; startup mount;<br />
  SQL&gt; alter database  archivelog;<br />
SQL&gt; startup;</span> </div>
<p></p>
<p class="parrafo">Nos  conectamos a RMAN:</p>
<div class="shell">  /u01/app/oracle/db/bin/rman  target / </div>
<p></p>
<p class="parrafo">Y  ejecutamos el siguiente script:</p>
<div class="sql">  run {<br />
  ALLOCATE CHANNEL d1 DEVICE TYPE disk parms &lsquo;ENV=(OB2BARLIST=PRUEBADB)&rsquo;;<br />
  ALLOCATE CHANNEL d2 DEVICE TYPE disk parms &lsquo;ENV=(OB2BARLIST=PRUEBADB)&rsquo;;<br />
  ALLOCATE CHANNEL d3 DEVICE TYPE disk parms &lsquo;ENV=(OB2BARLIST=PRUEBADB)&rsquo;;<br />
  ALLOCATE CHANNEL d4 DEVICE TYPE disk parms &lsquo;ENV=(OB2BARLIST=PRUEBADB)&rsquo;;<br />
  backup incremental level 0<br />
  format &lsquo;/u02/backup/backup&lt;PRUEBADB_%s:%t:%p&gt;.dbf&rsquo;<br />
  database;<br />
  backup<br />
  format &lsquo;/u02/backup/backup&lt;PRUEBADB_%s:%t:%p&gt;.alf&rsquo;<br />
  archivelog all;<br />
  backup<br />
  format &lsquo;/u02/backup/backup&lt;PRUEBADB_%s:%t:%p&gt;.ctf&rsquo;<br />
  current controlfile;<br />
} </div>
<p></p>
<p class="subtitulo"><span >Paso  1:</span></p>
<p class="parrafo">
<span >Creamos  un pfile para extraer los par&aacute;metros de inicializaci&oacute;n de la base de datos  PRUEBADB:</span></p>
<div class="sql">  SQL&gt;  create pfile=&rsquo;/u01/app/oracle/db/dbs/initCLONDB.ora&rsquo; from spfile; </div>
<p></p>
<p class="parrafo">Modificamos  el pfile generado, para este caso el pfile contiene los siguientes par&aacute;metros:</p>
<div class="shell">  [oracle@nodo1 dbs]$  cat /u01/app/oracle/db/dbs/initCLONDB.ora<br />
  PRUEBADB.__db_cache_size=188743680<br />
  PRUEBADB.__java_pool_size=4194304<br />
  PRUEBADB.__large_pool_size=4194304<br />
  PRUEBADB.__shared_pool_size=79691776<br />
  PRUEBADB.__streams_pool_size=0<br />
  *.audit_file_dest=&rsquo;/u01/app/oracle/admin/PRUEBADB/adump&rsquo;<br />
  *.background_dump_dest=&rsquo;/u01/app/oracle/admin/PRUEBADB/bdump&rsquo;<br />
  *.compatible=&rsquo;10.2.0.1.0&prime;<br />
  *.control_files=&rsquo;/u02/oradata/PRUEBADB/control01.ctl&rsquo;,  &lsquo;/u02/oradata/PRUEBADB/control02.ctl&rsquo;, &lsquo;/u02/oradata/PRUEBADB/control03.ctl&rsquo;<br />
  *.core_dump_dest=&rsquo;/u01/app/oracle/admin/PRUEBADB/cdump&rsquo;<br />
  *.db_block_size=8192<br />
  *.db_domain=&rdquo;<br />
  *.db_file_multiblock_read_count=16<br />
  *.db_name=&rsquo;PRUEBADB&rsquo;<br />
  *.db_recovery_file_dest=&rsquo;/u01/app/oracle/flash_recovery_area&rsquo;<br />
  *.db_recovery_file_dest_size=2147483648<br />
  *.dispatchers=&rsquo;(PROTOCOL=TCP) (SERVICE=PRUEBADBXDB)&rsquo;<br />
  *.job_queue_processes=10<br />
  *.open_cursors=300<br />
  *.pga_aggregate_target=94371840<br />
  *.processes=150<br />
  *.remote_login_passwordfile=&rsquo;EXCLUSIVE&rsquo;<br />
  *.sga_target=285212672<br />
  *.undo_management=&rsquo;AUTO&rsquo;<br />
  *.undo_tablespace=&rsquo;UNDOTBS1&prime;<br />
*.user_dump_dest=&rsquo;/u01/app/oracle/admin/PRUEBADB/udump&rsquo; </div>
<p></p>
<p class="parrafo">Modificamos  el archivo initCLONDB.ora cambiando donde referencia PRUEBADB por CLONDB y  agregar las siguientes l&iacute;neas para indicar que los archivos acepten una estructura  diferente a como vienen en el backup., luego el archivo initCLONDB.ora debe  quedar de la siguiente forma:</p>
<div class="shell">  [oracle@nodo1 CLONDB]$ cat /u01/app/oracle/db/dbs/initCLONDB.ora<br />
  CLONDB.__db_cache_size=188743680<br />
  CLONDB.__java_pool_size=4194304<br />
  CLONDB.__large_pool_size=4194304<br />
  CLONDB.__shared_pool_size=79691776<br />
  CLONDB.__streams_pool_size=0<br />
  *.audit_file_dest=&rsquo;/u01/app/oracle/admin/CLONDB/adump&rsquo;<br />
  *.background_dump_dest=&rsquo;/u01/app/oracle/admin/CLONDB/bdump&rsquo;<br />
  *.compatible=&rsquo;10.2.0.1.0&prime;<br />
  *.control_files=&rsquo;/u02/oradata/CLONDB/control01.ctl&rsquo;,  &lsquo;/u02/oradata/CLONDB/control02.ctl&rsquo;, &lsquo;/u02/oradata/CLONDB/control03.ctl&rsquo;<br />
  *.core_dump_dest=&rsquo;/u01/app/oracle/admin/CLONDB/cdump&rsquo;<br />
  *.db_block_size=8192<br />
  *.db_domain=&rdquo;<br />
  *.db_file_multiblock_read_count=16<br />
  *.db_name=&rsquo;CLONDB&rsquo;<br />
  *.db_recovery_file_dest=&rsquo;/u01/app/oracle/flash_recovery_area&rsquo;<br />
  *.db_recovery_file_dest_size=2147483648<br />
  *.dispatchers=&rsquo;(PROTOCOL=TCP) (SERVICE=CLONDBXDB)&rsquo;<br />
  *.job_queue_processes=10<br />
  *.open_cursors=300<br />
  *.pga_aggregate_target=94371840<br />
  *.processes=150<br />
  *.remote_login_passwordfile=&rsquo;EXCLUSIVE&rsquo;<br />
  *.sga_target=285212672<br />
  *.undo_management=&rsquo;AUTO&rsquo;<br />
  *.undo_tablespace=&rsquo;UNDOTBS1&prime;<br />
  *.user_dump_dest=&rsquo;/u01/app/oracle/admin/CLONDB/udump&rsquo;<br />
  <strong>DB_FILE_NAME_CONVERT=(/u02/oradata/PRUEBADB/,/u02/oradata/CLONDB/)<br />
LOG_FILE_NAME_CONVERT=(/u02/oradata/PRUEBADB/,/u02/oradata/CLONDB/)</strong> </div>
<p></p>
<p class="parrafo">Seguido,  es necesario crear los directorios que utilice el archivo de par&aacute;metros:</p>
<div class="shell">  [oracle@nodo1 dbs]$  mkdir -p /u01/app/oracle/admin/CLONDB/adump<br />
  [oracle@nodo1 dbs]$ mkdir -p /u01/app/oracle/admin/CLONDB/bdump<br />
  [oracle@nodo1 dbs]$ mkdir -p /u02/oradata/CLONDB/<br />
  [oracle@nodo1 dbs]$ mkdir -p /u01/app/oracle/admin/CLONDB/cdump<br />
[oracle@nodo1 dbs]$ mkdir -p /u01/app/oracle/admin/CLONDB/udump </div>
<p></p>
<p class="subtitulo"><span >Paso  2:</span></p>
<p class="parrafo"> <span >Se  crea un archivo de password para la nueva base de datos CLONDB:</span></p>
<div class="shell">  orapwd file=/u01/app/oracle/db/dbs/orapwCLONDB password=password  entries=10; </div>
<p></p>
<p class="subtitulo"><span >Paso  3</span></p>
<p class="parrafo">  <span >Modificar  listener.ora y tnsnames.ora para la nueva base de datos:</span></p>
<div class="shell">  [oracle@nodo1 admin]$ cat listener.ora<br />
  # listener.ora Network Configuration File:  /u01/app/oracle/db/network/admin/listener.ora<br />
  # Generated by Oracle configuration tools.<br />
  SID_LIST_LISTENER =<br />
  (SID_LIST =<br />
  (SID_DESC =<br />
  (SID_NAME = PLSExtProc)<br />
  (ORACLE_HOME = /u01/app/oracle/db)<br />
  (PROGRAM = extproc))<br />
  (SID_DESC =<br />
  (SID_NAME = PRUEBADB)<br />
  (ORACLE_HOME = /u01/app/oracle/db))<br />
  (SID_DESC =<br />
  (SID_NAME = CLONDB)<br />
  (ORACLE_HOME = /u01/app/oracle/db)))<br />
  LISTENER =<br />
  (DESCRIPTION_LIST =<br />
  (DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = nodo1)(PORT = 1521))))<br />
  [oracle@nodo1 admin]$ cat tnsnames.ora<br />
  # tnsnames.ora Network Configuration File: /u01/app/oracle/db/network/admin/tnsnames.ora<br />
  # Generated by Oracle configuration tools.<br />
  PRUEBADB =<br />
  (DESCRIPTION =<br />
  (ADDRESS_LIST =<br />
  (ADDRESS = (PROTOCOL = TCP)(HOST = nodo1)(PORT = 1521)))<br />
  (CONNECT_DATA =<br />
  (SERVICE_NAME = PRUEBADB)))</p>
<p>
  CLONDB =<br />
  (DESCRIPTION =<br />
  (ADDRESS_LIST =<br />
  (ADDRESS = (PROTOCOL = TCP)(HOST = nodo1)(PORT = 1521))<br />
  )<br />
  (CONNECT_DATA =<br />
  (SERVICE_NAME = CLONDB)))</p>
<p>
  EXTPROC_CONNECTION_DATA =<br />
  (DESCRIPTION =<br />
  (ADDRESS_LIST =<br />
  (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))<br />
  )<br />
  (CONNECT_DATA =<br />
  (SID = PLSExtProc)<br />
  (PRESENTATION = RO)<br />
  )<br />
) </div>
<p></p>
<p class="parrafo">Reload  el listener</p>
<div class="shell">  lsnrctl reload </div>
<p></p>
<p class="subtitulo"><span >Paso  4</span></p>
<p class="parrafo">  <span >Nos  ambientarnos como CLONDB y conectamos v&iacute;a sqlplus:</span></p>
<div class="shell">  [oracle@nodo1  admin]$ . oraenv<br />
  ORACLE_SID = [PRUEBADB] ? CLONDB<br />
[oracle@nodo1 admin]$ sqlplus sys/password@CLONDB as sysdba </div>
<p></p>
<p class="parrafo">Luego creamos un SPFILE:</p>
<div class="sql">  SQL&gt; CREATE  SPFILE FROM PFILE=&rsquo;/u01/app/oracle/db/dbs/initCLONDB.ora&rsquo;; </div>
<p></p>
<p class="parrafo">Luego  levantamos la base de datos en modo nomount:</p>
<div class="sql">  SQL&gt;  startup nomount force; </div>
<p></p>
<p class="subtitulo">
<span >Paso 5</span> </p>
<p class="parrafo"><span >Con  la base de datos clon montada podemos conectarnos a RMAN, es necesario  conectarse a la base de datos original (PRUEBADB) y a la clonada como  AUXILIARY:</span></p>
<div class="shell">  [oracle@nodo1 admin]$ . oraenv<br />
  ORACLE_SID = [CLONDB] ?<br />
  [oracle@nodo1 admin]$ /u01/app/oracle/db/bin/rman TARGET sys/password@PRUEBADB  AUXILIARY sys/password@CLONDB<br />
  Recovery Manager: Release 10.2.0.1.0 &#8211; Production on Tue Sep 9 17:09:13 2008<br />
  Copyright (c) 1982, 2005, Oracle. All rights reserved.<br />
  connected to target database: PRUEBADB (DBID=428612040)<br />
  connected to auxiliary database: CLONDB (not mounted)<br />
RMAN&gt; </div>
<p></p>
<p>
<span class="subtitulo" >Paso 6</span></p>
<p class="parrafo">  <span >En  RMAN ejecutamos la siguiente instrucci&oacute;n para clonar la base de datos:</span></p>
<div class="sql">  RMAN&gt;  DUPLICATE TARGET DATABASE TO CLONDB; </div>
<p></p>
<p class="parrafo">
<span >Listo,  base de datos duplicada!</span></p>
<p class="parrafo"><a href="http://www.megaupload.com/?d=T8CPGASU" target="_blank"><img src="http://www.xgodoy.com/wordpress/wp-content/uploads/2009/06/pdf.gif" width="16" height="18" title="Clonar Base De Datos con RMAN" alt="pdf Clonar Base De Datos con RMAN" />Descargar Articulo Completo Formato PDF </a></p>
<p class="subtitulo">
  <span ><strong>Saludos!</strong></span><br />
      <span ><strong>Jimy Godoy.</strong></span></p>
<h4 class='related-posts-header'>Artículos relacionados</h4><ul class="related-posts-list"><li class="related-post"><a href="http://www.xgodoy.com/wordpress/2009/04/19/modo-archivelog/">Modo ArchiveLog</a> <span class="related-post-date timestamp">Sun 19 Apr 2009</span></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.xgodoy.com/wordpress/2008/09/09/clonar-base-de-datos-con-rman/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
	</channel>
</rss>

