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-2014

2

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/

Creación de directorios en Oracle

Posted by josefabre | Posted in Noticias | Posted on 30-05-2014

0

Amog@s,
En este post se enseñara a crear un directorio para realizar los export e import en diferentes rutas de la predefinida por Oracle
Comencemos.
Hoy en día ya los export no se guardan en el mismo servidor, y si lo tienen es mejor  ponerse como meta sacarlos, ya que por daño de servidor físico o fallo de disco podría perder su información y para una empresa cualesquiera que sea el costo es elevado.
<<Un buen DBA siempre tiene un plan contingentes ante desastres…¿Tú ya lo tienes? >>
Indicando esto comencemos…
Oracle en su configuración crea una ruta por defecto y la registra con el nombre de DATA_PUMP_DIR  la ruta es:
OWNER                 DIRECTORY_NAME              DIRECTORY_PATH
—————————— —————————— ——————————
SYS                           DATA_PUMP_DIR           $ORACLE_BASE/admin/SID/dpdump/
Vamos a crear  un directorio siguiendo los siguientes pasos:
1. Nos conectarnos a SQLPlus*  como sysdba
[oracle@local ~]$ cd
[oracle@local ~]$ . ./.bash_profile
[oracle@local ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Fri May 30 11:40:43 2014
Copyright (c) 1982, 2011, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 – 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
2. Verificamos los directorios existentes
SQL> select * from dba_directories;
OWNERDIRECTORY_NAME          DIRECTORY_PATH
———  ————————   —————————–
SYS      IMPORT1                                              /u01/import/
SYS      IMPORTAR                                           /u01/app/oracle/admin/sid_prod
SYS      EXP_DIR                                               /home/oracle
SYS      XMLDIR                                                /u01/app/oracle/product/11.2.0/dbhome_1/rdbms/xml
SYS      IMPORT                                                /u01/import
SYS      DATA_PUMP_DIR                               /u01/app/oracle/admin/sid_prod/dpdump/
SYS       ORACLE_OCM_CONFIG_DIR          /u01/app/oracle/product/11.2.0/dbhome_1/ccr/state
7 rows selected.
3. Sentencia para crear un directorio
Formato:
CREATE DIRECTORY <  Nombre del directorio > AS < Ruta del directorio> ;
Ejemplo:
SQL> CREATE DIRECTORY RESPALDOS_EXP AS ‘/bck_prod’;
Directory created.
Nota: la carpeta /bck_prod es un punto de montaje fuera del servidor
4. Permisos de lectura y escritura sobre el directorio para realizar import y export
SQL> GRANT READ,WRITE ON DIRECTORY RESPALDOS_EXP TO IMP_FULL_DATABASE;

Grant succeeded.

SQL> GRANT READ,WRITE ON DIRECTORY RESPALDOS_EXP TO EXP_FULL_DATABASE;

Grant succeeded.
Esto es todo una vez creado esto ya pueden lanzar la sentencia de export o import apuntando al directorio RESPALDOS_EXP.

Ejemplo: 
[oracle@local ~]$ expdp directory:RESPALDOS_EXP dumpfile:exp_diag.dmp logfile:imp_diag.log schemas:diag exclude:statistics;

Seguridades || Rastreo y Bloqueo de Celular Remoto – Android

Posted by josefabre | Posted in Noticias | Posted on 27-05-2014

0

Amigos,

Aquí les dejo el link para descargar un APP que puede salvar de apuros.

Funciona como administrador de dispositivo remoto de su móvil con sistema operativo Android es fácil de instalar y configurar.

Funcionalidades generales:

-Rastrear

-Bloquear

-Borrar datos

Descarga: https://play.google.com/store/apps/details?id=com.google.android.apps.adm

Administración: https://www.google.com/android/devicemanager

Vídeo Tutorial : https://www.youtube.com/watch?v=lbjdVZSZt5A

 

Upgrade to Oracle Database 12c || Avanza con la Tecnología

Posted by josefabre | Posted in Noticias | Posted on 23-05-2014

1

 

https://blogs.oracle.com/certification/entry/0856_18

Vista Materializada (VM) Oracle

Posted by josefabre | Posted in Noticias | Posted on 22-05-2014

0

FORMATO

CREATE MATERIALIZED VIEW mi_vista_materializada

 [TABLESPACE mi_tablespace]

 [BUILD {IMMEDIATE | DEFERRED}]

 [REFRESH {ON COMMIT | ON DEMAND | [START WITH fecha_inicio] NEXT fecha_intervalo } |

          {COMPLETE | FAST | FORCE} ]

 [{ENABLE|DISABLE} QUERY REWRITE] AS

     SELECT t1.campo1, t2.campo2

     FROM mi_tabla1 t1 , mi_tabla2 t2

     WHERE t1.campo_fk = t2.campo_pk AND …

OPCIONES DE SENTENCIA

Carga de datos en la vista

BUILD IMMEDIATE: Los datos de la vista se cargan en el mismo momento de la creación

BUILD DEFERRED: Sólo se crea la definición, los datos se cargarán más adelante.

Para realizar esta carga se puede utilizar la función REFRESH del package DBMS_MVIEW:

  begin

         dbms_mview.refresh(‘mi_vista_materializada’);

      end;

Cada cuánto tiempo se refrescarán:

REFRESH ON COMMIT: Cada vez que se haga un commit en los objetos origin definidos en la select

REFRESH ON DEMAND: Como con la opción DEFERRED del BUILD, se utilizarán los procedures

REFRESH, REFRESH_ALL_MVIEWS o REFRESH_DEPENDENT del package DBMS_MVIEW

REFRESH [START WITH fecha_inicio] NEXT fecha_intervalo:

 START WITH: indica la fecha del primer refresco (fecha_inicio suele ser un SYSDATE)

NEXT: indica cada cuánto tiempo se actualizará (fecha_intervalo podría ser SYSDATE +1 para       realizar el refresco una vez al día)

De qué manera se refrescarán

REFRESH COMPLETE:

El refresco se hará de todos los datos de la vista materializada, la recreará completamente cada vez que se lance el refresco.

Utiliza todo el recurso necesario para completar la actualización en la hora indicada.

REFRESH FAST:

El refresco será incremental, es la opción más recomendable.

Este tipo de refresco tiene bastantes restricciones según el tipo de vista que se esté creando.

Se realiza ocupando el mínimo de recurso de memoria para completar la actualización. Terminara dependiendo del número de registros a actualizar como también la memoria que tiene disponible

Una de las cosas importantes a tener en cuenta es que para poder utilizar este método casi siempre es necesario haber creado antes un LOG de la Vista materializada, indicando los campos clave en los que se basará el mantenimiento de la vista.

Se utiliza la instrucción  ”CREATE MATERIALIZED VIEW LOG ON“:

CREATE MATERIALIZED VIEW LOG ON mi_tabla_origen    

   WITH PRIMARY KEY    

   INCLUDING NEW VALUES;

REFRESH FORCE:

Con esta opción se indica que si es posible se utilice el metodo FAST, y si no el COMPLETE.

Para saber si una vista materializada puede utilizar el método FAST, el package DBMS_MVIEW proporciona el procedure EXPLAIN_MVIEW

Activación de la reescritura de consultas para optimizar el Data warehouse

ENABLE QUERY REWRITE: Se permite a la base de datos la reescritura de consultas

DISABLE QUERY REWRITE: Se desactiva la reescritura de consultas

QUERY REWRITE es la que más vamos a utilizar si queremos las vistas materializadas para optimizar nuestro Data warehouse.

Esta opción permite crear tablas agregadas en forma de vistas materializadas, y que cuando se lance una SELECT la base de datos pueda reescribirla para consultar la tabla o vista que vaya a devolver los datos solicitados en menos tiempo, todo de manera totalmente transparente al usuario.

Lo único que hay que hacer es crear las tablas agregadas como vistas materializadas con QUERY REWRITE habilitado.

Linux: Pasos para bajar una base de datos ORACLE en forma segura

Posted by josefabre | Posted in Base de Datos, Noticias, Oracle, Software Libre, Unix/Linux | Posted on 21-05-2014

Tags: , ,

0

Cuando se generen inconvenientes en su empresa y por A o B razón deben bajar las bases de datos, la forma segura de realizar esto es siguiendo los siguientes pasos:

1.-Ingresar al servidor 

ssh o por telnet para ingresar al SQLPlus* ya sea por putty , SSH-Security o cualquier herramienta que maneje su negocio para administrar servidores

2.-Cargar las variables de ambiente

Nota:Este paso es necesario cuando el ambiente de oracle no se encuentra cargado en la sesión actual de sistema operativo

[oracle@docec admin]$ cd

[oracle@docec ~]$ . ./.bash_profile

[oracle@docec ~]$ . oraenv
ORACLE_SID = [nueva] ? nueva
ORACLE_HOME = [/home/oracle] ? /u01/app/oracle/product/11.2.0/dbhome_1
The Oracle base remains unchanged with value /u01/app/oracle

3.-Detener el listener

Esta acción permite que usuarios nuevos no puedan conectarse

[oracle@docec ~]$ lsnrctl stop

LSNRCTL for Linux: Version 12.1.0.1.0 – Production on 21-MAY-2014 14:24:08

Copyright (c) 1991, 2013, Oracle. All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost.localdomain)(PORT=1521)))
The command completed successfully

