AUMENTAR PARÁMETRO DE LA SGA | ORACLE PERFORMANCE

Posted by josefabre | Posted in Administración, Base de Datos, Noticias, Oracle, Proyectos, Refundation, Software Libre, Tips, Unix/Linux | Posted on 09-07-2015

3

AUMENTAR PARÁMETRO DE LA SGA
Hoy vamos a enseñar a aumentar el parámetro SGA de la base de datos Oracle, esto surgido por un problema al momento de generar un export.

[localhost@oracle ~]$ expdp full=y dumpfile=fulldb.dmp logfile=fulldb.log directory=EXPORT system/pasword

Export: Release 10.2.0.1.0 – Production on Tuesday, 16 December, 2008 17:07:44

Copyright (c) 2003, 2005, Oracle. All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 – Production
With the Partitioning, OLAP and Data Mining options
FLASHBACK automatically enabled to preserve database integrity.
Starting “SYSTEM”.”SYS_EXPORT_FULL_02″: full=y dumpfile=fulldb.dmp directory=d userid=system/********
Estimate in progress using BLOCKS method…
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA
ORA-39125: Worker unexpected fatal error in KUPW$WORKER.GET_TABLE_DATA_OBJECTS while calling DBMS_METADATA.FETCH_XML_CLOB []
ORA-04031: unable to allocate 28 bytes of shared memory (“shared pool”,”SELECT /*+rule*/ SYS_XMLGEN(…”,”sql area”,”ub1[]: qkexrXformVal”)

ORA-06512: at “SYS.DBMS_SYS_ERROR”, line 95
ORA-06512: at “SYS.KUPW$WORKER”, line 6235

—– PL/SQL Call Stack —–
object line object
handle number name
64E077B4 14916 package body SYS.KUPW$WORKER
64E077B4 6300 package body SYS.KUPW$WORKER
64E077B4 9120 package body SYS.KUPW$WORKER
64E077B4 1880 package body SYS.KUPW$WORKER
64E077B4 6861 package body SYS.KUPW$WORKER
64E077B4 1262 package body SYS.KUPW$WORKER
64CB4398 2 anonymous block

Job “SYSTEM”.”SYS_EXPORT_FULL_02″ stopped due to fatal error at 17:08:03

La causa del error

El error ORA-04031, Oracle hace un barrido del espacio de memoria de objetos que ya no están en uso , si aun así no existe suficiente espacio disponible para satisfacer la solicitud devuelve este error.

Solución

la solución es aumentar el parámetro SGA.

Nota: Para esto deben tomar en cuenta que su base debe estar in-disponible ya que se debe reiniciar.

SQL> show parameter sga_t

NAME TYPE VALUE
———————————— ———– ——————————
sga_target big integer 772M

SQL> show parameter sga_max

NAME TYPE VALUE
———————————— ———– ——————————
sga_max_size big integer 800M

En la configuracón la SGA_TARGET de pende de la SGA_MAX_SIZE asi que debemos cambiar ambas para que tenga el efecto esperado.

SQL> alter system set sga_max_size=900M scope=spfile;

System altered.

SQL> alter system set sga_target=950M scope=spfile;

System altered.

SQL> startup force
ORACLE instance started.

Total System Global Area 314572800 bytes
Fixed Size 1248768 bytes
Variable Size 96469504 bytes
Database Buffers 209715200 bytes
Redo Buffers 7139328 bytes
Database mounted.
Database opened.

SQL> show parameter sga_target

NAME TYPE VALUE
———————————— ———– ——————————
sga_target big integer 900M

 

Referencia -> http://oracle-facil.blogspot.com/

RECUPERACIÓN ANTE DESASTRES – ORACLE DataGuard 11.2.0.4

Posted by josefabre | Posted in Administración, Aplicaciones, Base de Datos, Entrenamiento, Opinión, Oracle, Software Libre, Tips, Unix/Linux | Posted on 12-05-2014

Tags: ,

2

 

RECUPERACIÓN  ANTE DESASTRES

 

Guía de instalación para Oracle Data Guard
Base de datos 11g
Version 11.2.0.4

 

Índice General
1.       Introducción
2.     Arquitectura de data guard 11g
3.     Datos Generales
4.      Consejos (antes de empezar)
5.      Configurar servidor principal (Producción)
6.     Obtener los archivos de parámetros.
7.      Sincronizados los servidores con RMAN
8.      Sincronizados los servidores con Duplicate
9.      Configurar servidor secundario (Standby)
10.   Enviar archivelog’s (Switch log file)
11.   Convertir servidor secundario a principal (Switchover)
12.   Hacer permanente servidor secundario principal (Failover)   
13.   Conclusiones
1.  Introducción

 

En la mayoría de empresas se han ido implantando durante los últimos años planes de recuperación ante desastres o DR (Disaster Recovery). Estos planes comprenden un conjunto de recursos hardware, software y procedimientos que deben permitir a una empresa continuar ofreciendo sus servicios (o los considerados mínimos) en caso de que ocurran problemas graves en los sistemas informáticos.

En el caso de Oracle y para intentar minimizar este tipo de problemas, existen configuraciones de DR data guard que nos permiten mantener en ubicaciones físicamente separadas sistemas de contingencia denominados standby que podrán seguir dando servicio en caso de caída de los sistemas principales.

