Mostrando entradas con la etiqueta DBA. Mostrar todas las entradas
Mostrando entradas con la etiqueta DBA. Mostrar todas las entradas

21 febrero 2018

Oracle E-Business Suite: Consejos sobre seguridad cuando actualizas la base de datos

Al actualizar la base de datos de Oracle E-Business Suite a Oracle Database 12c (12.1), hay una serie de consideraciones y pasos de seguridad que deberían incluirse en el procedimiento de actualización:
  • Nota de soporte de Oracle ID 1524398.1 : Notas de interoperabilidad: Oracle E-Business Suite versión 12.0 o 12.1 con Oracle Database 12c versión 1 (12.1.0)


Aquí, documentaremos los pasos que se deben incluir o modificar para mejorar la seguridad de la base de datos. 

Consejo 1:

"Si bien no es obligatorio para la interoperabilidad de Oracle E-Business Suite con Oracle Database, los clientes pueden optar por aplicar Actualizaciones de conjunto de parches de base de datos (PSU) en su Oracle E-Business Suite Database ...".

Después de cualquier actualización de la base de datos, siempre se debe aplicar el último parche de CPU (ya sea PSU o SPU). La actualización de la base de datos solo tiene el último parche de CPU disponible en el momento del lanzamiento del parche de actualización de la base de datos. En el caso de 12.1.0.1, la actualización de la base de datos estará vigente a partir de julio de 2013 y faltarán los últimos cinco parches de CPU. Los parches de actualización de la base de datos restablecen el nivel de la CPU, por lo tanto, incluso si hubiera aplicado el parche de la CPU más reciente antes de la actualización, la actualización revertirá el nivel del parche de la CPU a julio de 2013.

Desde una perspectiva de seguridad, el último parche (PSU) debe considerarse obligatorio.

Consejo 2:

Es importante observar desde una perspectiva de seguridad que Database Vault, si está instalado, debe desactivarse durante el proceso de actualización. Todas las protecciones habilitadas en Database Vault destinadas a DBA se desactivarán durante la actualización.

Consejo 3:

El esquema DMSYS ya no se usa con Oracle E-Business Suite y se puede eliminar de forma segura. Recomendamos que elimine el esquema como parte de este paso para reducir la superficie de ataque de la base de datos y eliminar los componentes no utilizados. Use el siguiente SQL para eliminar el usuario DMSYS :

DROP USER DMSYS CASCADE;

Consejo 4:

Como parte de la actualización, es un buen momento para revisar que los parámetros de inicialización relacionados con la seguridad estén configurados correctamente. Verifique que los siguientes parámetros estén establecidos:

o7_dictionary_accessibility = FALSE
audit_trail = <set to a value other than none>
sec_case_sensitive_logon = TRUE (patch 12964564 may have to be applied)

Consejo 5:

Para Oracle E-Business Suite 12.1, sqlnet_ifile.ora debe contener el siguiente parámetro para que se corresponda con el parámetro de inicialización sec_case_sensitive_login = true -

SQLNET.ALLOWED_LOGON_VERSION_SERVER = 10

02 diciembre 2017

¿Hay vida más allá de Oracle? Características de Postgres SQL para un DBA de Oracle

Esta entrada en el blog contiene información para ayudar a un DBA de Oracle a entender algunos términos y la administración de una base de datos PostgreSQL. Pretendo dar una introducción a PostgreSQL, no un tutorial o una definición completa de cómo administrar una base de datos PostgreSQL. Para obtener la documentación completa, consulte los manuales de PostgreSQL.

¿Que es una base de datos Oracle?

Un servidor de base de datos Oracle consiste en una instancia de Oracle y una base de datos Oracle.
Una instancia de Oracle consiste en los procesos en segundo plano de Oracle y la memoria asignada dentro del área global compartida (SGA) y el área global del programa (PGA).
Los procesos en segundo plano de Oracle constan de lo siguiente:

  • Proceso del escritor de la base de datos (DBWn)
  • Proceso de registro de registro (LGWR)
  • Proceso de punto de control (CKPT)
  • Proceso de supervisión del sistema (SMON)
  • Process Monitor Process (PMON)
  • Proceso de Recuperación (RECO)
  • Archivar procesos (ARCn)
  • Una base de datos Oracle consiste en los archivos de datos de la base de datos, los archivos de control, los archivos de registro de rehacer, los archivos de registro de archivos y el archivo de parámetros. Para acceder de forma remota a una base de datos Oracle, existe un proceso separado denominado Listener Oracle.
  • En la configuración del Servidor Dedicado (frente a la configuración del Servidor Compartido), cada sesión de base de datos establecida tiene su propio proceso ejecutándose en el servidor.

Para mantener las cosas simples, cualquier comparación con una base de datos Oracle siempre se referirá a una sola instancia que administre una sola base de datos, RAC y Data Guard no serán mencionados. 

Nota: PostgreSQL también tiene el concepto de un modo de espera en caliente (desde 8.2) con el envío de registros de archivo (introducido en 8.0).

PostgreSQL

Procesos de servidor de base de datos

