{"id":206,"date":"2012-09-29T11:36:03","date_gmt":"2012-09-29T09:36:03","guid":{"rendered":"http:\/\/clemente.pamplona.name\/dba\/?p=206"},"modified":"2012-10-20T20:04:23","modified_gmt":"2012-10-20T18:04:23","slug":"recuperar-un-spfile-borrado","status":"publish","type":"post","link":"http:\/\/clemente.pamplona.name\/dba\/recuperar-un-spfile-borrado\/","title":{"rendered":"Recuperar un spfile borrado"},"content":{"rendered":"<p>Hoy vamos a ver algo tan sencillo como el recuperar un fichero spfile.<\/p>\n<p>El spfile es la \u00abnueva\u00bb version del fichero de configuracion de parametros texto de toda la vida llamado pfile. La principal ventaja que obtenemos con tener un fichero de configuraci\u00f3n binario sobre un fichero de texto es que la instancia puede ir actualizando los cambios de configuraci\u00f3n que llevas a cabo en la base de datos sin necesidad de tener que actualizarlo manualmente. Hemos de tener en cuenta que, con los nuevos modos de gesti\u00f3n de memoria la configuracion del tama\u00f1o de los distintos pooles ya no es est\u00e1tico, con lo que es necesario tener un fichero de datos actualizable si quieres mantener esa informacion en el siguiente arranque.<\/p>\n<p>El fichero spfile es necesario en el momento en el que arrancas la instancia, pero no lo es para el funcionamiento de la base de datos, si\u00a0 borras este fichero cuando la base de datos esta en funcionamiento todo funcionar\u00e1 correctamente, solamente tendremos errores cuando intentemos modificar algo del spfile, y los errorres que tendremos ser\u00e1n errores de localizacionde fichero del sistema operativo<\/p>\n<pre>ORA-01565: error al identificar el archivo '\/opt\/oracle\/product\/11.2.0.3\/dbhome_1\/dbs\/spfileorcl.ora'\r\nORA-27037: no se ha podido obtener el estado del archivo\r\nLinux-x86_64 Error: 2: No such file or directory\r\nAdditional information: 3\r\n\r\n<\/pre>\n<p>Pero la base de datos seguir\u00e1 funcionando correctamente.<\/p>\n<p>Para restaurar un spfile tenemos dos opciones:<\/p>\n<h1>1- Restauraci\u00f3n desde RMAN<\/h1>\n<p>Rman hace una copia del controlfile y el spfile cada vez que llevas a cabo un backup del tablespace system.\u00a0 As\u00ed pues, si hacemos backups full de nuestra base de datos, deber\u00edamos de tener una copia del spfile en el backupset.<\/p>\n<p>La recuperaci\u00f3n del fichero es muy sencilla, simplemente hay que decirle que lo restaure del autobackup con el comando:<\/p>\n<pre>restore spfile from autobackup;<\/pre>\n<p>Si tenemos la base de datos en funcionamiento el comando fallar\u00e1 devolviendonos el error:<\/p>\n<pre>RMAN&gt; restore spfile from autobackup;\r\nStarting restore at 29\/09\/12\r\nallocated channel: ORA_DISK_1\r\nchannel ORA_DISK_1: SID=156 device type=DISK\r\nRMAN-00571: ===========================================================\r\nRMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============\r\nRMAN-00571: ===========================================================\r\nRMAN-03002: failure of restore command at 09\/29\/2012 21:58:30\r\nRMAN-06564: must use the TO clause when the instance is started with SPFILE<\/pre>\n<p>la soluci\u00f3n a este problema es muy sencilla,\u00a0 vamos a enga\u00f1ar un poco a nuestra base de datos, vamos a recuperarlo a un lugar alternativo y luego lo moveremos con comandos del sistema operativo (o del asm).<\/p>\n<pre>RMAN&gt; restore spfile to '?\/dbs\/spfile.backup' from autobackup;\r\nStarting restore at 29\/09\/12\r\nusing channel ORA_DISK_1\r\nrecovery area destination: \/opt\/oracle\/flash_recovery_area\r\ndatabase name (or database unique name) used for search: ORCL\r\nchannel ORA_DISK_1: restoring spfile from AUTOBACKUP \/opt\/oracle\/flash_recovery_area\/ORCL\/autobackup\/2012_09_29\/o1_mf_s_795264706_86ffo3j0_.bkp\r\nchannel ORA_DISK_1: SPFILE restore from AUTOBACKUP complete\r\nFinished restore at 29\/09\/12\r\nRMAN&gt; quit\r\n$cd \/opt\/oracle\/product\/11.2.0.3\/dbhome_1\/dbs\/\r\nmv spfile.backup spfileorcl.ora<\/pre>\n<p><strong>P.D<\/strong> en caso de que la instancia estuviese ca\u00edda y no tuviesemos el spfile en el momento la base de datos deber\u00e1 de estar en modo MOUNT<\/p>\n<h1>2-Cre\u00e1ndolo a partir del alert.log<\/h1>\n<p>Cada vez que arrancamos y paramos la base de datos, toda la informaci\u00f3n del spfile es volcada en el fichero alert.log<\/p>\n<pre>Starting up:\r\nOracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production\r\n\u00a0 processes\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = 150\r\n\u00a0 memory_target\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = 1536M\r\n\u00a0 control_files\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = \"\/opt\/oracle\/oradata\/orcl\/control01.ctl\"\r\n\u00a0 control_files\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = \"\/opt\/oracle\/flash_recovery_area\/orcl\/control02.ctl\"\r\n\u00a0 db_block_size\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = 8192\r\n\u00a0 compatible\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = \"11.2.0.0.0\"\r\n\u00a0 db_recovery_file_dest\u00a0\u00a0\u00a0 = \"\/opt\/oracle\/flash_recovery_area\"\r\n\u00a0 db_recovery_file_dest_size= 3882M\r\n\u00a0 undo_tablespace\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = \"UNDOTBS1\"\r\n\u00a0 remote_login_passwordfile= \"EXCLUSIVE\"\r\n\u00a0 db_domain\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = \"\"\r\n\u00a0 dispatchers\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = \"(PROTOCOL=TCP) (SERVICE=orclXDB)\"\r\n\u00a0 local_listener\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = \"LISTENER_ORCL\"\r\n\u00a0 audit_file_dest\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = \"\/opt\/oracle\/admin\/orcl\/adump\"\r\n\u00a0 audit_trail\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = \"DB\"\r\n\u00a0 db_name\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = \"orcl\"\r\n\u00a0 open_cursors\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = 300\r\n\u00a0 diagnostic_dest\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = \"\/opt\/oracle\"\r\n.\r\n.\r\n.<\/pre>\n<p>Asimismo, tambien deja reflejados los cambios que hacemos si ejecutamos<\/p>\n<pre>SQL&gt; alter system set undo_retention=9000;<\/pre>\n<p>Y luego miramos el alert, vemos que<\/p>\n<pre>ALTER SYSTEM SET undo_retention=9001 SCOPE=BOTH;\r\n\r\n<\/pre>\n<p>Con lo que, podremos\u00a0 regenerar nuestro spfile creando un fichero de texto con estos valores\u00a0 (fichero <em>parameter file<\/em> de texto cl\u00e1sico) , y despues ejecutando el comando.<\/p>\n<pre>create spfile from pfile='\/tmp\/init_SID.ora'<\/pre>\n<p><strong>P.D<\/strong>\u00a0 si la isntancia est\u00e1 levantada, aqui tendremos el mismo problema que cuando intentamos recuperar de RMAn con autobackup, con lo que tendremos que aplicar la misma soluci\u00f3n, <em>enga\u00f1ar<\/em> a oracle desde el sistema operativo<\/p>\n<pre>create spfile='?\/dbs\/spfile.backup' from pfile='\/tmp\/initSID.ora'\r\ncd $ORACLE_PRODUCT\/dbs\r\nmv spfile.backup spfileorcl.ora<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hoy vamos a ver algo tan sencillo como el recuperar un fichero spfile. El spfile es la \u00abnueva\u00bb version del fichero de configuracion de parametros texto de toda la vida llamado pfile. La principal ventaja que obtenemos con tener un &hellip; <a href=\"http:\/\/clemente.pamplona.name\/dba\/recuperar-un-spfile-borrado\/\">Sigue leyendo <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,9],"tags":[246,29,23,30,28],"class_list":["post-206","post","type-post","status-publish","format-standard","hentry","category-backup","category-dummie","tag-backup","tag-ora-27037","tag-rman","tag-rman-06564","tag-spfile"],"_links":{"self":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts\/206","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/comments?post=206"}],"version-history":[{"count":10,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts\/206\/revisions"}],"predecessor-version":[{"id":261,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts\/206\/revisions\/261"}],"wp:attachment":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/media?parent=206"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/categories?post=206"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/tags?post=206"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}