El concepto de Alta disponibilidad o HA (High Availability) es indispensable en una empresa por lo que DR. puede  disponer de discos, o tarjetas de red duplicados en un servidor es una solución de alta disponibilidad (HA), disponer de un segundo servidor en otra ciudad replicado con el primero es protección ante desastres (DR).

Finalmente existen las soluciones que nos aporta Oracle: las BDD Standby y el producto DataGuard (que ya viene integrado en las BDD EE) “.Solo aplicable para Enterprise Edition”

Una BDD Standby física (existen Standby “lógicas” de las que hablaremos en otra ocasión) es una copia “bit a bit” de nuestra BDD productiva, separada de ésta varias decenas, centenares o miles de kilómetros. Los cambios se trasmiten de la principal a la Standby y se aplican posteriormente en ésta.

Las trasmisiones de datos se realizan de manera comprimida y optimizada ocupando un mínimo de ancho de banda, y los datos pueden aplicarse en la standby “al momento” o con un cierto retardo, de manera que en caso de errores lógicos (modificación o borrado por error de gran cantidad de datos en la principal) se pueda ir a consultar los datos “del pasado” en la standby.


2. Arquitectura

 

3. Datos Generales
Sistema Operativo
Oracle Linux Server release 6.4  
Instaladores del software Oracle 12c 

*Para descargar los instaladores se debe crear una cuenta en Oracle http://www.oracle.com/ y descargar los  paquetes de 12.1.0.1 para Linuxhttp://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html

Una vez los paquetes descargados copiar en la partición o en la partición donde se tenga espacio para instalar la base.

/u01/database/



4. Consejos

4.1. Se debe constatar que tanto la base como el sistema operativo sean iguales en los dos servidores mismo Hadware y Software.

4.2. Los dos servidores deben tener instalados los paquetes necesarios para el correcto funcionamiento del oracle consulta el siguiente link http://docs.oracle.com/cd/B28359_01/install.111/b32002/pre_install.htm#LADBI214

4.2. El primer servidor de producción contiene la base con listener el segundo solo el software de oracle y listener con los mismos parámetros que se configuro el principal

4.3. Deben tener las mismas características físicas los dos servidores

4.4. Crear archivo de variables de ambiente en el servidor de standby “.bash_profile”

Sentencias útiles para ver la versión del sistema operativo

Nombre tipo y versión de S.O.

[oracle@rfcg ~]$ lsb_release -a

Consulta para la versión del software de  Oracle

SQL> select value from v$system_parameter where name = ‘compatible’

Consulta Para ver los parámetros de configuración de la base de datos

SQL> SELECT * FROM NLS_DATABASE_PARAMETERS

        CONSULTAS ÚTILES

       – Consulta identifica si es primario o secundario

SELECT name,open_mode,database_role,db_unique_name,protection_modeFROM v$database;

         -Identificar el rol actiual del servidor

SELECT database_role FROM v$database;

5. Configurar servidor principal (Producción)

5.1. Poner la base principal en modo archivelog

Nota: Para verificar el modo actual de tu servidor principal

SQL> SELECT log_mode FROM v$database;

LOG_MODE
————
NOARCHIVELOG

Poner en modo archivelog

SQL> SHUTDOWN IMMEDIATE;

SQL> STARTUP MOUNT;

SQL> ALTER DATABASE ARCHIVELOG;

SQL> ALTER DATABASE OPEN;
5.2.Habilitar el registro forzado

SQL> ALTER DATABASE FORCE LOGGING;

5.3.Verificar la configuración de db_name y db_unique_name en ambos casos debe ser el nombre de la instancia de producción

SQL> show parameter db_name

NAME    TYPEVALUE
———————————— ———– ——————————
db_name     string DB11G

SQL> show parameter db_unique_name

NAME    TYPEVALUE
———————————— ———– ——————————
db_unique_name     string DB11G

5.4.Configurar el archivelog para stanby

SQL> ALTER SYSTEM SET LOG_ARCHIVE_CONFIG=’DG_CONFIG=(DB11G,DB11G_STBY)';

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2=’SERVICE=db11g_stby NOAFFIRM ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB11G_STBY';

SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;
5.5.Configurar el passwordfile

SQL> ALTER SYSTEM SET LOG_ARCHIVE_FORMAT=’%t_%s_%r.arc’ SCOPE=SPFILE;

SQL> ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=30;

SQL> ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SCOPE=SPFILE;

5.6.Configurar el envio de spfile a standby

SQL> ALTER SYSTEM SET FAL_SERVER=DB11G_STBY;

SQL> ALTER SYSTEM SET DB_FILE_NAME_CONVERT=’DB11G_STBY’,’DB11G’ SCOPE=SPFILE;

SQL> ALTER SYSTEM SET LOG_FILE_NAME_CONVERT=’DB11G_STBY’,’DB11G’ SCOPE=SPFILE;

SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
5.7.Configurar el tnsname.ora 

Se debe agregar manual o con el utilitario netmgr el servicio de standby que se creo en el servidor secundario. 

[oracle@host ~]$ vim $ORACLE_HOME/network/admin/tnsnames.ora