El programa de servidor de base de datos postgres son todos los procesos del servidor. No hay procesos nombrados por separado como en Oracle para las diferentes tareas dentro del entorno de la base de datos. Si mirara la lista de procesos (ps), el nombre de los procesos sería postgres. Sin embargo, en la mayoría de las plataformas, PostgreSQL modifica su título de comando para que los procesos individuales del servidor puedan identificarse fácilmente. Es posible que deba ajustar los parámetros utilizados para comandos como ps y top para mostrar estos títulos actualizados en lugar del nombre del proceso ("postgres").
Los procesos vistos en una lista de procesos pueden ser algunos de los siguientes:

  • Proceso maestro: inicia los otros procesos, procesos de fondo y sesión.
  • Proceso de Writer: proceso en segundo plano que coordina las escrituras de la base de datos, las escrituras de registro y los puntos de control.
  • Proceso de recopilación de estadísticas: proceso en segundo plano que recopila información sobre la actividad del servidor.
  • Procesos de sesión de usuario.

Los procesos del servidor se comunican entre sí utilizando semáforos y memoria compartida para garantizar la integridad de los datos a través del acceso simultáneo a los datos.

Clúster de base de datos PostgreSQL

Dentro de un servidor, se pueden construir una o más instancias de Oracle. Las bases de datos están separadas una de otra, por lo general compartiendo solo el proceso de escucha de Oracle. PostgreSQL tiene el concepto de un cluster de base de datos. Un clúster de base de datos es una colección de bases de datos que se almacena en una ubicación común del sistema de archivos (el "área de datos"). Es posible tener varios clústeres de bases de datos, siempre que utilicen diferentes áreas de datos y diferentes puertos de comunicación.
Los procesos junto con los componentes del sistema de archivos se comparten en el clúster de la base de datos. Todos los datos necesarios para un clúster de base de datos se almacenan dentro del directorio de datos del clúster, comúnmente denominado PGDATA (después del nombre de la variable de entorno que se puede usar para definirlo). El directorio PGDATA contiene varios subdirectorios y archivos de configuración.
Los siguientes son algunos de los archivos de configuración del clúster:
  • postgresql.conf - Parámetro o archivo de configuración del servidor principal.
  • pg_hba.conf - Archivo de configuración de autenticación de cliente.
  • pg_ident.conf - Mapa de la cuenta del sistema operativo al archivo de la cuenta PostgreSQL.
Los subdirectorios de clúster:
  • base - Subdirectorio que contiene subdirectorios por base de datos
  • global - Subdirectorio que contiene tablas de todo el cluster
    • pg_auth - Archivo de autorización que contiene definiciones de usuario y rol.
    • pg_control - Archivo de control.
    • pg_database - Información de bases de datos dentro del clúster.
  • pg_clog - Subdirectorio que contiene datos de estado de confirmación de transacción
  • pg_multixact - Subdirectorio que contiene datos de estado de múltiples movimientos (usado para bloqueos de filas compartidos)
  • pg_subtrans - Subdirectorio que contiene datos de estado de subtransacción
  • pg_tblspc - Subdirectorio que contiene enlaces simbólicos a espacios de tabla
  • pg_twophase - Subdirectorio que contiene archivos de estado para transacciones preparadas
  • pg_xlog - Subdirectorio que contiene archivos WAL (Write Ahead Log)
De forma predeterminada, para cada base de datos en el clúster hay un subdirectorio dentro de PGDATA / base, que recibe el nombre del OID de la base de datos (identificador de objeto) en pg_database. Este subdirectorio es la ubicación predeterminada para los archivos de la base de datos; en particular, sus catálogos de sistema están almacenados allí. Cada tabla e índice se almacenan en un archivo separado, que recibe su nombre del número de archivo de la tabla o índice, que se puede encontrar en pg_class.relfilenode.

Varios componentes que los DBA de Oracle normalmente igualan a una base de datos se comparten entre bases de datos dentro de un cluster de PostgreSQL, incluido el archivo de parámetros, el archivo de control, los registros de rehacer, los espacios de tabla, las cuentas, los roles y los procesos en segundo plano.



Archivos de datos de espacios de tablas y objetos

PostgreSQL introdujo la administración del tablespace en la versión 8.0. La representación física de un espacio de tabla dentro de PostgreSQL es simple: es un directorio en el sistema de archivos, y la asignación se realiza a través de enlaces simbólicos.
Cuando se crea una base de datos, el espacio de tablas predeterminado es donde se almacenan por defecto todos los objetos de la base de datos. En Oracle esto sería similar al Sistema, al Usuario y a los espacios de tablas temporales. Si no se define ningún espacio de tabla predeterminado durante la creación, los archivos de datos entrarán en un subdirectorio de PGDATA / base. Preferiblemente, la ubicación de la información del catálogo del sistema y las estructuras de datos de la aplicación residirían en espacios de tablas gestionados por separado. Esto está disponible.
Al igual que en Oracle, la definición de una tabla PostgreSQL determina qué espacio de tablas reside el objeto. Sin embargo, no existe limitación de tamaño, excepto los límites físicos que el sistema operativo coloca en el dispositivo. Los datos de la tabla individual se almacenan dentro de un archivo dentro del tablespace (o directorio). El software de la base de datos dividirá la tabla entre múltiples archivos de datos en caso de que los datos de la tabla superen 1 GB.

Desde la versión 8.1, es posible dividir una tabla en espacios de tabla separados (o lo mismo). Esto se basa en la característica de herencia de tablas de PostgreSQL, que utiliza una capacidad del planificador de consultas denominada exclusión de restricciones.