4.-Apagar la base de forma segura

[oracle@docec ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on Wed May 21 14:25:16 2014

Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 – 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> shutdown immediate;

Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> exit

5.- Apagar el sistema operativo

[oracle@docec ~]$ poweroff

 

Nota: Realizar los pasos 2 y 4 por cada Instancia (SID) que se tenga en el servidor

 

DATABASE LINK

Posted by josefabre | Posted in Base de Datos, Entrenamiento, Oracle, Software Libre, Unix/Linux | Posted on 21-05-2014

Tags: , ,

0

DATABASE LINK

 



Para que sirve un DBLink?

Un conexión de base de datos externa o simplemente DBLink, sirve para conectarte con otra base de datos y así poder extraer información de esa base.

Creación del DBLink

Para crear un dblink se deben tomar en cuenta los siguientes puntos
- Agregar la entrada de conexión en el tnsname.ora

[host@local ~]$ vim $ORACLE_HOME/networck/admin/tnsname.ora

Descripción de la nueva entrada:

NUEVA_ENTRADA =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = nueva_entrada.rfcg.com)

)

)

Nota: Para validar que todo se encuentre funcionando, realizamos una prueba ejecutando

[host@local ~]$ tnsping NUEVA_ENTRADA

TNS Ping Utility for Linux: Version 12.1.0.1.0 – Production on 21-MAY-2014 12:09:23