/***************************************************

DGARD =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = rfcg.oracle.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = dgard.oracle.com)
)
)

DGARD_STBY =
  (DESCRIPTION =    (ADDRESS_LIST =     (ADDRESS = (PROTOCOL = TCP)(HOST = rfcg2.oracle.com)(PORT = 1521)) )

    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dgard_stby.oracle.com)
    )
  )

***************************************************/

Nota: Para probar si se tiene conexión entre los dos servidores se recomienda ejecutar el comando tnsping <nombre del servicio>

[oracle@host ~]$ tnsping DGARD_STBY

6. Obtener los archivos de parámetros

6.1. Crear el controlfile y parameterfile para standby

Ejecutar en el principal

SQL>ALTER DATABASE CREATE STANDBY CONTROLFILE AS ‘/tmp/db11g_stby.ctl';

SQL>CREATE PFILE=’/tmp/initDB11G_stby.ora’ FROM SPFILE;

6.2. Cambiar en el archivo de controlfile creado para standby anteriromente

*Cambiar las lineas con -> lo que se tiene en la derecha es lo original por lo de la izquierda.

Original -> Nuevo Valor

[oracle@host ~]$ vim /tmp/initDB11G_stby.ora

/************************************************************************

dgard.__db_cache_size=503316480 -> dgard_stby.__db_cache_size=503316480
dgard.__java_pool_size=16777216 -> dgard_stby.__java_pool_size=16777216
dgard.__large_pool_size=16777216 -> dgard_stby.__large_pool_size=16777216
dgard.__oracle_base=’/u01/app/oracle’#ORACLE_BASE set from environment
->  dgard_stby.__oracle_base=’/u01/app/oracle’#ORACLE_BASE set from environment
dgard.__pga_aggregate_target=754974720 -> dgard_stby.__pga_aggregate_target=754974720
dgard.__sga_target=855638016 -> dgard_stby.__sga_target=855638016
dgard.__shared_io_pool_size=0 -> dgard_stby.__shared_io_pool_size=0
dgard.__shared_pool_size=268435456 -> dgard_stby.__shared_pool_size=268435456
dgard.__streams_pool_size=33554432 -> dgard_stby.__streams_pool_size=33554432
*.audit_file_dest=’/u01/app/oracle/admin/dgard/adump’
-> *.audit_file_dest=’/u01/app/oracle/admin/dgard_stby/adump’
*.audit_trail=’db’
*.compatible=’11.2.0.0.0′
*.control_files=’/u01/app/oracle/oradata/dgard/control01.ctl’,’/u01/app/oracle/fast_recovery_area/dgard/control02.ctl’
->
*.control_files=’/u01/app/oracle/oradata/dgard_stby/control01.ctl’,’/u01/app/oracle/fast_recovery_area/dgard_stby/control02.ctl’
*.db_block_size=8192
*.db_domain=’oracle.com’
*.db_file_name_convert=’dgard_stby’,’dgard’ ->  *.db_file_name_convert=’dgard’,’dgard_stby’
*.db_name=’dgard’
Aumentar esta Linea————> *.db_unique_name=’dgard_stby’
*.db_recovery_file_dest=’/u01/app/oracle/fast_recovery_area’
*.db_recovery_file_dest_size=4322230272
*.diagnostic_dest=’/u01/app/oracle’
*.dispatchers='(PROTOCOL=TCP) (SERVICE=dgardXDB)’
*.fal_server=’DGARD_STBY’ -> *.fal_server=’DGARD’
*.log_archive_config=’DG_CONFIG=(dgard_stby,dgard)’ ->*.log_archive_config=’DG_CONFIG=(dgard,dgard_stby)’
*.log_archive_dest_2=’SERVICE=dgard NOAFFIRM ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dgard_stby’
-> *.log_archive_dest_2=’SERVICE=dgard NOAFFIRM ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dgard’
*.log_archive_dest_state_2=’ENABLE’
*.log_archive_format=’%t_%s_%r.arc’
*.log_archive_max_processes=30
*.log_file_name_convert=’dgard_stby’,’dgard’ -> *.log_file_name_convert=’dgard’,’dgard_stby’
*.memory_target=1603272704
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile=’EXCLUSIVE’
*.standby_file_management=’AUTO’
*.undo_tablespace=’UNDOTBS1′

************************************************************************/

7. Sincronizados los servidores con RMAN

7.1. Sacar backup de la base primaria

Ejecutar en el principal

[oracle@host ~]$ rman target=/

RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
7.2. Crear los directorios como se tiene en el servidor de producción

Ejecutar en el secundario

[oracle@host ~]$ mkdir -p /u01/app/oracle/oradata/dbg11_stby

[oracle@host ~]$ mkdir -p /u01/app/oracle/fast_recovery_area/dbg11_stby

[oracle@host ~]$ mkdir -p /u01/app/oracle/admin/dbg11_stby/adump

7.3. Copiar los archivos de configuración de producción a standby

Ejecutar en el primario

*Controlfile

[oracle@host_stby ~]$ scp oracle@ol5-112-dga1:/tmp/db11g_stby.ctl /u01/app/oracle/oradata/dbg11_stby/control01.ctl