No existe capacidad para separar columnas específicas (como LOB) en espacios de tabla definidos por separado. Sin embargo, además de los archivos de datos que representan la tabla (en múltiplos de 1 GB), hay una separación de archivos de datos para columnas dentro de una tabla que están TOAST. El sistema de almacenamiento PostgreSQL llamado TOAST (la técnica de almacenamiento de atributo de gran tamaño) almacena automáticamente valores mayores que una página de base de datos única en un área de almacenamiento secundaria por tabla. La técnica TOAST permite columnas de datos de hasta 1 GB de tamaño.

Al igual que en Oracle, la definición de índice determina en qué espacio de tabla reside. Por lo tanto, es posible obtener la ventaja de rendimiento de separar los discos de los datos de una tabla frente a su indexación, aliviando la contención de E / S durante la manipulación de datos.
En Oracle existen espacios de tablas temporales donde se utiliza la información de clasificación y el espacio de evaluación temporal necesarios para declaraciones distintas y similares. PostgreSQL no tiene este concepto de un tablespace temporal; sin embargo, requiere almacenamiento para poder realizar estas actividades también. Dentro del espacio de tabla "predeterminado" de la base de datos (definido en la creación de la base de datos), hay un directorio llamado pgsql_tmp. Este directorio contiene el almacenamiento temporal necesario para la evaluación. Los archivos que se crean dentro del directorio existen solo mientras se está ejecutando la instrucción SQL. Crecen muy rápido, y lo más probable es que no estén diseñados para la eficiencia del espacio sino más bien para la velocidad. Tenga en cuenta que la fragmentación del disco podría ser el resultado de esto, y debe haber suficiente espacio en el disco para admitir las consultas del usuario. Con el lanzamiento de 8.3, hay definiciones de espacios de tablas temporales usando el parámetro temp_tablespaces.roles y los procesos en segundo plano.

REDO y Archivado

PostgreSQL usa Write-Ahead Logging (WAL) como su enfoque para el registro de transacciones. El concepto central de WAL es que los cambios en los archivos de datos (donde residen las tablas y los índices) deben escribirse solo después de que esos cambios hayan sido registrados, es decir, cuando los registros de registro que describen los cambios hayan sido descargados al almacenamiento permanente. Si seguimos este procedimiento, no es necesario que limpiemos las páginas de datos en el disco en cada compromiso de transacción, porque sabemos que, en caso de falla, podremos recuperar la base de datos utilizando el registro: cualquier cambio que no se haya aplicado a las páginas de datos se pueden rehacer desde los registros de registro. (Esta es la recuperación de avance, también conocida como REDO).

PostgreSQL mantiene su (WAL) en el subdirectorio pg_xlog del directorio de datos del cluster.

WAL se introdujo en PostgreSQL en la versión 7.1. Para mantener la consistencia de la base de datos en caso de falla, las versiones anteriores forzaron todas las modificaciones de datos en el disco antes de que cada transacción se confirmara. Con WAL, solo debe descargarse un archivo de registro al disco, lo que mejora enormemente el rendimiento al tiempo que agrega capacidades como la Recuperación puntual y el archivo de transacciones.

Un sistema PostgreSQL teóricamente produce una secuencia indefinidamente larga de registros WAL. El sistema divide físicamente esta secuencia en archivos de segmentos WAL, que normalmente son de 16 MB cada uno. El sistema normalmente crea algunos archivos de segmento y luego los "recicla" al cambiar el nombre de los archivos de segmento que ya no se necesitan a números de segmento más altos. Si tuviera que realizar una lista del directorio pg_xlog, siempre habría un puñado de archivos cambiando de nombre a lo largo del tiempo.

Para agregar el archivo de los archivos WAL, existe un parámetro dentro del archivo de parámetros donde se agrega un comando para ejecutar el proceso de archivo. Una vez hecho esto, las copias de seguridad del sistema operativo "en línea" están disponibles ejecutando los comandos pg_start_backup y pg_stop_backup, que suspenden y reanudan la escritura en los archivos de datos mientras continúan escribiendo las transacciones en los archivos WAL y ejecutando el proceso de archivo.
La inclusión del archivo WAL y los comandos de respaldo en línea se agregaron en la versión 8.0.

Rollback o Undo

Es interesante cómo se utiliza la asignación dinámica de espacio en disco para el almacenamiento y procesamiento de registros dentro de las tablas. Los archivos que representan la tabla crecen a medida que la tabla crece. También crece con las transacciones que se realizan en su contra. En Oracle existe un concepto de rollback o deshacer segmentos que contienen la información para revertir una transacción. En PostgreSQL, los datos se almacenan dentro del archivo que representa la tabla. Por lo tanto, cuando se realizan eliminaciones y actualizaciones en una tabla, el archivo que representa el objeto contendrá los datos anteriores. Este espacio se reutiliza pero para forzar la recuperación del espacio usado, se debe ejecutar un proceso de mantenimiento llamado vacío.

Archivo de registro del servidor

Oracle tiene el archivo de registro de alerta. PostgreSQL tiene el archivo de registro del servidor. Una opción de configuración incluso tendría la información de conexión que normalmente vemos en listener.log de Oracle aparece en el registro del servidor de PostgreSQL. Los parámetros dentro del archivo de configuración del servidor (postgresql.conf) determinan el nivel, la ubicación y el nombre del archivo de registro.
Para ayudar con el mantenimiento del archivo de registro del servidor (crece rápidamente), existe una funcionalidad para girar el archivo de registro del servidor. Los parámetros se pueden configurar para determinar cuándo rotar el archivo según el tamaño o la antigüedad del archivo. La administración de los archivos antiguos se deja al administrador.

