lunes, 26 de octubre de 2009

LOS PERFILES EN ORACLE

Los perfiles se utilizan para limitar la cantidad de recursos del sistema y de la BD disponibles para un usuario. Si no se definen perfiles para un usuario se utiliza el perfil por defecto, que especifica recursos ilimitados.

Los recursos que pueden ser limitados via perfil son los siguientes:


Los perfiles se pueden crear via el comando CREATE PROFILE, y se pueden modificar con la sentencia ALTER PROFILE.

En general, el perfil por defecto debe ser adecuado para los usuarios normales; los usuarios con requerimientos especiales deberían tener perfiles especiales.

ROLES EN ORACLE

los Roles son simplemente un conjunto de privilegios que se pueden otorgar a un usuario o a otro Rol. De esa forma se simplifica el trabajo del DBA en esta tarea.

Por default cuando creamos un usuario desde el Enterprise Manager se le asigna el permiso de connect, lo que permite al usuario conectarse a la BD y crear sus propios objetos en su propio esquema. De otra manera, debemos asignarlos en forma manual.

Para crear un Rol y asignarlo a un usuario se hace de la siguiente manera:

SQL> CREATE ROLE appl_dba;

Opcionalmente, se puede asignar una clave al Rol:

SQL> SET ROLE appl_dba IDENTIFIED BY app_pwd;

Para asignar este Rol a un usuario:

SQL> GRANT appl_dba TO jperez;

Otro uso común de los roles es asignarles privilegios a nivel de Objetos, por ejemplo en una Tabla de Facturas en donde sólo queremos que se puedan hacer Querys e Inserts:

SQL> CREATE ROLE consulta;

SQL> GRANT SELECT,INSERT on analista.factura TO consulta;

Y finalmente asignamos ese rol con este “perfil” a distintos usuarios finales:

SQL> GRANT consulta TO ahernandez;

Nota: Existen algunos roles predefinidos, tales como:
CONNECT, CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE SYNONYM, CREATE SEQUENCE, CREATE DATABASE LINK, CREATE CLUSTER,
ALTER SESSION, RESOURCE, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TRIGGER, CREATE TYPE, CREATE CLUSTER, CREATE INDEXTYPE, CREATE OPERATOR SCHEDULER, CREATE ANY JOB, CREATE JOB, EXECUTE ANY CLASS, EXECUTE ANY PROGRAM,
MANAGE SCHEDULER, etc.
DBA: Tiene la mayoría de los privilegios, no es recomendable asignarlo a usuarios que no son administradores.
SELECT_CATALOG_ROLE: No tiene privilegios de sistema, pero tiene cerca de 1600 privilegios de objeto.

Para consultar los roles definidos y los privilegios otorgados a través de ellos, utilize las vistas:

SQL> select * from DBA_ROLES;
SQL> select * from DBA_ROLE_PRIVS order by GRANTEE;

PRIVILEGIOS EN ORACLE

Los roles de sistema se utilizan para distribuir la disponibilidad de los comandos del sistema utilizados para gestionar la BD. Los privilegios más comunes están en la siguiente tabla. En ella se distinguen entre privilegios de manejo de objetos y de gestión de la BD. La palabra clave ANY significa que ese usuario tiene el privilegio para todos los esquemas en la BD. Hay que hacer notar que ANY y PUBLIC no son sinónimos.



Los privilegios se pueden agrupar en roles, para así satisfacer a distintos tipos de usuarios. En la instalación se crea un rol llamado OSOPER que sirve para los operarios de la máquina donde está la BD y permite realizar copias de seguridad en frio y en caliente. Los privilegios de OSOPER son STARTUP, SHUTDOWN, ALTER DATABASE OPEN/MOUNT, ALTER DATABASE BACKUP, ARCHIVE LOG, RECOVER y RESTRICTED SESSION.



Se pueden crear nuevos roles. Por ejemplo, podemos crear un rol llamado creadorCuentas que sólo pueda crear usuarios y no pueda realizar ninguna otra operación de DBA. Las sentencias que permiten hacer esto son las siguientes:

SQL> create role creadorCuentas;
Statement processed.
SQL> grant create session, create user to creadorCuentas;
Statement processed.



