43369433 trucos de oracle

Upload: berrioscortes980

Post on 16-Jul-2015

235 views

Category:

Documents


0 download

TRANSCRIPT

Como reparar el error ORA-01595 junto al error ORA-00600 en oracle 10gHola Amig@s, Si les ocurre que en el alert de oracle ven el error ORA-01595 es por que el tablespace UNDO tiene segmentos de rollback rotos y no puede recuperarlos, la base de datos entra en un modo estilo bucle que arranca intenta recuperar el segmento y falla y se cierra nuevamente. Lo que hay que hacer: 1-Arrancamos la base de datos con el comando startup. 2-Creamos un fichero pfile de configuracion con el comando create pfile="c:\init.ora" from spfile; 3-Editamos el fichero con un editor de textos y buscamos la linea que pone: *.undo_management='AUTO' *.undo_tablespace='UNDOTBS1' Hay que cambiar el AUTO por MANUAL y debe quedar asi: *.undo_management='MANUAL' 4-Arrancamos la base de datos por que seguro que se ha parado sola y la iniciamos con el comando startup mount pfile='c:\init.ora'. 5-Una vez que la base de datos se monta correctamente hay que abrirla con el comando alter database open; 6-Una vez que la base de datos se abre hay que crear un nuevo UNDO tablespace con este comando: create undo tablespace undotbs2 datafile c:\...rutadelosDBFdeoracle\undotbs2_01.dbf size 1024m autoextend on next 256m ; 7-Una vez que se ha creado el nuevo fichero UNDO, hay que ejecutar parar la base de datos con el comando shutdown immediate. 8-Arrancamos la base de datos de modo normal sin utilizar el fichero init.ora con el comando startup. 9-Durante el/los minutos que esta arrancada, hay que ejecutar el siguiente comando: alter system set undo_tablespace= UNDOTBS2 scope=both; Con este comando le estamos diciendo a Oracle que el nuevo UNDO sera el que hemos creado nosotros y ya no dependera del anterior. 10-Paramos la base de datos nuevamente con el comando shutdown immediate 11-Arrancamos la base de datos nuevamente con el comando startup y comprobamos en el alert.log que ya no muestre ningun error del tipo ORA-01595 o ORA-00600. Siempre hay que conectarse como usuario SYS SYSDBA por ejemplo con la cadena: C:\>sqlplus sys/sys as sysdba (no hay que utilizar el SID en la cadena de conexion). Espero que les resulte util. Publicado por El pibeen 20:090 comentarios Etiquetas: Brico, Cursos Paso a Paso, Noticias, OracleMIRCOLES 14 DE JULIO DE 2010

Restaurar parcialmente archivelogs con RMAN

Hola Amig@s, Para poder restaurar parcialmente los archivelogs de una base de datos tras haber realizado un full backup para volver ms consistente y actualizada la base de datos, debemos hacer lo siguiente: 1-Crearemos un script de RMAN solo para realizar las copias de los archivelogs a una carpeta determinada: run { allocate channel c1 type disk; sql 'alter system archive log current'; set archivelog destination to 'D:\BACKUP\archivesolo'; backup archivelog all format 'D:\BACKUP\archivesolo\arc_t%t_s%s_p%p'; release channel c1; } Con el script anterior haremos una copia de seguridad solo de los archivelogs (obviamente deberemos tener un full backup echo anteriormente). 1-Desde el rman lanzamos el comando: RMAN> startup mount (para comenzar a restaurar) Lanzamos el script de backup de archivelogs: run { allocate channel c1 type disk; sql 'alter system archive log current'; set archivelog destination to 'D:\BACKUP\archivesolo'; backup archivelog all format 'D:\BACKUP\archivesolo\arc_t%t_s%s_p%p'; release channel c1; } Luego con el comando list backupset buscaremos una copia de seguridad que comience con ARCxxxxxxxxxxx.xx donde X se completa con los datos del da, hora, scn, etc. RMAN> list backupset; Esto nos devolver todas las copias de seguridad que tenemos de nuestra bbdd y archivelogs: List of Archived Logs in backup set 40885 Thrd Seq Low SCN Low Time Next SCN Next Time - - - - 1 12870 132214214 31-OCT-05 132240966 31-OCT-05 1 12871 132240966 31-OCT-05 132291702 01-NOV-05 1 12872 132291702 01-NOV-05 132400078 01-NOV-05 1 12873 132400078 01-NOV-05 132504581 01-NOV-05 1 12874 132504581 01-NOV-05 132594119 01-NOV-05 1 12875 132594119 01-NOV-05 132683505 01-NOV-05

Si queremos restaurar los archivelogs ms nuevos debemos hacer lo siguiente, creamos un script para RMAN con las siguientes lneas: RMAN> run { ALLOCATE CHANNEL c1 DEVICE TYPE DISK; restore archivelog sequence 12872; restore archivelog sequence 12873; restore archivelog sequence 12874; } Con el script anterior le decimos a RMAN que restaure y aplique los archivelogs de las secuencias desde la 12872 a la 12874. 2-Una vez restaurados debemos abrir la base de datos con el comando: ALTER DATABASE OPEN RESETLOGS; Y listo!. Publicado por El pibeen 21:000 comentarios Etiquetas: Cursos Paso a Paso, Noticias, OracleJUEVES 24 DE JUNIO DE 2010