Aplicaciones

El comando initdb crea un nuevo clúster de base de datos PostgreSQL.
El comando psql inicia el front-end basado en terminal a la solicitud de comando de PostgreSQL o SQL. Las consultas y los comandos se pueden ejecutar de forma interactiva o mediante archivos. El símbolo del sistema psql tiene varias características atractivas:

  • Completa ayuda en línea para los comandos psql y la sintaxis SQL.
  • Historial de comandos y edición de línea.
  • Los comandos SQL pueden existir en múltiples líneas y se ejecutan solo después del punto y coma (;).
  • Se pueden ingresar varios comandos SQL separados por punto y coma en una sola línea.
  • Formato de salida flexible.
  • Múltiples comandos de descripción de objetos que son superiores a DESCRIBE de Oracle.

Dependiendo de las configuraciones de seguridad de los entornos, las conexiones se pueden establecer local o remotamente a través de TCP / IP. Debido a estas conexiones de seguridad separadas, las contraseñas pueden o no ser necesarias para conectarse.
El comando pg_ctl es una utilidad para mostrar el estado, iniciar, detener o reiniciar el servidor de base de datos PostgreSQL (postgres). Aunque el servidor se puede iniciar a través del ejecutable de postgres, pg_ctl encapsula tareas tales como redirigir la salida del registro, separarla adecuadamente del terminal y del grupo de procesos, y proporcionar opciones para el apagado controlado.

Los comandos pg_dump y pg_restore son utilidades diseñadas para exportar e importar los contenidos de una base de datos PostgreSQL. Los volcados pueden salir en formato de archivo de script o de archivo. El formato de archivo de script crea archivos de texto sin formato que contienen los comandos SQL necesarios para reconstruir la base de datos al estado en el que se encontraba en el momento en que se generó. El formato de archivo de archivo crea un archivo para ser utilizado con pg_restore para reconstruir la base de datos.
Los formatos de archivos de almacenamiento están diseñados para ser portátiles en todas las arquitecturas. Históricamente, cualquier tipo de actualización al software PostgreSQL requeriría un pg_dump de la base de datos antes de la actualización. Luego, un pg_restore después de la actualización. Ahora, para versiones menores (es decir, el tercer decimal - 8.2.x) las actualizaciones se pueden hacer en su lugar. Sin embargo, cambiar las versiones en el primer o segundo decimal aún requiere un pg_dump / pg_restore.

Existe una herramienta gráfica llamada pgAdmin III desarrollada por separado. Se distribuye con las versiones de Linux y Windows de PostgreSQL. La conexión a un servidor de base de datos se puede establecer de forma remota para realizar tareas administrativas. Debido a que la herramienta está diseñada para administrar todos los aspectos del entorno de la base de datos, la conexión a la base de datos debe realizarse a través de una cuenta de súper usuario.
La herramienta pgAdmin III tiene las siguientes características atractivas estándar:

  • Diseño intuitivo
  • Estructura de árbol para crear y modificar objetos de base de datos 
  • Revisión y almacenamiento de SQL al modificar o crear objetos


24 noviembre 2017

Dimensionamiento de la base de datos.

Toca crear una base de datos para un nuevo proyecto y llegan las ¡Vaya preguntas!  como por ejemplo: ¿Cuánto disco necesito para mi nueva base de datos Oracle? Suponemos que nuestra instalación no tiene ASM instalado, de ser esto cierto, no necesitas seguir leyendo mas este artículo, bueno tendrás que leer algo si quieres tener en cuenta los demás componentes de tu instalación.

ASM es un administrador de volúmenes y un sistema de archivos para bases de datos Oracle que admite configuraciones de base de datos Oracle de una sola instancia y Oracle Real Application Clusters (Oracle RAC). ASM es la solución de administración de almacenamiento recomendada de Oracle que proporciona una alternativa a los administradores de volúmenes convencionales, sistemas de archivos y dispositivos sin formato.

Pasemos a mi receta:

  • 8-10 veces el volumen de datos en bruto para un sistema OLTP
  • 2-4 veces el volumen de datos en bruto para un Almacén de datos.
  • Cuanto más grande sea la base de datos, más cerca estará de los factores de multiplicación inferiores.

Aclaración: Por supuesto, esta es solo mi opinión, basada en alguna que otra experiencia. Si usas las cifras anteriores para un proyecto real y no obtienes el espacio total en disco que necesitas, no me eches las culpas ;P. Si lo haces y está bien, entonces por supuesto, ahora me debes una cerveza :)

Muchos de nosotros probablemente hemos tenido que calcular el tamaño esperado de una base de datos antes (bajo la atenta mirada del manager, en el momento de hacer el pliego de una oferta), pero la base de datos real es solo un componente de todo lo que necesita para ejecutar Oracle en tu sistema. También debe dimensionar los demás componentes:

  • Registros de rehacer archivados (redo logs), 
  • Área de preparación de copias de seguridad, 
  • Área de transferencia de datos. 
  • Archivos externos, si los hubiera. 
  • El sistema operativo. 
  • Espacio de intercambio (swap), 
  • Espacio para los ficheros log, trace, dump
  • Los "benditos" binarios de Oracle (que generalmente aumentan cada año) etc ...