Copyright (c) 1997, 2013, Oracle.  All rights reserved.

Used parameter files:
Used TNSNAMES adapter to resolve the alias

Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = nuva.rfcg.com)))

OK (10 msec)
-En SQLPlus*, Toad , SqlDeveloper o cualquier ambiente que se tenga para poder ejecutar el scrip ejecutamos.

Formato:

CREATE [PUBLIC] DATABASE LINK <NOMBRE DEL DBLINK>

CONNECT TO <NOMBRE DEL USUARIO>

IDENTIFIED BY <CLAVE DEL USUARIO>

USING <NOMBRE DE LA ENTRADA EN EL TNSNAME>



Ejemplo:



SQL> CREATE PUBLIC DATABASE LINK “DBL_CONEXION_PROD.RGCG.COM”

CONNECT TO JFABRE

IDENTIFIED PassWOrD

USING ‘NUVA_ENTRADA’;














Añadir un Datafile en 11g por SQLPlus*

Posted by josefabre | Posted in Noticias | Posted on 20-05-2014

0

La creación de  datafile’s para un DBA es muy común. y mas común aun es, no tener ambiente gráfico para crearlo por lo que en este blog se enseña  como crear un datafile por sqlplus*

Como saber cuando es necesario el incremento de un datafile, es cuando:

- El o los datafiles que componen el tablespace no se pueden extender más porque hemos llegado a la máxima capacidad del disco donde este ubicado

- Hemos llegado el máximo permitido por Oracle.

