¿Qué es Oracle 10g?

Es la nueva suite de productos Oracle basados en Grid Computing. El Grid es una nueva arquitectura que atiende a todas las necesidades de la organización y donde los recursos para el procesamiento de datos están disponibles para los usuarios cuando los necesiten.

Los 3 elementos sobre los que se articula Oracle son:

Oracle Database

Es el motor de la base de datos.

Oracle Application Server

Servidores que permiten a las aplicaciones web interactuar con la base de datos.

Enterprise Manager

Proporciona un marco adecuado para llevar a cabo tareas de administrador: usuario, clave y rol administrativo.

Componentes de la Base de Datos

1. Archivos de Datos

Contiene toda la información de la base de datos. Antes de introducir los datos hay que crear un tablespace, los predefinidos son:

  • SYSTEM: Información que Oracle necesita para gestionarse a sí misma.
  • USERS: Información personal de usuarios, para pruebas con tablas temporales.
  • TEMP: Se guardan las tablas temporales.
  • UNDOTBS1: Información de deshacer, que sirve para recuperar datos cuando no se completa la transacción.

2. Registros Redo Log

Archivos que registran los cambios que se hacen en la base de datos en la caché. Se utiliza para recuperar datos que no se han escrito, suele haber varios archivos. Cada archivo Redo Log se le asigna un número de secuencia que se guarda en el archivo de control y en cabeceras.

3. Archivos de Control

En estos se guardan todas las modificaciones importantes que se hagan en la estructura de la base de datos, mantiene la integridad de la base de datos y es recomendable tener varios por si acaso.

¿Qué es una Instancia Oracle?

Una instancia es un conjunto de estructuras de memoria (SGA) y procesos en segundo plano que se utilizan para gestionar la base de datos.

Cada vez que se abre la base de datos Oracle realiza los siguientes pasos: inicio de una instancia, montaje de la base de datos y apertura de la misma. Para cerrar la base de datos sigue los siguientes: cerrar la base de datos, desmontarla.

Otras Estructuras de Almacenamiento

Todos los datos de almacenamiento se almacenan a nivel lógico en tablespaces.

Segmentos

Espacio que ocupan los objetos de una base de datos, al crear un objeto se asigna un segmento contenido en un tablespace. Podemos decir que es un conjunto de extensiones de bloques de Oracle. Cuando se borra un segmento el espacio vuelve a estar disponible en el tablespace.

Parámetros de almacenamiento:

  • INITIAL: Tamaño extensión final.
  • NEXT: Tamaño de la siguiente extensión a asignar.
  • MINEXTENTS: Número de extensiones asignadas en momento de la creación del segmento.
  • MAXEXTENTS: Número máximo de extensiones.
  • PCTINCREASE: Porcentaje en el que crecerá la siguiente extensión antes de ser asignada.
  • PCTFREE: Porcentaje de espacio libre para actualizaciones de filas.
  • PCTUSED: Porcentaje del primer bloque que deja escribir Oracle.
  • TABLESPACE: Nombre del tablespace donde se creará el segmento.

Para ver estas estructuras de almacenamiento se utiliza:

  • DBA_SEGMENTS: Información de los segmentos, nombre, propietario, tipo…
  • DBA_EXTENTS: Información acerca de las extensiones.

Tipos de Segmentos

  • De datos o tablas: Se crean con CREATE TABLE, la tabla es el método más común. (CREATE TABLE)
  • De índices: CREATE INDEX, guarda todos los registros de índices. (CREATE INDEX)
  • De rollback: Permiten la restauración de las transacciones no validadas.
  • Temporales: Se utiliza cuando hay que realizar una ordenación que no cabe en memoria.

Etapas de Inicio y Cierre de una Base de Datos

  • Inicio de la instancia: Una instancia se inicia sin montar la base de datos solo en la creación.
  • Montaje de la base de datos: Se encarga de asociarla con una instancia, ubicación, etc.
  • Apertura de la base de datos: Permite que los usuarios se conecten y realicen operaciones.
  • Cierre de la base de datos: Oracle guarda los cambios en los archivos de datos y Redo Log, los de control permanecen abiertos.
  • Desmontaje de la base de datos: Ahora cierra los archivos de control.
  • Cierre de la instancia: Se cierra el archivo Alert y los archivos de rastreo, se libera la SGA y se terminan los procesos en segundo plano.