Oracle incluye otros tres roles de sistema: CONNECT, RESOURCE y DBA, cuyos privilegios son:
Rol Privilegios


lunes, 14 de septiembre de 2009

¿QUE ES UN INDICE BITMAP EN ORACLE?

Los indices B-Tree almacenan rowids en las hojas del arbol. Estos indices pueden llegar a utilizar grandes cantidades de espacio de almacenamiento. A diferencia de los indices B-Tree, los indices de tipo Bitmap utilizan una fraccion de espacio mucho menor representando los rowids como valores binarios (on/off).Los indices Bitmap son aconsejables en situaciones en que los diferentes valores que puede tomar la columna son relativamente pocos. Ejemplos: sexo, estado civil, etc. Cuantos menos valores posibles, mejor. A medida que crece la cantidad de valores posibles, aumentara el tamaño del indice.

¿QUE ES UN INDICE B-TREE EN ORACLE?

El indice B-Tree es el tipo de indice mas comun en una base de datos Oracle. Es el indice default, es decir que si uno crea un indice sin especificar el tipo, Oracle lo creara de tipo B-Tree.La estructura de un indice B-Tree tiene la forma de un arbol invertido. Las estructuras superiores se llaman ramas y la estructura inferior constituyen las hojas. Generalmente los indices B-Tree tienen uno o mas niveles de ramas. Cada rama de un nivel contiene informacion sobre otras ramas del nivel inmediatamente inferior. En el grafico podemos apreciar que la rama superior esta etiquetada con el nombre “Ingrid”. En el siguiente nivel las ramas estan divididas en las alfabeticamente “menores” a la izquierda y las “mayores” a la derecha. Por cada entrada en la tabla, el indice B-Tree registra una entrada en el indice. Cuando se ejecuta una sentencia, Oracle va recorriendo el indice desde la parte superior hasta encontrar el valor buscado. Una vez encontrado el valor buscado de acuerdo con lo requerido por la sentencia SQL, Oracle se dirigira a los datos de la tabla utilizando el rowid especificado en las hojas.Los indices no solo constituyen un metodo para acelerar la busqueda de datos. Tambien pueden ser utilizados para forzar la unicidad de las columnas. Cuando se crea una clave primaria sobre una tabla, Oracle crea un indice unico en forma automatica para garantizar la unicidad de los valores.

¿QUE ES UN INDEX?

Los indices se usan para mejorar el rendimiento de las operaciones sobre una tabla.

En general mejoran el rendimiento las SELECT y empeoran (minimamente) el rendimiento de los INSERT y los DELETE.

Una vez creados no es necesario nada más, oracle los usa cuando es posible.

En oracle existen tres tipos de indices:

  1. Table Index
  2. Bitmap Join Index
  3. Cluster Index
  • create index es una de las pocas sentencias que pueden usar nologging option.
  • create index requiere un segmento temporal si no hay espacio en memoria suficiente.
  • Crear indices basados en funciones require que query_rewrite_enabled este a true y query_rewrite_integrity este a trusted.

¿QUE ES Y PARA QUE SIRVE UN TABLESPACE DEL TIPO UNDO (UNDO TABLESPACE)?

TAblespace de Undo

  • Podemos tener varios tablespaces de “undo”, pero sólo uno de ellos estará activo.
  • No se pueden crear objetos sobre un tablespace de “undo”.
  • Al cambiar de tablespace “undo” activo (con undo_tablespace), los segmentos de rollback que contiene el nuevo tablespace pasan a estar online, mientras que los del tablespace anterior se ponen offline.

Se crean de dos formas:

  • Mediante create database.
  • Mediante create tablespace:
    Create undo tablespace undotbs02 datafile ‘c:\oraclexe\oradata\ex\undo02.dbf’ size 25M reuse autoextend on;

Para eliminarlo:

  • drop tablespace undotbs02;

Parámetros de inicialización de los espacios de tablas de deshacer:

  • Undo_Management (valores MANUAL/AUTO). Si auto se gestionará de forma automática el espacio de deshacer. No es dinámico, cuando se cambia de estado se debe rearrancar la instancia.
  • Undo_tablespace (MANUAL/AUTO). En entornos RAC (Real Application Clusters)