En primer lugar, debe saber la cantidad de "datos sin procesar" que tiene. Con esto me refiero a lo que se convertirá en la tabla de datos. Ya a principios de este siglo, este podía ser el tamaño total de los archivos planos que usaba el sistema anterior, incluso el tamaño de los datos tal como estaba en las hojas de cálculo. Un archivo de exportación de Oracle del sistema también da una idea bastante buena del volumen de datos en bruto. Al carecer de todo esto, entonces necesitas un tamaño aproximado de tus datos brutos. Haz un cálculo esta manera:

  • "numero_de_filas * Suma_de_columnas" para tus 10 tablas más grandes. Y no tengas la tentación de sobreestimar, mis multiplicadores te permiten el relleno.

Digamos que ya has hecho esto y son 60GB de datos sin formato para un sistema OLTP. Deja que los chicos de almacenamiento sepan que probablemente querrás 500GB de espacio. Luego mentalmente lo dejarán como "sin consecuencias", ya que probablemente tengan muchos terabytes de almacenamiento. Luego he de aclarar una cosa: No estoy considerando la redundancia en absoluto, en el espacio que se proporciona. 

Si obtienes 5TB de datos brutos para un sistema DW, necesitará alrededor de 12-15 TB de almacenamiento en disco.

Si obtienes más de un Terabyte de datos en bruto para un sistema OLTP o de 10 a 20 Terabytes para un DW, cuando le das cifras a los chicos de almacenamiento , entonces es posible que palidezcan y digan algo como " ¡tienes que estar bromeando!". Esto es parte de por qué el factor de multiplicación para Data Warehouses y sistemas más grandes en general es menor, ya que se lo fuerza a tener más cuidado con el espacio que asigna y cómo lo usa.

La sobrecarga del espacio total en el disco sobre los datos Raw se reduce a medida que la base de datos se agranda por varias razones:

  • El tamaño de los binarios de Oracle y el sistema operativo no cambia a medida que la base de datos crece.
  • El tamaño del espacio de intercambio no aumenta en línea con la base de datos ya que, en términos generales, si aumenta el tamaño de la base de datos de 100 GB a 1 TB, no puede darse el lujo de aumentar la memoria del sistema de su servidor. Probablemente se duplique.
  • Las bases de datos muy grandes tienden a tener algo que las hace grandes, como imágenes o documentos incrustados, que no están indexados. Por lo tanto, la relación de segmentos de tabla a segmentos de índice aumenta.
  • Si tienes una base de datos muy grande, empieza a eliminar índices (a menudo aquellos que soportan restricciones) para ayudar al rendimiento de la carga y administración de datos, nuevamente mejorando la proporción de segmentos de tabla a segmentos de índice.
  • Las copias de seguridad se vuelven parciales o incrementales para reducir el tamaño y la duración de la copia de seguridad.
  • Como se mencionó anteriormente, el tamaño del sistema es tal que se debe tener más cuidado al limpiar las áreas de trabajo, reducir las áreas archivadas de registro de rehacer (esos archivos se comprimen bien) y otras áreas.
  • Si las cosas se vuelven extremas usted comienza a alterar PCTFREE y verificando el tamaño de las extensiones, aunque estos problemas de dimensionamiento desaparecen con Oracle ASM.

07 noviembre 2017

Oracle Database Security Assessment Tool


 

Con el creciente número de infracciones de datos cada día, salvaguardar la propiedad intelectual, la información sensible y los datos regulados se ha vuelto crítico. La herramienta de evaluación de seguridad de la base de datos Oracle (DBSAT) ayuda a identificar áreas de riesgo y recomienda cambios y controles que se deben implementar para mitigar esos riesgos. La herramienta de evaluación de seguridad de la base de datos Oracle recopila automáticamente los datos de configuración de una base de datos y luego informa los hallazgos.

Oracle ha proporcionado una nueva herramienta para evaluar la configuración de seguridad y asesor ar sobre ella. Es una utilidad liviana y lo más importante es que es gratis (¡Pero si es Oracle!, pobre Larry adiós a su nuevo barco  ). Siempre que tengamos el soporte activo de Oracle, deberíamos poder descargar la utilidad (¡no tan gratis!). 


Para los S.O. del lado oscuro (Microsoft)  no es tan útil

Para la primera versión, es muy prometedor, aunque los hallazgos para los sistemas operativos de Windows son limitados. Para Windows, no se ve las configuraciones del sistema operativo.

Necesitamos crear un usuario.

Primero, un usuario necesita ser creado con privilegios minimalistas. La documentación tiene el script de muestra que podría aprovisionarse.

create user dbsat_user identified by xxxxx;
//Si has instalado Database Vault y está habilitada, conéctate como DV_ACCTMGR para ejecutar este comando.
grant create session to dbsat_user;
grant select_catalog_role to dbsat_user;
grant select on sys.registry$history to dbsat_user;
grant select on sys.dba_users_with_defpwd to dbsat_user; // 11g and 12c
grant select on audsys.aud$unified to dbsat_user; // 12c only
grant audit_viewer to dbsat_user; // 12c
grant capture_admin to dbsat_user;// 12c covers sys.dba_priv_captures, sys.priv_capture$, sys.capture_run_log$
// Si has instalado Database Vault y está habilitada, conéctate como DV_OWNER para ejecutar este comando.
grant DV_SECANALYST to dbsat_user;