ORA-30012: undo tablespace '' does not exist or of wrong typeHola amig@s, Para solucionar el error ORA-30012: undo tablespace '' does not exist or of wrong type hay que modificar el init.ora y cambiar el parametro *.undo_management='AUTO' a *.undo_management='MANUAL'. Para ello, primero montamos la base de datos sin abrirla: PASO N 1 conn sys/sys as sysdba startup mount create pfile='c:\init.ora' from spfile; shutdown immediate

PASO N 2 Modificamos el init.ora con los parametros antes detallados y montamos la base de datos utilizando el init.ora modificado: conn sys/sys as sysdba startup mount pfile='c:\init.ora' create spfile from pfile='c:\init.ora'; alter database open; Una vez que la base de datos ha abierto correctamente, eliminamos el undotbs que este mal y creamos otro. Por ultimo volvemos a cambiar el parametro a *.undo_management='AUTO' y repetimos los

pasos del punto n 2. Un saludo. Publicado por El pibeen 08:520 comentarios Etiquetas: Noticias, OracleMARTES 2 DE FEBRERO DE 2010

Solucionar problemas de acceso al Oracle Enterprise Manager Web.Si tenemos problemas para acceder al Oracle Enterprise Manager, ya sean errores de acceso o problemas con javascript debemos realizar la siguiente operacion: 1. Quitamos la siguiente cadena del registro : HKEY_LOCAL_MACHINE/SYSTEM/CURRENTCONTROLSET/SERVICES/ORACLEDBCONSOLE 1.1 Una vez quitada la cadena, reiniciamos el ordenador. 1.2 Comprobamos que el listener esta funcionando correctamente. 2. Desde la consola, entramos al SQLPLUS como usuario sysdba y ejecutamos las siguientes operaciones: 2.1 Iniciar la sesion con sqlplus asi: >sqlplus sysman/sys Luego ejecutamos la siguiente cadena: exec DBMS_AQADM.DROP_QUEUE_TABLE(queue_table=>'MGMT_NOTIFY_QTABLE',force =>TRUE); 2.2: Iniciar sesion como SYS as SYSBDA y ejecutar los siguientes comandos: SQL> SHUTDOWN IMMEDIATE; SQL> STARTUP RESTRICT; SQL> EXEC sysman.emd_maintenance.remove_em_dbms_jobs; SQL> EXEC sysman.setEMUserContext('',5); SQL> REVOKE dba FROM sysman; SQL> DECLARE CURSOR c1 ISSELECT owner, synonym_name name FROM dba_synonyms WHERE table_owner = 'SYSMAN'; BEGIN FOR r1 IN c1 LOOP IF r1.owner = 'PUBLIC' THENEXECUTE IMMEDIATE 'DROP PUBLIC SYNONYM '||r1.name; ELSE EXECUTE IMMEDIATE 'DROP SYNONYM '||r1.owner||'.'||r1.name; END IF; END LOOP; END; /

SQL> SQL> SQL> SQL>

DROP USER mgmt_view CASCADE; DROP ROLE mgmt_user; DROP USER sysman CASCADE; ALTER SYSTEM DISABLE RESTRICTED SESSION;

a. drop user sysman cascade; b. drop role MGMT_USER; c. drop user MGMT_VIEW cascade; d. drop public synonym MGMT_TARGET_BLACKOUTS; e. drop public synonym SETEMVIEWUSERCONTEXT; 3. Quitamos manualmente las siguientes carpetas en caso de que existan:: ORACLE_HOME/host_sid ORACLE_HOME\oc4j\j2ee\OC4J_DBConsole_host_sid 4.Configuramos desde la consola el ORACLE_HOME y el ORACLE_SID. Ahora desde el ORACLE_HOME/bin ejecutamos el siguiente comando. emca -config dbcontrol db -repos create Espero que les sea util. Publicado por El pibeen 09:231 comentarios Etiquetas: Brico, Cursos Paso a Paso, Noticias, OracleLUNES 28 DE DICIEMBRE DE 2009

Como recuperar el UNDOTBS de oracle ?Pues eso amig@s, ya ha pasado antes, pero les dejo varias soluciones para recuperar el tablespace de UNDO en oracle 10g (puede que en la 11g) tambien. SOLUCION 1: 1-Buscamos la copia del init.ora que tengamos, si no lo tenemos podemos crearlo de la siguiente manera: 1.1 Nos conectamos al SQLPLUS: C:\> sqlplus /nolog SQL> conn sys/sys as sysdba SQL> startup nomount; SQL> create pfile='c:\init.ora' from spfile; SQL> exit (nota: si el fichero esta corrupto, es decir el UNNDOTBS.DBF lo eliminamos). 1.2 Con esto hemos creado una copia del archivo de arranque de nuestra base de datos, nos vamos a la unidad C:\ y editamos el fichero init.ora y agregamos la siguiente linea: rollbacksegment=(SYSTEM) 1.3 Guardamos el fichero y ahova volvemos a ejecutar el SQLPLUS:

C:\> sqlplus /nolog SQL> conn sys/sys as sysdba SQL> startup mount pfile='c:\init.ora'; SQL> recover database using backup controlfile until cancel; 1.4 Una vez que la base de datos este abierta, vamos a recrear el UNDOTBS con el siguiente comando: CREATE UNDO TABLESPACE UNDOTBS01 DATAFILE 'C:\oracle\product\10.2.0\oradata\orcl\UNDOTBS01.DBF' SIZE 2M REUSE AUTOEXTEND ON; 1.5 Una vez que hemos creado el undo tablespace, editamos el init.ora y eliminamos la linea rollbacksegment=(SYSTEM) del init.ora. 1.6 Ahora debemos hacer los cambios permanentes para ello, ejecutamos la siguiente sentencia: C:\> sqlplus /nolog SQL> conn sys/sys as sysdba SQL> create spfile from pfile='c:\init.ora'; SQL> shutdown immediate; SQL> conn sys/sys as sysdba SQL> startup; SOLUCION 2: Primero nos conectamos con sys y arrancamos la bbdd con el init.ora, asi: C:\> sqlplus /nolog SQL> conn sys/sys as sysdba SQL> startup mount pfile='c:\init.ora'; Comprobamos que datafile es: SQL> select file#, status from v$datafile; FILE# STATUS ---------- ------1 SYSTEM 2 RECOVERY 3 ONLINE 4 ONLINE 5 ONLINE 6 ONLINE 7 ONLINE 8 ONLINE 9 ONLINE 10 ONLINE 11 ONLINE Como podemos ver nuestro undo es el n 2 asi que lo vamos a poner offline:

SQL> alter database datafile 2 offline; SQL> select file#, status from v$datafile; FILE# STATUS ---------- ------1 SYSTEM 2 OFFLINE 3 ONLINE 4 ONLINE 5 ONLINE 6 ONLINE 7 ONLINE 8 ONLINE 9 ONLINE 10 ONLINE 11 ONLINE Ahora paramos la base de datos y editamos el fichero init.ora: SQL> shutdown immediate; SQL> exit; Editamos el init.ora y buscamos las siguientes lineas: *.undo_management='AUTO' *.undo_tablespace='UNDOTBS_01' Y la cambiamos a: *.undo_management='MANUAL' #*.undo_tablespace='UNDOTBS_01' Volvemos a arrancar la bbdd y ya se abrira por arte de magia: C:\> sqlplus /nolog SQL> conn sys/sys as sysdba SQL> startup pfile='c:\init.ora'; Ahora debemos crear otro tablespace de undo con el siguiente comando: SQL> CREATE UNDO TABLESPACE undotbs_02 DATAFILE 'C:\oracle\product\10.2.0\oradata\orcl\UNDOTBS02.DBF' SIZE 2M AUTOEXTEND ON; SQL> select file#, name, status from v$datafile; C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS02.DBF FILE# ---------NAME -------------------------------------------------------------------------

STATUS ------ONLINE Ya tenemos nuestro UNDOTBS recuperado.... Por ultimo debemos modificar el init.ora, y cambiar las lineas que hemos modificado antes: *.undo_management='MANUAL' #*.undo_tablespace='UNDOTBS_01' Lo cambiamos a: *.undo_management='AUTO' *.undo_tablespace='UNDOTBS_02' Hacemos un shutdown immediate y luego un startup: SQL> shutdown immediate; SQL> startup pfile='c:\init.ora'; Con estos pasos ya hemos recupedo el bendito undotbs. Espero que les sirva... Publicado por El pibeen 18:450 comentarios Etiquetas: Brico, Cursos Paso a Paso, Noticias, OracleJUEVES 17 DE DICIEMBRE DE 2009

Como solucionar el error ORA-00604 y ORA-04043 ?Si al intentar eliminar un usuario en nuestra bbdd Oracle 10.2.0.1 nos da el siguiente error: SQL> drop user prueba cascade; drop user prueba cascade * ERROR en lnea 1: ORA-00604: se ha producido un error a nivel 1 de SQL recursivo ORA-04043: el objeto SYS_PLSQL_75898_9_1 no existe (este es un nombre de ejemplo, todos comienzan con SYS_PLSQL) Este problema es por que el usuario esta referenciado a un objeto posiblemente de otro usuario, para poder solucionar este problema, debemos irnos a la tabla de OBJ$ con privilegios de sysdba y cambiar el nombre del objeto por cualquier otro. Hacemos un commit y por ultimo intentamos eliminar nuevamente el usuario: SQL> drop user prueba cascade; Usuario borrado. Espero que les sirva.

Chau. Publicado por El pibeen 13:081 comentarios Etiquetas: Brico, Cursos Paso a Paso, Noticias, OracleJUEVES 15 DE OCTUBRE DE 2009