[oracle@host_stby ~]$ cp /u01/app/oracle/oradata/DB11G/control01.ctl /u01/app/oracle/fast_recovery_area/dbg11_stby/control02.ctl

*Archivelogs and backups

[oracle@host_stby ~]$ scp -r oracle@ol5-112-dga1:/u01/app/oracle/fast_recovery_area/DB11G/archivelog /u01/app/oracle/fast_recovery_area/dbg11_stby

[oracle@host_stby ~]$ scp -r oracle@ol5-112-dga1:/u01/app/oracle/fast_recovery_area/DB11G/backupset /u01/app/oracle/fast_recovery_area/dbg11_stby

*Parameter file.

[oracle@host_stby ~]$ scp oracle@ol5-112-dga1:/tmp/initDB11G_stby.ora /tmp/initDB11G_stby.ora

*Login password file.

[oracle@host_stby ~]$ scp oracle@ol5-112-dga1:$ORACLE_HOME/dbs/orapwDB11G $ORACLE_HOME/dbs

*Tnsname

[oracle@host_stby ~]$ scp oracle@ol5-112-dga1:$ORACLE_HOME/network/admin/tnsname.ora $ORACLE_HOME/network/admin/tnsname.ora

7.4. Levantar el listener

[oracle@host_stby ~]$ lsnrctl reload

7.5. Restaurar el backup en el servidor de standby con el spfile

[oracle@host_stby ~]$ export ORACLE_SID=DB11G

[oracle@host_stby ~]$ sqlplus / as sysdba

SQL> CREATE SPFILE FROM PFILE=’/tmp/initDB11G_stby.ora';

[oracle@host_stby ~]$ rman target=/

RMAN> STARTUP MOUNT;

RMAN> RESTORE DATABASE;

7.6. Crear los logfile

SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=MANUAL;

SQL> ALTER DATABASE ADD STANDBY LOGFILE (‘/u01/app/oracle/oradata/dgard_stby/standby_redo01.log’) SIZE 50M;

SQL> ALTER DATABASE ADD STANDBY LOGFILE (‘/u01/app/oracle/oradata/dgard_stby/standby_redo02.log’) SIZE 50M;

SQL> ALTER DATABASE ADD STANDBY LOGFILE (‘/u01/app/oracle/oradata/dgard_stby/standby_redo03.log’) SIZE 50M;

SQL> ALTER DATABASE ADD STANDBY LOGFILE (‘/u01/app/oracle/oradata/dgard_stby/standby_redo04.log’) SIZE 50M;

8. Sincronizados los servidores con Duplicate

8.1. Copiar los archivos de configuración de producción a standby

Ejecutar en el principal

*Controlfile

[oracle@host_stby ~]$ scp oracle@ol5-112-dga1:/tmp/db11g_stby.ctl /u01/app/oracle/oradata/dbg11_stby/control01.ctl

[oracle@host_stby ~]$ cp /u01/app/oracle/oradata/DB11G/control01.ctl /u01/app/oracle/fast_recovery_area/dbg11_stby/control02.ctl

*Parameter file.

[oracle@host_stby ~]$ scp oracle@ol5-112-dga1:/tmp/initDB11G_stby.ora /tmp/initDB11G_stby.ora

*Login password file.

[oracle@host_stby ~]$ scp oracle@ol5-112-dga1:$ORACLE_HOME/dbs/orapwDB11G $ORACLE_HOME/dbs

*Tnsname

[oracle@host_stby ~]$ scp oracle@ol5-112-dga1:$ORACLE_HOME/network/admin/tnsname.ora $ORACLE_HOME/network/admin/tnsname.ora

8.2. Crear los los redo de standby en el principal

Ejecutar en el principal

SQL> ALTER DATABASE ADD STANDBY LOGFILE (‘/u01/app/oracle/oradata/DB11G/standby_redo01.log’) SIZE 50M;

SQL> ALTER DATABASE ADD STANDBY LOGFILE (‘/u01/app/oracle/oradata/DB11G/standby_redo02.log’) SIZE 50M;

SQL> ALTER DATABASE ADD STANDBY LOGFILE (‘/u01/app/oracle/oradata/DB11G/standby_redo03.log’) SIZE 50M;

SQL> ALTER DATABASE ADD STANDBY LOGFILE (‘/u01/app/oracle/oradata/DB11G/standby_redo04.log’) SIZE 50M;

Ejecutar en el secundario

8.3. Levantar el listener

[oracle@host_stby ~]$ lsnrctl reload

8.3. Usar duplicate

[oracle@host_stby ~] export ORACLE_SID=DB11G

[oracle@host_stby ~] sqlplus / as sysdba

SQL> STARTUP NOMOUNT PFILE=’/tmp/initDB11G_stby.ora';

8.4. Conectarse a RMAN y ejecutar script de duplicate

Ejecutar en el principal

[oracle@host_stby ~]  rman TARGET sys/password@DB11G AUXILIARY sys/password@DB11G_STBY