Recuperar información.

Necesitamos "recopilar" la configuración ejecutando los comandos a continuación. Como de costumbre, esto se ejecutará "como administrador". En el caso del proceso, le pedirá la contraseña. Asegúrese de que esté segura ya que el archivo tiene información muy importante.

D:\dbsat_output>set path=%path%;d:\dbsat

D:\dbsat_output>dbsat collect dbsat_user/xxxxxxxxxx dbsat_output20171024


Connecting to the target Oracle database...
SQL*Plus: Release 12.1.0.2.0 Production on Tue Oct 24 13:01:05 2017
Copyright (c) 1982, 2014, Oracle.  All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Advanced Analytics and Real Application Testing options
Database Security Assessment Tool version 1.0.2 (October 2016)
Setup complete.
SQL queries complete.
OS Commands Skipped.
BEGIN
*
ERROR at line 1:
ORA-20002: Complete without OS Commands.
ORA-06512: at line 4

Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Advanced Analytics and Real Application Testing options DBSAT Collector completed successfully.
Calling D:\app\oracle\product\12.1.0\dbhome_1\bin\zip.exe to encryptdbsat_output20171024.json...
Enter password:
Verify password:
adding: dbsat_output20171024.json (164 bytes security) (deflated 88%) zip completed successfully.

D:\dbsat_output>dir
Volume in drive D is New Volume
Volume Serial Number is 32D6-96CB

Directory of D:\dbsat_output
10/24/2017  01:01 PM  
10/24/2017  01:01 PM  
 ..
10/24/2017  01:01 PM            29,227 dbsat_output20171024.zip
               1 File(s)         29,227 bytes

               2 Dir(s)  223,632,429,056 bytes free

Mostrar los informes

Necesitamos generar un informe basado en el archivo, generado a partir del último paso. Al completar este paso, tendremos tres archivos (archivo de texto, excel, html) que enumeran las recomendaciones. Asegúrese de proteger este archivo, ya que la exposición al mundo exterior causaría riesgos de seguridad que nuestra base de datos tiene ahora.


Esta herramienta está destinada a ayudarnos a identificar posibles vulnerabilidades en nuestros sistemas, pero usted es el único responsable de su sistema y del efecto y los resultados de la ejecución de esta herramienta.


(Incluyendo, sin limitación, cualquier daño o pérdida de datos). Además, la salida generada por esta herramienta puede incluir información de configuración del sistema potencialmente sensible e información que podría ser utilizada por un atacante experto para penetrar en su sistema. Somos los  únicos responsables de garantizar que el resultado de esta herramienta, incluidos los informes generados, se maneje de acuerdo con las políticas de nuestra organización.



Archive:  dbsat_output20171024.zip
[dbsat_output20171024.zip] dbsat_output20171024.json password:
password incorrect--reenter:
password incorrect--reenter:
  inflating: dbsat_output20171024.json
Database Security Assessment Tool version 1.0.2 (October 2016)

DBSAT Reporter ran successfully.

Además, para generar el informe, necesitaría instalar Python en su máquina. Mi preferencia es usar el html ya que tiene enlaces a las secciones individuales. Los infores tienen esta apariencia:










02 noviembre 2017

As in the Phillip K. Dick essay: Do Oracle Dreams of Electronic Coins?

¿Sueña Oracle con monedas electrónicas?

Blockchain es una base de datos distribuida, formada por cadenas de bloques diseñadas para evitar su modificación una vez que un dato ha sido publicado usando un sellado de tiempo confiable y enlazando a un bloque anterior. Por esta razón es especialmente adecuada para almacenar de forma creciente datos ordenados en el tiempo y sin posibilidad de modificación ni revisión. Este enfoque tiene diferentes aspectos:
  • Almacenamiento de datos.- Se logra mediante la replicación de la información de la cadena de bloques
  • Transmisión de datos.- Se logra mediante peer-to-peer
  • Confirmación de datos.- Se logra mediante un proceso de consenso entre los nodos participantes. El tipo de algoritmo más utilizado es el de prueba de trabajo en el que hay un proceso abierto competitivo y transparente de validación de las nuevas entradas llamada minería.
Si quieres saber más de como poder implementar una base de datos de tipo Blockchain mira el artículo de Julián Dontcheff. En este articulo Julián habla de una base de datos  llamada BigChainDB, en  su web podrás obtener mas información.

Entre sus características destacan:

  • Soporte nativo de multi ajustes: Sin una moneda nativa en BigchainDB, se puede emitir cualquier activo, token o moneda.
  • Personalizable: Diseña tu propia red privada con activos personalizados, transacciones, permisos y transparencia.
  • Permisos: Establezca permisos a nivel de transacción para garantizar una separación clara de tareas y hacer cumplir el acceso selectivo.
  • Modelo de consenso de la federación: El control descentralizado a través de una federación de nodos de votación crea una red P2P super-par.
  • Open Source: Abierto de origen a la comunidad para que todos puedan usarlo y construir sus propias aplicaciones en la parte superior.
  • Público o privado: Implemente sus propias redes públicas o privadas para casos de uso específicos de la industria.
  • Consulta: Aproveche las capacidades eficientes de consulta de big data listas para usar.
