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

4

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

2

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

1

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: , ,

1

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

 

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

1

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

Consultas de Administración (DBA Query’s) Oracle 11g

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

0

CONSULTAS DBA
VERSIÓN 11g

 

1. Introducción
2. Consultas SQL
1. Introducción
En estos días eh  tenido muchas experiencias como dba sin un entorno gráfico solo sqlplus*  y eh realizado un pequeño diccionario de query’s que permiten la rápida administración de una base de datos, cada uno de estos pueden ser optimizado a las necesidades requeridas.
2. Consultas SQL
Nota: Para poder visualizar correctamente se puede dar formato a las columnas de salida en el sqlplus* con

SQL> SET LINESIZE 200

SQL> SET PAGESIZE 200

  • Instancia: Instancia a la que se esta conectado.

 

SQL> select host_name,instance_name,status from v$instance;
HOST_NAMEINSTANCE_NAME STATUS
—————————————————————-
rfcg1.oracle.comprod OPEN
  • Directorios registrados:  Directorios registrados en la base de datos
SQL> select * from dba_directories;
OWNER      DIRECTORY_NAME                    DIRECTORY_PATH
—————————— ——————————  ———————-
SYSORACLE_OCM_CONFIG_DIR     /u01/app/oracle/product/11.2.0/dbhome_1/ccr/state
SYS      DATA_PUMP_DIR     /u01/app/oracle/admin/prod/dpdump/

SYS      XMLDIR              /u01/app/oracle/product/11.2.0/dbhome_1/rdbms/xml

  • Registro de usuarios: Listado de usuarios que se conectaron con su numero de veces por día

 

SQL > SELECT USERNAME,LOGON_TIME,COUNT(*) AS NUMERO
 FROM V$SESSION
 WHERE USERNAME IS NOT NULL
–AND LOGON_TIME=SYSDATE
 GROUP BY LOGON_TIME,USERNAME
 ORDER BY 3 DESC;
USERNAME       LOGON_TIM     NUMERO
—————————— ——— ———-
SYSMAN       30-APR-14  3
SYSMAN       01-MAY-14  1
DBSNMP       29-APR-14  1
DBSNMP       29-APR-14  1
SYS               07-MAY-14  1
SYSMAN       30-APR-14  1
SYSMAN       30-APR-14  1
SYSMAN       07-MAY-14  1
DBSNMP       29-APR-14  1

 

  • Tablespace:

– Espacio disponible en tablespace

SQL> SELECT TABLESPACE_NAME, ROUND(SUM(BYTES)/1024/1024,0) as “MB free” FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME;
TABLESPACE_NAME MB free
—————————— ———-
SYSAUX      32
UNDOTBS1      22
USERS3
SYSTEM3
– Espacio total de tablespace
SQL> SELECT TABLESPACE_NAME, ROUND(SUM(BYTES)/1024/1024,0) as “MB free” FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME;
TABLESPACE_NAME MB free
—————————— ———-
UNDOTBS1      30
SYSAUX     530
USERS5
SYSTEM     700
  • Datafile

SQL> SELECT FILE_NAME,BYTES/1024/1024  AS MB FROM DBA_DATA_FILES;

FILE_NAME                                                             MB
—————————–                                     ———-
/u01/app/oracle/oradata/prod/users01.dbf                  5
/u01/app/oracle/oradata/prod/undotbs01.dbf             30
/u01/app/oracle/oradata/prod/sysaux01.dbf              530
/u01/app/oracle/oradata/prod/system01.dbf              700
  • Modo de la base de datos: Identificar si la base esta corriendo sobre archivelog o noarchivelog
SQL> SELECT NAME,LOG_MODE FROM V$DATABASE;
NAME LOG_MODE
——— ————
PROD ARCHIVELOG

 

  • Auditoria: Identificar si la base esta activada la auditoria
SQL> SELECT NAME,VALUE FROM V$PARAMETER WHERE NAME LIKE ‘audit_trail';
NAME                          VALUE
———————-    —————————-
audit_trail                       DB
  • Controlfile: Identificar la ruta donde se encuentran nuestros controlfile
SQL> show parameter control_files;
NAME      TYPE          VALUE
—————-    ———–    ——————
control_files         string            /u01/app/oracle/oradata/prod/control01.ctl,
                                               /u01/app/oracle/fast_recovery_area/prod/control02.ctl

 

  • Fast recovery Area (FRA): Tamaño de la FRA
SQL>SHOW PARAMETER DB_RECOVERY_FILE_DEST_SIZE;
NAME       TYPE            VALUE
—————————-    ———–      ———————-
db_recovery_file_dest_sizebig integer     4122M
  • Tamaño actual de la base de datos
SQL> SELECT SUM(BYTES)/1024/1024 MB FROM DBA_SEGMENTS;
MB
———-
    1201.5
  • Esquemas creados
SQL> SELECT USERNAME FROM DBA_USERS;
USERNAME
——————————
SYS
SYSTEM
DBVISIT7
OUTLN
MGMT_VIEW
FLOWS_FILES
MDSYS
ORDSYS
EXFSYS
DBSNMP
WMSYS
APPQOSSYS
APEX_030200
OWBSYS_AUDIT
ORDDATA
CTXSYS
ANONYMOUS
SYSMAN
XDB
ORDPLUGINS
OWBSYS
SI_INFORMTN_SCHEMA
OLAPSYS
SCOTT
ORACLE_OCM
XS$NULL
MDDATA
DIP
APEX_PUBLIC_USER
SPATIAL_CSW_ADMIN_USR
SPATIAL_WFS_ADMIN_USR
  • Tablas con propietario especifico

SQL> SELECT OWNER,OBJECT_NAME FROM DBA_OBJECTS WHERE ROWNUM < 11;

OWNER                                             OBJECT_NAME

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

SYS                                          ICOL$

SYS                                          I_USER1

SYS                                          CON$

SYS                                          UNDO$

SYS                                          C_COBJ#

SYS                                          I_OBJ#

SYS                                          PROXY_ROLE_DATA$

SYS                                          I_IND1

SYS                                          I_CDEF2

SYS                                          I_OBJ5

 

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