RMAN > DUPLICATE TARGET DATABASE
FOR STANDBY
FROM ACTIVE DATABASE
DORECOVER
SPFILE
SET db_unique_name=’DB11G_STBY’ COMMENT ‘Is standby’
SET LOG_ARCHIVE_DEST_2=’SERVICE=db11g ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB11G’
SET FAL_SERVER=’DB11G’ COMMENT ‘Is primary’
NOFILENAMECHECK;

9. Configurar servidor secundario (Standby)

9.1. Permitir el recibimiento de archivelog.

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE;

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

Nota: Estas sentencias sirven para dejar abierto stanby y recibir archivelog de produccion.

Se usa 

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

Para cancelar y dejar de recibir archivelog

CONSEJO: Realizar tnsping a producción desde standby y viceversa a ambas instancias para saber que están conectadas
10. Enviar archivelog’s (Switch log file)

Ejecutar en el principal

10.1. Saber numero de transacción en la que se encuentra actualmente

SQL> ALTER SESSION SET nls_date_format=’DD-MON-YYYY HH24:MI:SS';

SQL> SELECT sequence#, first_time, next_time FROM   v$archived_log ORDER BY sequence#;

10.2. Dejar de escribir en archive y enviar a memoria sincronizando con standby

SQL> ALTER SYSTEM SWITCH LOGFILE;

10.3. Validar la transferencia de archive en standby

Ejecutar en el secundario

SQL> ALTER SESSION SET nls_date_format=’DD-MON-YYYY HH24:MI:SS';

SQL> SELECT sequence#, first_time, next_time, applied FROM   v$archived_log ORDER BY sequence#;

Nota: Verificar que el mismo número de secuencia este en ambos y el estado de la transacción sea  applied = YES

11. Convertir servidor secundario a principal (Switchover)

Ejecutar en el principal

CONSEJO: en otra terminal hacer “tail -f”  al alert log para verificar que todo se ejecute normalmente

11.1. Realizar principal servidor secundario

SQL> CONNECT / AS SYSDBA

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO STANDBY;

SQL> SHUTDOWN IMMEDIATE;

11.2. Montar servidor principal como standby

SQL> STARTUP NOMOUNT;

SQL> ALTER DATABASE MOUNT STANDBY DATABASE;

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;


11.3. Finalizar la administracion de standby como servidor secundario

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;


12. Hacer permanente servidor secundario principal (Failover)

Ejecutar en el secundario

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;

SQL> ALTER DATABASE ACTIVATE STANDBY DATABASE;

Nota: Después de ejecutar el failover no se puede regresar atrás

Conclusiones

Después de realizar esta practica usted debe ser capaz de:

– Configurar un servidor de standby ante desastres.
– Conocimientos de hacer una copia de base con duplicate.
– Conocimientos de rman backup.

Elaborado por:
José Fabre
                                                                     Oracle Certified Associate
                     jose.fabre@refundation.com

¿Instalando EM12c? Asegúrese de descomprimir bien los archivos

Posted by Paola Pullas | Posted in Administración, Base de Datos, Tips, Unix/Linux | Posted on 01-07-2013

Tags: , ,

0

Si se encuentran con el siguiente error:

oracle.sysman.oii.oiii.OiiiInventoryDoesNotExistException: The inventory pointer location /etc/oraInst.loc is either not readable or does not exist
at oracle.sysman.oii.oiii.OiiiInstallAreaControl.initAreaControl
(OiiiInstallAreaControl.java:1858)
at oracle.sysman.oii.oiic.OiicStandardInventorySession.initSession
(OiicStandardInventorySession.java:292)
at oracle.sysman.oii.oiic.OiicStandardInventorySession.initSession
(OiicStandardInventorySession.java:231)
at oracle.sysman.oii.oiic.OiicStandardInventorySession.initSession
(OiicStandardInventorySession.java:180)
at oracle.sysman.install.oneclick.EMGCGetUpgradeableHomes.initInventorySession
(EMGCGetUpgradeableHomes.java:411)
at oracle.sysman.install.oneclick.EMGCGetUpgradeableHomes.getHomes
(EMGCGetUpgradeableHomes.java:117)
at oracle.sysman.install.oneclick.EMGCGetUpgradeableHomes.getInstance
(EMGCGetUpgradeableHomes.java:107)
at oracle.sysman.install.oneclick.EMGCInstallSettingsDlg.m_createupgradeTblSCrollPane
(EMGCInstallSettingsDlg.java:828)
at oracle.sysman.install.oneclick.EMGCInstallSettingsDlg.createMainPanel
(EMGCInstallSettingsDlg.java:252)
at oracle.sysman.install.oneclick.EMGCInstallSettingsDlg.
(EMGCInstallSettingsDlg.java:165)
………

Muy seguramente descomprimieron el instalador en carpetas separadas, o cuando hicieron la descompresión algo no fue bien. Siempre los instaladores deben descomprimirse en la misma carpeta y debes asegurarte que el proceso sea correcto, caso contrario, pasarás horas tratando se resolver un problema que se debe a un mal proceso de descompresión de archivos.

Paola Pullas

Day 6: Tip Log_Archive_Dest_1 Set To Default in Oracle Database 11.1

Posted by Paola Pullas | Posted in Base de Datos, Oracle, Tips | Posted on 03-10-2010

Tags: , , , ,

7