Como aplicar los parches de actualizaciones de Oracle 10g 10.2.0.1 ?Aqui les dejo la guia paso a paso: Para instalar los parches de Oracle 10g 10.2.0.1 debemos respetar el orden de los mismos, no podemos saltarnos una actualizacion es decir que debemos comenzar a actualizar Oracle desde el parche1 hasta el parche9, los parches solo se pueden descargar desde el metalink de oracle, para el que lo tenga que lo aproveche. Primero debemos parar todos los servicios Oracle, y uno llamado Coodinador de Transacciones Distribuidas o Distributed Transaction Coodinator, luego para aplicar el partche primero debemos definir el Oracle_Home, asi que desde un cmd lanzamos: C:\>SET ORACLE_HOME=C:\oracle\product\10.2.0\db_1 Debemos comprobar que en nuestro Path tenemos las siguientes entradas tambien en las variables de entorno en windows: c:\oracle\product\10.2.0\db_1\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot %\System32\Wbem; C:\oracle\product\10.2.0\db_1\OPatch;C:\oracle\product\10.2.0\db_1\jdk;C:\oracle\product\1 0.2.0\db_1\jdk\bin luego ejecutamos: C:\>opatch Si no devuelve ningun error, nos vamos a la carpeta donde hemos descomprimido el parche, entramos al directorio del n del parche donde se encuentra el fichero patchmd.xml, lo recomendable es descomprimir el parche en la raiz del C no en el escritorio de Windows. Asi que por ejemplo nos tiene que quedar la ruta de esta manera: C:\ndeparche> Lanzamos lo siguiente para aplicar el parche y confirmamos con Y. C:\>opatch apply

Una vez finalizada la actualizacion procedemos a arrancar la bbdd y los servicios que hemos parados. Saludos... Publicado por El pibeen 11:190 comentarios Etiquetas: Brico, Cursos Paso a Paso, Oracle, WindowsVIERNES 19 DE JUNIO DE 2009

Como eliminar elementos duplicados de una tabla en SQL ?Pues eso amig@s les paso el codigo para eliminar los elementos duplicados que a veces al hacer un import de datos se duplican. DELETE FROM tabla a WHERE rowid > ( SELECT min(rowid) FROM tabla b WHERE b.columna = a.columna and b.columna = a.columna ); Donde el nombre columna es la columna que quieres filtrar y comparar para eliminar los elementos duplicados de dicha columna. Espero que les resulte util. Publicado por El pibeen 13:450 comentarios Etiquetas: Brico, Cursos Paso a Paso, Noticias, OracleMIRCOLES 14 DE ENERO DE 2009

Reparar una base de datos oracle por el error UNDOTBS01.Este procedimiento es para recuperar la base de datos que tengamos montada si nos aparece el error UNDOTBS01, sigue los pasos atentamente y no te saltes ninguna linea: 1) Asegrate que la base de datos se detenga: sqlplus /nolog SQL>connect sys/password as sysdba SQL> shutdown immediate 2) Montar la BD en modo RESTRICT con pfile: SQL> STARTUP RESTRICT MOUNT pfile=D:\oracle\oraHome\initORCL.ora 3) Si intentas eliminar un datafile del UNDTBS probablemente aparezcan errores: SQL> ALTER DATABASE DATAFILE 'D:\ORADATA\ORCL\UNDOTBS01.DBF' OFFLINE DROP; * ERROR at line 1: ORA-01548: active rollback segment _SYSSMU11$ found, terminate dropping tablespace o esta sentencia

DROP TABLESPACE undotbs INCLUDING CONTENTS AND DATAFILES ; * ERROR at line 1: ORA-01548: active rollback segment _SYSSMU11$ found, terminate dropping tablespace 4) Puedes usar este query para determinar que "Rollback Segments" estan corruptos: SQL>select segment_name,status,tablespace_name from dba_rollback_segs where status='NEEDS RECOVERY'; SEGMENT_NAME STATUS TABLESPACE_NAME - _SYSSMU11$ NEEDS RECOVERY UNDOTBS _SYSSMU12$ NEEDS RECOVERY UNDOTBS _SYSSMU13$ NEEDS RECOVERY UNDOTBS _SYSSMU14$ NEEDS RECOVERY UNDOTBS _SYSSMU15$ NEEDS RECOVERY UNDOTBS _SYSSMU16$ NEEDS RECOVERY UNDOTBS _SYSSMU17$ NEEDS RECOVERY UNDOTBS _SYSSMU18$ NEEDS RECOVERY UNDOTBS _SYSSMU19$ NEEDS RECOVERY UNDOTBS _SYSSMU20$ NEEDS RECOVERY UNDOTBS 5) Agrega la siguiente linea en el pfile con el nombre los rollback segments que aparecen en el punto 4: _corrupted_rollback_segments =('_SYSSMU11$','_SYSSMU12$','_SYSSMU13$','_SYSSMU14$','_SYSSMU15$','_SYSSMU16$','_SYSSMU1 7$','_SYSSMU18$','_SYSSMU19$','_SYSSMU20$') Asegurate de comentar el parametros undo_management o poner el valo en MANUAL y agrega un nuevo nombre de UNDO TABLESPACE #undo_management=AUTO undo_tablespace=UNDOTBS1 6) Inicia nuevamente la base de datos con pfile: SQL> STARTUP RESTRICT MOUNT pfile=D:\oracle\oraHome\initORCL.ora 7) Elimina los Rollback Segments corrupts del punto 4: SQL> drop rollback segment "_SYSSMU11$"; Rollback segment dropped. SQL> drop rollback segment "_SYSSMU20$"; Rollback segment dropped. 8) Verifica nuevamente: SQL> select segment_name,status,tablespace_name from dba_rollback_segs; SEGMENT_NAME STATUS TABLESPACE_NAME