La recomendación para ampliar el datafile automáticamente va de la mano con la  transacción que posee su base de datos, si es una base que no posee mucha transacción con 10MB esta bien.

Se recomienda ampliar y crear un nuevo datafile si todos los que posee el tablespace estan al 100% y el ultimo esta a un 90%

Problema: Tenemos el tabelspace DATA de la base de datos TEST que esta por encima del 90% de ocupación y necesitamos ampliarlo, desde sqlplus*

1.-Revisión de los datafile llenos.

SQL>SELECT FILE_NAME, BYTES FROM DBA_DATA_FILES WHERE TABLESPACE_NAME =’DATA’;
FILE_NAME                                                                     Tamaño en MB

————————————————————–                     —————–

/u02/oradata/TEST/dat/TEST_DATA_01.dbf               32768

/u02/oradata/TEST/dat/TEST_DATA_02.dbf               32768

El tablespace DATA tiene ya 2 datafiles de 32GB que no podemos extender por loque vamos a añadirle un tercer datafile, vamos a añadir el datafile TEST_DATA_03.dbf de 5GB, nos aseguramos que tenemos el espacio libre el filesytem y realizamos la siguiente operación en sqlplus:

2.- Agregar datafile al tablesapce

SQL> ALTER TABLESPACE DATA ADD DATAFILE ‘/u02/oradata/TEST/dat/TEST_DATA_03.dbf’ SIZE 5120M;

3.- Revisión del datafile nuevo.

SQL>SELECT FILE_NAME, BYTES FROM DBA_DATA_FILES WHERE TABLESPACE_NAME  =’DATA’;
FILE_NAME                                                                     Tamaño en MB

————————————————————–                     —————–

/u02/oradata/TEST/dat/TEST_DATA_01.dbf               32768

/u02/oradata/TEST/dat/TEST_DATA_02.dbf               32768

/u02/oradata/TEST/dat/TEST_DATA_03.dbf                 5120

Se puede? – export y import 10g a 11g

Posted by josefabre | Posted in Noticias | Posted on 20-05-2014

0

Hoy tuve la oportunidad de realizar  un ambiente de pruebas,  fue pasar un export de 10g a un servidor donde se tiene instalado 11g.

Nota: Se deben realizar las debidas pruebas en el servidor de 11g ya que paquetes propios de Oracle cambiaron sus nombres en esta versión así como también algunas funcionalidades.

Esto si es posible siguiendo los siguientes pasos

 

1: Crea los  tablespaces en la base  11g
2: Export full de la base en 10g
3: Copiar los archivos dumpfile del servidor con 10g al de 11g
4: Ejecutar Grant IMPORT_FULL_DATABASE system privilege to user SYSTEM en  la base  11g
5: Import full en la base 11g

 

 

 

 

Vulnerabilidad en el kernel de Linux

Posted by josefabre | Posted in Noticias | Posted on 16-05-2014

0

Esta nueva vulnerabilidad descubierta afecta a todas las versiones del kernel de Linux desde la versión 2.6.31 (una versión de 2009) hasta la actual 3.14.3 y la 3.15 que aún se encuentra en desarrollo. Esta vulnerabilidad en cuestión denominada como CVE-2014-0196 puede permitir que un usuario sin permisos corrompa la memoria del sistema hasta obtener permisos de administrador (root) para poder realizar prácticamente cualquier función en el sistema afectado e incluso corromper la memoria para realizar un ataque DoS que bloquee el equipo.

A nivel técnico, esta vulnerabilidad se basa en que si se da a la vez más de una orden de escritura a una TTY se produce un desbordamiento de búfer (buffer overflow). La función que se está ejecutando para esta función es n_tty_write(), una función del núcleo de Linux, por lo que al producirse el desbordamiento habremos escrito más allá de los límites asignados para la memoria y, desde ahí, podremos escribir en la sección de memoria que deseemos sin limitaciones.

Aun no esta muy difundida la noticia por lo que hakers informáticos aun no han realizado ataques a esta grieta, que puede causar la caída de su servidor “kernel panic”

Ahora yo soy root!!