In this post I want to share with you the information about the Bug 6373164 present in Oracle Database 11.1. This bug was fixed in release 11.1.0.7.0.

Symptoms

I configured Archivelog Mode in my database and set the flash recovery area like the default location to store achivelog files. I configured the next parameters in order to set the flash recovery area:

  • DB_RECOVERY_FILE_DEST
  • DB_RECOVERY_FILE_DEST_SIZE

Other parameters related to Archivelog Mode aren’t configured in my linux box, for example:

  • LOG_ARCHIVE_DEST is not set
  • LOG_ARCHIVE_DEST_n is not set

In the next screen I show you my actual configuration:

When the database starts to generate archivelog files, these was send to flash recovery area location but additionally to $ORACLE_HOME/dbs causing higher disk space utilization in my server, like I show you in the next screen:

How to solve the problem

In order to solve this problem you should change the configuration of LOG_ARCHIVE_DEST_1 parameter with the next command:

  • alter system set LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST' scope=both;

Author: Paola Pullas
Do you need to buy support?: Contact me at pp@refundation.com

If you think that this tutorial helped you. Make a donation to this initiative. We appreciate your support. Also your donation can help me to buy more coffee or Red Bull.





Oracle 9i en Windows 64 bits – AMD64/EM64T

Posted by Paola Pullas | Posted in Base de Datos, Oracle, Software Libre, Tips, Unix/Linux | Posted on 31-01-2009

Tags: , , , , , ,

1

microsoftlinux

Para los que no sabían les dejo un dato de la certificación de Oracle sobre Windows de 64 bits para procesadores AMD64 y EM64T:

Oracle Database 11g (11.1) Release 1 Supported Windows Operating Systems
32-bit Database Server and Client 32-bit Windows
32-bit Client 64-bit Windows x64
64-bit Database Server and Client 64-bit Windows x64
Oracle Database 10g (10.2) Release 2 Supported Windows Operating Systems
32-bit Database Server and Client 32-bit Windows
32-bit Client 64-bit Windows x64
64-bit Database Server and Client 64-bit Windows x64
Oracle Database 10g (10.1) Release 1 Supported Windows Operating Systems
32-bit Database Server and Client 32-bit Windows
32-bit Database Client 64-bit Windows x64
Oracle Database 9i (9.2) Release 2 Supported Windows Operating Systems
32-bit Database Server and Client 32-bit Windows
32-bit Database Client 64-bit Windows x64

Como pueden observar en la tabla no existe una versión de Oracle 9i o 10g Release 1 que pueda ser instalada en Microsoft Windows de 64 bits para procesadores AMD64/EM64T, Oracle recién certificó este tipo de instalación a partir de 10g Release 2 y por supuesto la nueva versión Oracle 11g Release 1 está completamente certificada.

A pesar de estas malas noticias Oracle fue el primer proveedor de base de datos en certificar su solución para Microsoft Windows de 64 bits con Oracle 9i Release 2, pero para plataformas Itanium en Diciembre del 2000.

Para los que estén en este dilema al momento pues los invito a probar Oracle 9i Release 2 para 64 bits en procesadores AMD64/EM64T utilizando Linux, en este caso, no existe el problema que se presenta en Microsoft Windows y es posible instalar Oracle en: Asianux 2.0, Oracle Enterprise Linux 4, Red Hat Enterprise Linux AS/ES 3 y 4 y Suse Linux 8 y 9.

Vía: Oracle Technology Network
Autor: Paola Pullas

Enviar correos con PL/SQL en Oracle

Posted by Paola Pullas | Posted in Oracle, Tips | Posted on 03-06-2008

5

A continuación les dejo un pequeño procedure hecho en PL/SQL, que les permitirá enviar correos electrónicos:

 
 
PROCEDURE AU_GN_SEND_MAIL(
sender IN VARCHAR2,
recipient IN VARCHAR2,
ccrecipient IN VARCHAR2,
subject IN VARCHAR2,
message IN VARCHAR2,
blnResultado IN OUT BOOLEAN)

IS
crlf VARCHAR2(2):= UTL_TCP.CRLF;
connection utl_smtp.connection;
mailhost VARCHAR2(30) := ‘aqui ip de server;
header VARCHAR2(1000);
arrayRECIPIENTS AU_GN_GENERAL.array_VARCHAR2;
arrayCCRECIPIENTS AU_GN_GENERAL.array_VARCHAR2;
i NUMBER:=0;
j NUMBER:=0;
v_recipient VARCHAR2(100) := ”;
v_ccrecipient VARCHAR2(100) := ”;
hd_recipient VARCHAR2(1000) := ”;
hd_ccrecipient VARCHAR2(1000) := ”;

BEGIN
— Start the connection
connection := utl_smtp.open_connection(mailhost,25);
hd_recipient := REPLACE(recipient, ‘|’, ‘,’);
hd_ccrecipient := REPLACE(ccrecipient, ‘|’, ‘,’);
header:= ‘Date: ‘||TO_CHAR(SYSDATE,’dd Mon yy hh24:mi:ss’)||crlf||
‘From: ‘||sender||”||crlf||
‘Subject: ‘||subject||crlf||
‘To: ‘||hd_recipient||crlf||
‘CC: ‘||hd_ccrecipient;