- SYSTEM ONLINE SYSTEM _SYSSMU2$ ONLINE UNDOTBS1 _SYSSMU3$ ONLINE UNDOTBS1 _SYSSMU4$ ONLINE UNDOTBS1 _SYSSMU5$ ONLINE UNDOTBS1 _SYSSMU6$ ONLINE UNDOTBS1 _SYSSMU7$ ONLINE UNDOTBS1 _SYSSMU8$ ONLINE UNDOTBS1 _SYSSMU9$ ONLINE UNDOTBS1 _SYSSMU10$ ONLINE UNDOTBS1 _SYSSMU21$ ONLINE UNDOTBS1 9) Ahora si elimina el UNDO TABLESPACE malogrado, en nuestro ejemplo UNDOTBS: SQL> drop TABLESPACE UNDOTBS; 10) Recrea el nuevo tablespace UNDOTBS1: SQL>CREATE UNDO TABLESPACE UNDOTBS1 DATAFILE 'D:\oradata\ORCL\UNDOTBS01.DBF' SIZE 2000M reuse AUTOEXTEND ON; 11) Altera la configuracion para usar el nuevo UNDO tablespace: ALTER SYSTEM SET undo_tablespace = UNDOTBS1; 12) Remueve y edita las siguientes lineas del pfile: _corrupted_rollback_segments =('_SYSSMU11$','_SYSSMU12$','_SYSSMU13$','_SYSSMU14$','_SYSSMU15$','_SYSSMU16 $','_SYSSMU17$','_SYSSMU18$','_SYSSMU19$','_SYSSMU20$') y habilita la utilizacion de undo_mangement=AUTO undo_management=AUTO undo_retention=10800 undo_tablespace=UNDOTBS1 13) Detener el servicio de base de datos: SQL>shutdown immediate; 14) Reinicia la base de datos: sqlplus /nolog SQL>connect sys/password as sysdba SQL> STARTUP RESTRICT MOUNT pfile=D:\oracle\oraHome\initORCL.ora ORACLE instance started. Total System Global Area 1620126452 bytes Fixed Size 457460 bytes Variable Size 545259520 bytes Database Buffers 1073741824 bytes Redo Buffers 667648 bytes

Database mounted. Database opened. 15) En este punto podrias sincronizar los cambios de pfile con spfile: SQL>create spfile from pfile=D:\oracle\oraHome\initORCL.ora; 16) Reiniciar la base de datos de forma normal usando SPFILE: SQL>shutdown immediate SQL>startup Y listo, si te funciona ya has devuelto a la vida tu base de datos. Publicado por El pibeen 13:181 comentarios Etiquetas: Base de datos, Cursos Paso a Paso, Noticias, OracleMARTES 13 DE ENERO DE 2009

Como montar un DataGuard con Standby fisico en oracle 10g

Estos pasos se encuentran en el manual de oracle online que se puede buscar en su web o atravez de esta direccion: http://download.oracle.com/docs/cd/B19306_01/server.102/b14239/toc.htm Requisitos: 2 maquinas virtuales montadas con VirtualBOX o VMWARE con Windows 2003 Standar Edition. (aunque si tienen la enterprise es mejor por el cluster). Oracle 10.2.0.4 Enterprise Edition. La SID primaria ser: BOSTON La SID en Standby ser: CHICAGO Atencion: Todos los comandos que se muestran aqui son con privilegios SYSDBA. Explicaciones y significados:

SPFILE: Fichero de inicio en binario (NO se puede modificar mediante un editor de texto). Su nombre suele ser SPFILE.ORA (P.E.: SPFILEboston.ORA) PFILE: Fichero de inicio en texto (se ha de modificar mediante un editor de texto). Su nombre suele ser INIT.ORA (P.E.: INITboston.ORA) La creacin de las BDD se efectua mediante la instalacin por defecto, no es necesario modificar los parmetros ni rutas. Estos pasos sirven tanto para crear un DataGuard con una BDD nueva como con una existente. En el caso de hacerlo sobre una BDD con informacin til es muy importante que antes hagas una copia de seguridad de todos los objetos importantes (DataFile, SPFile/PFile, Logs, Arc, etc...). Partiremo con que estn las dos BDD creadas. La BDD StandBy tendra que ser una instalacin completamente limpia, ya que eliminaremos el fichero de configuracin, los DataFiles y los Control files. Lo primero que tendramos que asegurarnos es que existe visibilidad entre la PRIMARY y la STANDBY. Para eso tenemos que configurar el TNSNAMES de cada servidor aadiendo la entrada que corresponda (es decir, aadir la PRIMARY en el TNSNAMES de la STANDBY y viceversa). Verifica que se ven mutuamente haciendo un TNSPING a las dos BDD desde cada uno de los servidores. Personalmente, prefiero realizar la primera configuracin (sobre la PRIMARY) mediante SPFILE. Esto nos permite asegurarnos que las modificaciones de los parmetros de inicio se ha hecho correctamente sin necesidad de reiniciar la BDD (aunque requiera reiniciar la BDD para que se apliquen las modificaciones), o como mnimo que el parmetro que hemos modificado es correcto. En el caso de que la PRIMARY se inicie mediante PFILE, lo configuraremos temporalmente para que inicie mediante SPFILE. Para crear el SPFILE lanzamos la siguiente instruccin: SQL> CREATE SPFILE FROM PFILE; Despus, renombramos el PFILE (nos servir de backup por si algo sale mal) y reiniciaremos la PRIMARY: SQL> SHUTDOWN IMMEDIATE SQL> STARTUP Ya tenemos la PRIMARY arrancada con el SPFILE. Ahora, todas las modificaciones de parmetros se han de hacer mediante ALTER. Para empezar, necesitamos que la PRIMARY tenga activado el modo ARCHIVELOG. Para ello, lanzamos los siguientes comandos:

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1 = 'LOCATION=C:\oracle\product\10.2.0\ARCH' SCOPE=SPFILE; SQL> ALTER SYSTEM SET LOG_ARCHIVE_FORMAT='%t_%s_%r.dbf' SCOPE=SPFILE; SQL> SHUTDOWN IMMEDIATE SQL> STARTUP MOUNT SQL> ALTER DATABASE ARCHIVELOG; SQL> ALTER DATABASE OPEN; Es recomendable que tener activado el modo FORCE LOGGING. No es imprescindible, pero si recomendado, al menos que est el mximo tiempo posible activado. Para ello, lanzamos el siguiente comando: SQL> ALTER DATABASE FORCE LOGGING; Ahora tenemos que crear en la PRIMARY los redolog que usar la STANDBY. Para ello, identificamos primero los que hay con los siguientes comandos... -- Redolog existentes SQL> SELECT * FROM V$LOGFILE; -- Tamao de cada uno de ellos SQL> SELECT BYTES/1024/1024 MB FROM V$LOG; ...y creamos nuevos ficheros de standby del mismo tamao y con un nmero de grupo secuencial (por defecto, Oracle crea 3 ficheros de 50MB) : SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('c:\oracle\product\10.2.0 \oradata\chicago\redosb01.log') SIZE 50M; SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('c:\oracle\product\10.2.0\oradata\chicago\redosb02.log') SIZE 50M; SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ('c:\oracle\product\10.2.0\oradata\chicago\redosb03.log') SIZE 50M; Ya tenemos la PRIMARY pre-configurada. Para continuar, tenemos que para la PRIMARY (y la STANDBY, si la tenamos arrancada): SQL> SHUTDOWN IMMEDIATE Con las dos BD paradas hacemos un backup de los DataFiles, Redolog Online y Standby logs de la PRIMARY y los restauramos sobre la STANDBY. Oracle recomienda utilizar el RMAN, pero yo he realizado una copia normal y corriente de los ficheros a travs de la red. IMPORTANTE: NO INICIAREMOS NINGUNA BDD. ESPECIALMENTE LA STANDBY! Ahora, desde la PRIMARY generaremos un fichero de control para la STANDBY con la siguiente secuencia de comandos: SQL> STARTUP MOUNT;

SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS 'c:\stdby.ctl'; SQL> ALTER DATABASE OPEN; Copiamos este fichero de control en el servidor de la STANDBY (en nuestro caso: C:\oracle\product\10.2.0\oradata\boston). Copiamos tambin el fichero de password de la PRIMARY en la STANDBY en la misma ruta donde se encuentra en la PRIMARY (en nuestro caso: C:\oracle\product\10.2.0\db_1 \database\PWDchicago.ora). Ahora generamos un PFILE con todas las modificaciones que hemos hecho en la PRIMARY con el siguiente comando (este fichero lo podremos modificar posteriormente mas cmodamente que el SPFILE): SQL> CREATE PFILE FROM SPFILE; Una vez que tenemos el PFILE, renombraremos el SPFILE para que no lo use en el arranque y lo guardaremos como backup. Modificaremos los siguientes campos del PFILE (si hay alguno que no existe, lo creamos): db_name='chicago' db_unique_name='chicago' LOG_ARCHIVE_CONFIG='DG_CONFIG=(chicago,boston)' LOG_ARCHIVE_DEST_1='LOCATION=C:\oracle\product\10.2.0\ARCH VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=chicago' LOG_ARCHIVE_DEST_2='SERVICE=boston VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=boston' LOG_ARCHIVE_DEST_STATE_1=ENABLE LOG_ARCHIVE_DEST_STATE_2=ENABLE LOG_ARCHIVE_MAX_PROCESSES=30 log_archive_format='%t_%s_%r.dbf' STANDBY_FILE_MANAGEMENT=AUTO STANDBY_ARCHIVE_DEST='C:\oracle\product\10.2.0\ARCH' FAL_SERVER='boston' FAL_CLIENT='chicago' El PFILE quedar de la siguiente manera (la cantidad de campos y sus valores varan en funcin de la configuracin previa de la BDD): chicago.__db_cache_size=197132288 chicago.__java_pool_size=4194304 chicago.__large_pool_size=4194304 chicago.__shared_pool_size=83886080 chicago.__streams_pool_size=0 *.audit_file_dest='C:\oracle\product\10.2.0\admin\chicago\adump' *.background_dump_dest='C:\oracle\product\10.2.0\admin\chicago\bdump' *.compatible='10.2.0.3.0' *.control_files='C:\oracle\product\10.2.0\oradata\chicago\control01.ctl','C:\oracle\product\10.