Comando STARTUP: -FORCE aborta la instancia, -RESTRICT solo usuarios con privilegio, -RECOVER recuperación del medio físico.

Comando ALTER DATABASE: -READ WRITE abre la base en modo lectura/escritura, -READONLY solo permite lectura.

Vistas del Diccionario

Estas vistas resumen y muestran información almacenada en las tablas base, existen varias categorías de diccionario:

  • Con el prefijo DBA: Vista global de la base de datos, solo deberían consultarla los administradores.
  • Con el prefijo ALL: Perspectiva global del usuario, muestra todo lo que tiene acceso el usuario.
  • Con el prefijo USER: Solo los objetos que posee el usuario.

Gestión de Seguridad

Seguridad del sistema: Mecanismos que controlan el acceso y uso de la base de datos a nivel de sistema. Ej: comprobar quién puede acceder a la base de datos.

Seguridad de los datos: Mecanismos que controlan el acceso y uso a nivel de objetos. Ej: comprobar si el usuario iniciado puede utilizar un objeto.

Usuarios

Un usuario es un nombre definido en la base de datos que se puede conectar a ella. Estos tienen un esquema con su mismo nombre en el que están todas sus tablas, vistas, secuencias, etc.

Creación de usuarios: Al instalar la base de datos Oracle crea automáticamente SYS y SYSTEM.

SQL-> CREATE USER (NOMBRE_USUARIO) IDENTIFIED BY (CLAVE_ACCESO) QUOTA (CUOTA) ON USER;

Modificación de usuarios: Para cambiar cualquier opción de un usuario.

SQL-> ALTER USER (NOMBRE_USUARIO) IDENTIFIED BY (…) QUOTA (…) ON (…);

Borrado de usuarios: Para borrar los usuarios. Los que tengan objetos es necesario CASCADE.

SQL-> DROP USER (USUARIO) *[CASCADE]*; -- Para borrar todos los objetos

Vistas de usuarios:

  • USER_USERS: Información sobre el usuario actual.
  • ALL_USERS: Información sobre todos los usuarios.

Privilegios

SQL-> GRANT (NOMBRE_PRIVI) ON (OBJETO) TO (USUARIO) *[WITH GRANT OPTION]*; -- Para poder dar el privilegio

SQL-> REVOKE (NOMBRE_PRIVI) ON (OBJETO) FROM (USUARIO);

Vistas con información de los privilegios:

  • SESSION_PRIVS: Privilegios del usuario activo.
  • USER_SYS_PRIVS: Privilegios del sistema asignados al usuario.
  • DBA_SYS_PRIVS: Privilegios del sistema asignados a los usuarios o a los roles.
  • USER_TAB_PRIVS: Concesiones sobre objetos que son propiedad del usuario, concedidos o recibidos.
  • USER_TAB_PRIVS_MADE: Concesiones sobre objetos que son propiedad del usuario.
  • USER_TAB_PRIVS_RECD: Concesiones sobre objetos que recibe el usuario.

Roles

Un rol es un conjunto de privilegios que se agrupan por un nombre para facilitar su asignación a usuarios u otros roles. Primero debemos crear el rol con la orden CREATE ROLE y después darle los privilegios con GRANT.

Creación de roles:

SQL-> CREATE ROLE (NOMBRE_ROL);

SQL-> GRANT (PRIVILEGIO) ON (TABLA) TO (NOMBRE_ROL);

Borrado de roles:

SQL-> DROP ROLE (NOMBRE_ROL);

Para asignar el rol al usuario utilizaremos GRANT.

SQL-> GRANT (NOMBRE_ROL) TO (USUARIO);

Límites en privilegios sobre roles: El rol solo da los privilegios que tiene asignados.

Supresión de privilegios a los roles: SQL-> REVOKE (PRIVI) ON (TABL) FROM (NOMBR_ROL);

Establecer un rol por defecto: SQL-> ALTER USER (NOMBR_USU) DEFAULT ROLE (NOMBR_ROL);

Vistas de los roles (información sobre roles en diccionario de datos):

  • ROLE_SYS_PRIVS: Privilegios del sistema asignados a roles.
  • ROLE_TAB_PRIVS: Privilegios sobre las tablas aplicados a roles.
  • ROLE_ROLE_PRIVS: Roles asignados a otros roles.
  • SESSION_ROLES: Roles activos para el usuario.
  • USER_ROLE_PRIVS: Roles asignados al usuario.