Un blockchain es un sistema para mantener los libros contables distribuidos de una manera que permite a las organizaciones que tal vez no confíen plenamente unas en otras acordar las actualizaciones del libro mayor. En lugar de utilizar un tercero central o un proceso de reconciliación fuera de línea, Blockchain utiliza protocolos de igual a igual. Como un libro mayor distribuido, blockchain proporciona un registro casi en tiempo real e indeleble que se replica entre los participantes.

Blockchain tiene el potencial de transformar fundamentalmente la forma en que se realizan las transacciones comerciales globales. Actualmente, algunas transacciones de empresa a empresa se enrutan a través de terceros para garantizar su integridad y protección. Estos terceros pueden presentar retrasos y agregar costos. La tecnología de Blockchain permite a los participantes en una red de negocios de confianza realizar transacciones directamente, a la vez que garantiza la validez y el no rechazo de sus transacciones. Una vez que las transacciones propuestas se validan y se llega a un acuerdo sobre sus resultados, los participantes de la cadena de bloques las registran en bloques vinculados criptográficamente que no pueden ser repudiados.

Esta tecnología puede ayudar a abordar muchos desafíos de los límites de la empresa, tales como:

  • Permitir la confianza en transacciones B2B entre pares, al tiempo que se evitan los costos y riesgos de los intermediarios
  • Reducir el intercambio de información manual y propenso a errores y los procesos a través de los límites de la empresa
  • Evitar el costo y los retrasos de las conciliaciones fuera de línea
  • Disminuir el costo y el alto riesgo de fraude de las transacciones entre empresas
  • Mejorar la visibilidad de la información en tiempo real dentro de un ecosistema de comercio

Industrias con casos de uso de Blockchain emergentes


Bancos y finanzas

En mi experiencia sería ideal para procesar masivamente transacciones bancarias contra listas negras y blancas:
  • Watchlist
  • AML (Anti money laundry)
  • KYC (Know your customer)
  • Compensación y liquidación 
  • Financiamiento comercial
  • Pagos nacionales y transfronterizos, 
  • Originación de préstamos y automatización posterior a la financiación
Seguros
Procesamiento transaccional entre aseguradores e inversores, automatización de reclamos y sobre todo la reducción de reclamaciones fraudulentas.

Fabricación
Diseñe la protección IP, el seguimiento del historial de productos, la garantía del proceso de producción y la gestión de retiros.

Educación
Transcripción y transferencia de transcripciones de estudiantes, credencialización de educadores y pago de fondos estatales o subvenciones privadas.

Medios de comunicación
Pago directo a creadores de contenido, seguridad de activos digitales y conozca a su cliente.

Gobierno y Sector Público
Mejore la distribución del bienestar, mitigue la doble imposición, obtenga protección de la infraestructura y registro de propiedad.

Comercio minorista y Comercio electrónico
Aumente la transparencia de los historiales de los productos, la reducción de productos falsificados, la adjudicación de garantías y la modernización de la gestión de la cadena de suministro.

Asistencia sanitaria y farmacéutica
Seguimiento / rastreo serializado de medicamentos, presentación regulatoria digital, gestión de ensayos clínicos, y privacidad e intercambio de registros de salud del paciente.
Logística
Financiamiento de la cadena de suministro, seguimiento y rastreo del punto de origen, transferencia de la propiedad, supervisión del cumplimiento.

Utilidades
Gestión de activos, certificación de energías renovables y derechos de emisión, y medición y facturación del consumo de electricidad.

Servicio en la nube de Oracle Blockchain

Oracle Blockchain Cloud Service es una nueva oferta que forma parte de la cartera completa de plataforma como servicio (PaaS) de Oracle. Presentado por el proveedor de plataforma de procesamiento de transacciones distribuido más escalable del mundo, Oracle Blockchain Cloud Service es la plataforma en nube de contabilidad distribuida más completa.

El servicio en la nube de Oracle Blockchain proporciona capacidades de blockchain de nivel empresarial y es capaz de acelerar la innovación para ERP local y clientes SaaS y PaaS basados ​​en la nube.

Con el servicio en la nube de Oracle Blockchain, puede acelerar los ingresos, crear nuevas fuentes de ingresos y reducir los costos y los riesgos mediante la extensión segura de sus aplicaciones y procesos comerciales a la vez que agiliza las transacciones en el ecosistema de su socio.

29 octubre 2017

DBA WARS: "It's an older code sir, but it checks out."


En esta entrada del blog vamos a dar salida a varios còdigos SQL Y PL/SQL, antiguos pero todavía válidos.

Problemas con de PL / SQL Developer de Allround Automations

Al usar este IDE e su versión 11.X, una consulta interna toma muchos ciclos de CPU en el servidor de la base de datos (100% de una CPU).
¿Es este tu problema?  Por favor, compruebe si hay una consulta al lanzar el editor con el siguiente formato de consulta:
select s.synonym_name object_name, o.object_type
from sys.all_synonyms s, sys.all_objects o where s.owner in ('PUBLIC', user) and o.owner = s.table_owner and o.object_name = s.table_name and o.object_type in ('TABLE', 'VIEW', 'PACKAGE','TYPE', 'PROCEDURE', 'FUNCTION', 'SEQUENCE');
Se debe a la opción Describir contexto del asistente de código. Para deshabilitar:
Mira en: Tools> Preferences> Code Assistant y deshabilitar la opción "Describe Context".
O comprarles la versión 12.X que ya está resuelto.