2.0\oradata\chicago\control02.ctl','C:\oracle\product\10.2.0\oradata\chicago\control03.ctl' *.core_dump_dest='C:\oracle\product\10.2.0\admin\chicago\cdump' *.db_block_size=8192 *.db_domain='' *.db_file_multiblock_read_count=16 *.db_name='chicago' *.db_unique_name='chicago' *.dispatchers='(PROTOCOL=TCP) (SERVICE=chicagoXDB)' *.job_queue_processes=10 *.LOG_ARCHIVE_CONFIG='DG_CONFIG=(chicago,boston)' *.LOG_ARCHIVE_DEST_1='LOCATION=C:\oracle\product\10.2.0\ARCH VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=chicago' *.LOG_ARCHIVE_DEST_2='SERVICE=boston VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=boston' *.LOG_ARCHIVE_DEST_STATE_1=ENABLE *.LOG_ARCHIVE_DEST_STATE_2=ENABLE *.log_archive_format='%t_%s_%r.dbf' *.LOG_ARCHIVE_MAX_PROCESSES=30 *.STANDBY_FILE_MANAGEMENT=AUTO *.STANDBY_ARCHIVE_DEST='C:\oracle\product\10.2.0\ARCH' *.open_cursors=300 *.pga_aggregate_target=96468992 *.processes=150 *.remote_login_passwordfile='EXCLUSIVE' *.sga_target=290455552 *.undo_management='AUTO' *.undo_tablespace='UNDOTBS1' *.user_dump_dest='C:\oracle\product\10.2.0\admin\chicago\udump' *.FAL_SERVER='boston' *.FAL_CLIENT='chicago' Ese mismo fichero lo usaremos para la STANDBY. La idea es copiar el fichero PFILE a la STANDBY y posteriormente modificar los campos necesarios. Ahora iniciamos la PRIMARY confirmando que todos los datos estn bien (si hay alguno mal, nos mostrar un error al arrancar). IMPORTANTE: TODAVIA NO INICIAREMOS LA STANDBY!!!! SQL> STARTUP Ya tenemos la PRIMARY completamente configurada y preparada. Ha llegado la hora de dedicarnos a la STANBY. Partiendo del PFILE de la PRIMARY, modificamos (o creamos desde el principio) el PFILE de la STANDBY modificando los datos correspondientes. En este caso, los datos sern los siguientes: db_name='chicago' db_unique_name=boston

control_files='C:\oracle\product\10.2.0\oradata\boston\stdby.ctl' LOG_ARCHIVE_CONFIG='DG_CONFIG=(chicago,boston)' LOG_ARCHIVE_DEST_1='LOCATION=C:\oracle\product\10.2.0\ARCH VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=boston' LOG_ARCHIVE_DEST_2='SERVICE=chicago LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=chicago' LOG_ARCHIVE_DEST_STATE_1=ENABLE LOG_ARCHIVE_DEST_STATE_2=ENABLE LOG_ARCHIVE_MAX_PROCESSES=30 log_archive_format='%t_%s_%r.dbf' STANDBY_FILE_MANAGEMENT=AUTO STANDBY_ARCHIVE_DEST='C:\oracle\product\10.2.0\ARCH' FAL_SERVER=chicago FAL_CLIENT=boston DB_FILE_NAME_CONVERT='chicago','boston' LOG_FILE_NAME_CONVERT='C:\oracle\product\10.2.0\oradata\chicago\','C:\oracle\product\10. 2.0\oradata\boston\' IMPORTANTE: SI PARTES DEL PFILE DE LA PRIMARY RECIERDA MODIFICAR EL NOMBRE DE LA BDD EN TODAS LAS LINEAS O NO FUNCIONAR CORRECTAMENTE. El fichero PFILE de la STANDBY quedar de la siguiente manera: boston.__db_cache_size=197132288 boston.__java_pool_size=4194304 boston.__large_pool_size=4194304 boston.__shared_pool_size=83886080 boston.__streams_pool_size=0 *.audit_file_dest='C:\oracle\product\10.2.0\admin\boston\adump' *.background_dump_dest='C:\oracle\product\10.2.0\admin\boston\bdump' *.compatible='10.2.0.3.0' *.control_files='C:\oracle\product\10.2.0\oradata\boston\stdby.ctl' *.core_dump_dest='C:\oracle\product\10.2.0\admin\boston\cdump' *.db_block_size=8192 *.db_domain='' *.db_file_multiblock_read_count=16 *.db_name='chicago' *.db_unique_name='boston' *.dispatchers='(PROTOCOL=TCP) (SERVICE=bostonXDB)' *.job_queue_processes=10 *.LOG_ARCHIVE_CONFIG='DG_CONFIG=(chicago,boston)' *.LOG_ARCHIVE_DEST_1='LOCATION=C:\oracle\product\10.2.0\ARCH VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=boston' *.LOG_ARCHIVE_DEST_2='SERVICE=chicago LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=chicago' *.LOG_ARCHIVE_DEST_STATE_1=ENABLE *.LOG_ARCHIVE_DEST_STATE_2=ENABLE