— Handshake with the SMTP server
utl_smtp.helo(connection, mailhost);
utl_smtp.mail(connection, sender);

IF recipient IS NOT NULL THEN
   arrayRECIPIENTS := AU_GN_GENERAL.AU_GN_OBTENER_ARRAY_CHAR(recipient, ‘|’);
   FOR i IN arrayRECIPIENTS.FIRST..arrayRECIPIENTS.LAST LOOP
    v_recipient := arrayRECIPIENTS(i);
    IF (v_recipient IS NOT NULL OR v_recipient != ”) THEN
    utl_smtp.rcpt(connection, v_recipient);
       END IF;
   END LOOP;
END IF;

IF ccrecipient IS NOT NULL THEN
   arrayCCRECIPIENTS := AU_GN_GENERAL.AU_GN_OBTENER_ARRAY_CHAR(ccrecipient, ‘|’);
   FOR j IN arrayCCRECIPIENTS.FIRST..arrayCCRECIPIENTS.LAST LOOP
    v_ccrecipient := arrayCCRECIPIENTS(j);
    IF (v_ccrecipient IS NOT NULL OR v_ccrecipient != ”) THEN
    utl_smtp.rcpt(connection, v_ccrecipient);
    END IF;
   END LOOP;
END IF;

IF recipient IS NULL AND ccrecipient IS NULL THEN
   dbms_output.put_line(‘ Mail NO sent.’);
   blnResultado := false;
ELSE
   utl_smtp.open_data(connection);

   — Write the header
   utl_smtp.write_data(connection, header);
   utl_smtp.write_data(connection, crlf ||message);
   utl_smtp.close_data(connection);
   dbms_output.put_line(‘ Mail sent.’);  
   blnResultado := true;
END IF;

utl_smtp.quit(connection);

EXCEPTION

WHEN UTL_SMTP.INVALID_OPERATION THEN
dbms_output.put_line(‘ Invalid Operation in SMTP transaction.’);
blnResultado := false;
WHEN UTL_SMTP.TRANSIENT_ERROR THEN
dbms_output.put_line(‘ Temporary problems with sending email – try again
later.’);
blnResultado := false;
WHEN UTL_SMTP.PERMANENT_ERROR THEN
dbms_output.put_line(‘ Errors in code for SMTP transaction.’);
blnResultado := false;

END;

Autor: Gary Vergara

Mover / Multiplexar Controlfile de Filesystem a ASM

Posted by Paola Pullas | Posted in Base de Datos, Oracle, Refundation, Tips | Posted on 27-05-2008

2

En algunas ocasiones por diferentes circunstancias nos encontramos con que nuestra base de datos Oracle que está trabajando con ASM (Automatic Storage Management) tiene direccionado su(s) control file(s) a una ubicación fuera de ASM. Esto suele ocurrir por ejemplo cuando la base en cuestión ha sido restaurada a partir de un backup utilizando RMAN.

A continuación se citan los pasos a seguir para mover el controlfile desde el filesystem a ASM y que la base vea este nuevo control file:

1.- Primero modificamos el parámetro control_files para que apunte al o los control files que vamos a crear dentro de ASM.

SQL> ALTER SYSTEM SET CONTROL_FILES=’+GRUPO1′ SCOPE=SPFILE;

2.- Luego nos conectamos a RMAN y ponemos a la base en estado NOMOUNT.

$ rman target /
RMAN> shutdown immediate;
RMAN> startup nomount;

3.- Desde RMAN hacemos un restore del controlfile en la ubicación actual de ASM , lo que finalmente creará la copia del controlfile.

RMAN> RESTORE CONTROLFILE FROM ‘ubicacion_actual/control01.ctl';

4.- Finalmente se abre la base de datos y se confirma que el parámetro ha sido cambiado.

SQL> ALTER DATABASE MOUNT:
SQL> ALTER DATABASE OPEN;
SQL> SHOW PARAMETER control_files;

Nota: Si se quiere además de movel el control_file, multiplexarlo solo se debe cambiar la sentencia utilizada en el paso 1 y añadir los control files deseados.

SQL> ALTER SYSTEM SET CONTROL_FILES=’+GRUPO1′, ‘+GRUPO1′, ‘+GRUPO1′ SCOPE=SPFILE;

Creado por: Ing. Paola Izquierdo M.

Cómo recrear un tablespace con datos

Posted by Paola Pullas | Posted in Base de Datos, Oracle, Refundation, Tips | Posted on 20-05-2008

4

En algunas oportunidades nos podemos encontrar con la necesidad de recrear un talespace que ya contiene datos, como por ejemplo cuando queremos cambiar una opción del tablespace que la sentencia “alter tablespace” no nos permite modificar. En estos casos podemos seguir los siguientes pasos para re-crear el tablespace sin perder los datos que contiene el mismo, de una forma sencilla:

1.- Primero confirmamos el espacio ocupado por el tablespace actualmente:

sql>select sum(bytes)/1024/1024 MB from user_segments where tablespace_name = ‘tbsname';

2.- Exportar los datos existentes en el tablespace que se desea recrear:

# exp system/psswd tablespaces=tbsname compress=n direct=y file=nombre.dmp log=nombre.log;