Depurar papelera de reciclaje anterior a ...


Tiene la papelera de reciclaje de la base de datos llena o su tamaño es considerablemente grande, pero no quiere hacer un "Borrado" completo?
¿Quieres eliminar solo más de x días (como más de 90 días)?

Una buena forma de hacerlo es:

# 90 días
Select 'purge table '||owner||'."'||OBJECT_NAME||'";' from dba_recyclebin where type='TABLE' and to_date(droptime,'YYYY-MM-DD:HH24:MI:SS')<sysdate-90;
# 90 minutos
Select 'purge table '||owner||'."'||OBJECT_NAME||'";' from dba_recyclebin where type='TABLE' and to_date(droptime,'YYYY-MM-DD:HH24:MI:SS')<sysdate-(90/(24*60));

Mirar esta nota de Metalink (Doc ID 1596147.1) por si teneis alguna qe otra duda.


Purga mejorada de la papelera de reciclaje Oracle

Desde que en la versión 10g de la base de datos , se introdujo el 'reciclaje' para segmentos. Si se establece el parámetro recyelebin = on, y se descarta una tabla, en realidad no se descarta; se renombra a un nombre generado por el sistema. Esto realmente puede ayudar en situaciones donde una tabla se cae accidentalmente, ya que se puede recuperar fácilmente. Sin embargo, sin monitorearlo, puede terminar causando problemas de muchos tipos, porque puede terminar hinchando el número total de segmentos en la base de datos a muchas veces más de lo que era antes.
Oracle solo tiene 4 métodos publicados para descartar lotes de objetos reciclados; siendo:

  • El comando SQL> PURGE RECYCLE BIN emitido por un propietario de segmento, que purga todos los segmentos reciclados para ese usuario.,
  • El comando SQL> PURGE DBA_RECYCLEBIN, emitido por un DBA, que purga todos los objetos reciclados en la base de dato.
  • El comando SQL> PURGE TABLESPACE <tablespace_name> USER <schema_name>; que purga objetos propiedad del propietario dado.
  • El comando SQL> PURGE TABLESPACE uwdata USUARIO uwclass; que purga los objetos propiedad del propietario y el espacio de tabla dados.
No hay comandos incorporados que permitan que solo los segmentos de papeleras de reciclaje se realicen antes de cierto tiempo, o que solo reciclen objetos de la papelera con más de un cierto número de versiones recicladas de la misma tabla. Es relativamente fácil crear un procedimiento almacenado para manejar estos casos; esto explica cómo se puede hacer eso.

En PL/SQL, tenemos:


create or replace procedure purge_user_recyclebin(
  p_purge_before_date   in date default=NULL,
  p_purge_keep_versions in number default=NULL,
  p_test_only           in varchar2 := 'Y'
)
is
  cursor c_purge_before_date is
    select object_name
    from  user_recyclebin
    where droptime > p_purge_before_time
    and   can_purge = 'YES'
    order by droptime;

  cursor c_purge_before_version is
     select * from 
       (select original_name,
               type,
               object_name,
               droptime,
               rank() over (partition by original_name,type order by droptime desc) as obj_rank
         from   user_recyclebin
         where  can_purge = 'YES')
       where obj_rank > p_purge_keep_versions
       order by droptime;

  v_sql varchar2(1024);

  exception e_bad_parameters;
  exception e_38302;
  pragma exception_init(e_38302,-38302);  

  procedure runsql(p_object_name in varchar2) 
  is
  begin
    v_sql := 'purge '||p_object_name;
    if (p_test_only = 'N') then
      begin
        execute immediate v_sql;
      exception
         when e_38302 then 
           dbms_output.put_line('Cuidado, el objeto '||p_object_name||' no existe ignóralo');
         when others then
           dbms_output.put_line('Error borrando '||p_object_name);
           dbms_output.put_line(dbms_utility.format_error_backtrace);
      end;
    else
      dbms_output.put_line(v_sql);
    end if;
  end;

begin

  if p_purge_before_date is not null and
     p_purge_keep_versions is null then
     for r in c_purge_before_date loop
       runsql(r.object_name);
     end loop;
  elsif p_purge_before_date is null and
     p_purge_keep_versions is not null then
     for r in c_purge_before_version loop
       runsql(r.object_name);
     end loop;
  else
     raise e_bad_parameters;
  end if;

end purge_user_recylebin;
/

Cómo usarlo

Si desea probar para ver qué haría, sin purgar nada, simplemente pase el parámetro 'p_test' al valor 'Y', y establezca la salida del servidor en el tamaño 1000000. Esto mostrará una lista de los comandos que se ejecutarían. pero en realidad no los ejecuta.

Purgar todos los objetos de la papelera de reciclaje antes de una fecha determinada
Esto purgará todos los objetos de reciclaje reciclados antes del 1 de noviembre, a medianoche.

execute purge_user_recylebin(to_date('20150801 00:00:00','YYYYMMDD HH24:MI:SS'),NULL,'Y');

Esto, cuando se ejecuta como propietario de un esquema, ayuda a mantener la cantidad de objetos reciclados a un nivel razonable, a la vez que se conserva, la capacidad de recuperar segmentos perdidos más recientemente.