*.log_archive_format='%t_%s_%r.dbf' *.LOG_ARCHIVE_MAX_PROCESSES=30 *.STANDBY_FILE_MANAGEMENT=AUTO *.STANDBY_ARCHIVE_DEST='C:\oracle\product\10.2.0\ARCH' *.open_cursors=300 *.pga_aggregate_target=96468992 *.processes=150 *.remote_login_passwordfile='EXCLUSIVE' *.sga_target=290455552 *.undo_management='AUTO' *.undo_tablespace='UNDOTBS1' *.user_dump_dest='C:\oracle\product\10.2.0\admin\boston\udump' *.FAL_SERVER='chicago' *.FAL_CLIENT='boston' *.DB_FILE_NAME_CONVERT='chicago','boston' *.LOG_FILE_NAME_CONVERT='C:\oracle\product\10.2.0\oradata\chicago\','C:\oracle\product\10 .2.0\oradata\boston\' Es hora de iniciar la STANDBY. Para ello, utilizaremos los siguientes comandos: SQL> STARTUP MOUNT SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT; Ya tenemos el DataGuard montado, pero como sabemos que realmente se estn replicando los logs? Pues bien, para verificar la transferencia de los LOGS, seguiremos los siguientes pasos: 1.- Listamos los LOGS existentes en la STANDBY: SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#; 2.- Forzamos el cambio de LOG en la PRIMARY: SQL> ALTER SYSTEM SWITCH LOGFILE; 3.- Verificamos que se han replicado y aplicado los LOGS en la STANDBY (la columna APP tiene que mostrar YES): SQL> SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#; Si aparecen la misma cantidad de registros en la PRIMARY que en la STANDBY, y la columna APP tiene YES en todos los registros, significa que nuestro DataGuard esta completamente operativo. Has de tener en cuenta que la transferencia de los LOGS y su aplicacin no es instantnea, depende la velocidad de red y de disco (si los LOG son muy grandes). Si no te salen los logs, o te salen con la columna APP a NO, tomate antes unos minutos de descanso y luego verifcalo de nuevo.

En el caso de que no se transfieran los LOGS o no se apliquen, revisa todos los valores de los PFILE. Por ltimo, si queremos que nuestras BDD inicien con SPFILE solo tenemos que lanzar el siguiente comando en cada una de ellas: SQL> CREATE SPFILE FROM PFILE; Mas informacion aqui: http://www.undomain.es/node/163 Publicado por El pibeen 14:130 comentarios Etiquetas: Base de datos, Brico, Cursos Paso a Paso, Noticias, Oracle

Hazte DBA en dos dias, segun OracleOracle, la empresa mas importante en ofrecer soluciones en base de datos ofrece un manual gratuito en pdf, de los pasos que se deben tomar para convertirse en DBA de oracle es decir Database Administrator, muy solicitado estos dias. Mas informacion aqui: http://download.oracle.com/docs/cd/B19306_01/server.102/b14196.pdf Publicado por El pibeen 12:320 comentarios Etiquetas: Noticias, OracleMARTES 14 DE OCTUBRE DE 2008

Que es Oracle RAC ?Oracle RAC permite que mltiples ordenadores ejecuten el software de SGBD de Oracle simultaneamente mientras acceden a una base de datos individual. Esto se llama una base de datos en cluster(clustered). En una base de datos de Oracle no-RAC, una base de datos individual es accedida por una instancia individual. La base de datos se considera la coleccin de ficheros de datos, ficheros de control, y ficheros redo log localizados en disco. La instancia se considera la coleccin de procesos del sistema operativo y memoria relacionada de Oracle que estn ejecutndose en el ordenador. En Oracle RAC, dos o ms ordenadores (cada una con una instancia) acceden concurrentemente a una base de datos individual. Esto permite que una aplicacin o usuario se conecte a alguno de los ordenadores y tenga aceso a los mismos datos. Captura de explicacion:

Mas informacion aqui: http://www.oracle.com