3.- Borrar el tablespace, desde el Enterprise Manager o via comandos:

sql> drop tablesapce tbsname including contents and datafiles;

4.- Recrear el tablespace. En este caso, por ejemplo, se quería cambiar la clausula de “segment space management” de manual a auto. De igual forma se puede re-crear el TBS vía EM o por linea de comandos:

sql> create tablespace tbsname datafile ‘/…./…dbf’ size 10M autoextend on next 1024K maxsize 50M logging extent management local segment space management auto;

5.- Importar el tablespace:

# imp system/psswd full=y file=nombre.dmp log=nombre.log tablespaces=tbsname rows=y indexes=y constraints=y commit=y ignore=y grants=n buffer=500000

Y con eso ya tendríamos los datos.

6.- Finalmente deberíamos comprobar que existe la misma cantidad de información el TBS luego de realizar el import:

sql>select sum(bytes)/1024/1024 MB from user_segments where tablespace_name = ‘tbsname';

Realizado por: Ing. Paola Izquierdo

Método para desparticionar una tabla rápidamente

Posted by Paola Pullas | Posted in Base de Datos, Oracle, Refundation, Tips | Posted on 14-05-2008

4

Si se quiere desparticionar una tabla muy grande, en donde sacar un export y volverlo a subir con la estructura de la tabla sin particiones se vuelve un método demasiado lento, podemos utilizar los siguientes pasos para que el proceso se haga mucho más rápido:

1.- Primero se debe hacer un merge de las particiones existentes en una sola, esto se logra con la siguiente sentencia:

sql> ALTER TABLE tabla_particionada MERGE PARTITIONS part1, (part2,part3) INTO ultima_particion;

Para saber el nombre de las particiones puede utilizar la sentencia que se detalla a continuación:

sql> SELECT PARTITION_NAME FROM USER_TAB_PARTITIONS WHERE TABLE_NAME=tabla_particionada;

Consultar el número de registros existentes actualmente en la tabla para una posterior comprobación. (select count(*) from tabla_particionada)

2.- Crear la tabla con un nombre temporal (tabla_desparticionada) y sin particiones.

3.- Pasar los datos de la tabla particionada a la nueva tabla creada sin particiones:

sql> ALTER TABLE tabla_particionada EXCHANGE PARTITION ultima_particion WITH TABLE tabla_desparticionada INCLUDING INDEXES WITHOUT VALIDATION;

4.- Comprobar que la tabla creada sin particiones (tabla_desparticionada) tiene ahora el mismo número de registros que tenía antes la tabla particionada. Esta última debería tener ahora 0 registros como consecuencia de la migración. Si se migraron correctamente los registros, se deberá finalmente borrar la tabla particionada (verificar antes dependencias con otros objetos) y renombrar a la tabla sin particiones con el nombre original.

5.- Renombrar la tabla:

sql> ALTER TABLE tabla_desparticionada RENAME TO nuevo_nombre;

Por: Izquierdo Paola

Vmware Server Console – Error

Posted by Paola Pullas | Posted in Refundation, Software Libre, Tips, Unix/Linux, VMware | Posted on 07-05-2008

1

Estoy instalando el Vmware Server Console en Ubuntu 8.04 y me arroja el siguiente error:

/usr/lib/vmware-server-console/bin/vmware-server-console: /usr/lib/vmware-server-console/lib/libgcc_s.so.1/libgcc_s.so.1: version `GCC_3.4′ not found (required by /usr/lib/libcairo.so.2)
/usr/lib/vmware-server-console/bin/vmware-server-console: /usr/lib/vmware-server-console/lib/libgcc_s.so.1/libgcc_s.so.1: version `GCC_4.2.0′ not found (required by /usr/lib/libstdc++.so.6)
/usr/lib/vmware-server-console/bin/vmware-server-console: /usr/lib/vmware-server-console/lib/libgcc_s.so.1/libgcc_s.so.1: version `GCC_3.4′ not found (required by /usr/lib/libcairo.so.2)
/usr/lib/vmware-server-console/bin/vmware-server-console: /usr/lib/vmware-server-console/lib/libgcc_s.so.1/libgcc_s.so.1: version `GCC_4.2.0′ not found (required by /usr/lib/libstdc++.so.6)
/usr/lib/vmware-server-console/bin/vmware-server-console: /usr/lib/vmware-server-console/lib/libgcc_s.so.1/libgcc_s.so.1: version `GCC_3.4′ not found (required by /usr/lib/libcairo.so.2)
/usr/lib/vmware-server-console/bin/vmware-server-console: /usr/lib/vmware-server-console/lib/libgcc_s.so.1/libgcc_s.so.1: version `GCC_4.2.0′ not found (required by /usr/lib/libstdc++.so.6)

¿La solución?
Esto típicamente ocurre cuando encuentra en el sistema operativo una librería de versión superior, por lo tanto hacemos lo siguiente:

mv /usr/lib/vmware-server-console/lib/libgcc_s.so.1/libgcc_s.so.1 /usr/lib/vmware-server-console/lib/libgcc_s.so.1/libgcc_s.so.1.bck

Y listo si ahora intentamos levantar vmware server cosole debería funcionar.

Autor: Paola Pullas