100%(1)100% нашли этот документ полезным (1 голос)
272 просмотров24 страницы
Este documento describe conceptos clave relacionados con usuarios y permisos en Oracle, incluyendo la creación de usuarios y asignación de privilegios, tablespaces predeterminados y temporales, perfiles de usuario, cuotas de espacio, roles y privilegios de sistema u objetos. Explica cómo los administradores pueden gestionar el acceso a la base de datos mediante la creación y modificación de cuentas de usuario, la asignación de permisos y roles, y la configuración de límites de recursos.
Este documento describe conceptos clave relacionados con usuarios y permisos en Oracle, incluyendo la creación de usuarios y asignación de privilegios, tablespaces predeterminados y temporales, perfiles de usuario, cuotas de espacio, roles y privilegios de sistema u objetos. Explica cómo los administradores pueden gestionar el acceso a la base de datos mediante la creación y modificación de cuentas de usuario, la asignación de permisos y roles, y la configuración de límites de recursos.
Este documento describe conceptos clave relacionados con usuarios y permisos en Oracle, incluyendo la creación de usuarios y asignación de privilegios, tablespaces predeterminados y temporales, perfiles de usuario, cuotas de espacio, roles y privilegios de sistema u objetos. Explica cómo los administradores pueden gestionar el acceso a la base de datos mediante la creación y modificación de cuentas de usuario, la asignación de permisos y roles, y la configuración de límites de recursos.
El siguiente es un resumen de algunas consideraciones al momento de crear un usuario o cuenta en Oracle, y los privilegios y roles que le podemos asignar. El nombre de usuario no debe superar 30 caracteres, no debe tener caracteres especiales y debe iniciar con una letra. Un mtodo de autentificacin. El mas comn es una clave o password, pero Oracle 10g soporta otros mtodos (como biometric, certificado y autentificacin por medio de token). Un Tablespace default, el cual es donde el usuario va a poder crear sus objetos por defecto, sin embargo, esto no significa que pueda crear objetos, o que tenga una cuota de espacio. Estos permisos se asignan de forma separada, salvo si utiliza el privilegio RESOURCE el que asigna una quota unlimited, incluso en el Tablespace SYSTEM! Sin embargo si esto ocurre, ud. puede posteriormente mover los objetos creados en el SYSTEM a otro Tablespace. Un Tablespace temporal, donde el usuario crea sus objetos temporales y hace los sort u ordenamientos. Un perfil o profile de usuario, que son las restricciones que puede tener su cuenta (opcional).
Por ejemplo, conectado como el usuario SYS, creamos un usuario y su clave asi:
SQL> CREATE USER ahernandez IDENTIFIED BY ahz DEFAULT TABLESPACE users;
Si no se indica un Tablespace por defecto, el usuario toma el que est definido en la BD (generalmente el SYSTEM). Para modificar el Tablespace default de un usuario se hace de la siguiente manera:
SQL> ALTER USER jperez DEFAULT TABLESPACE datos;
Tambin podemos asignar a los usuarios un Tablespace temporal donde se almacenan operaciones de ordenamiento. Estas incluyen las clusulas ORDER BY, GROUP BY, SELECT DISTINCT, MERGE JOIN, o CREATE INDEX (tambin es utilizado cuando se crean Tablas temporales).
SQL> CREATE USER jperez IDENTIFIED BY jpz DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
Adicionalmente, a cada usuario se puede asignar a un profile o perfil, que tiene dos propsitos principalmente:
Limita el uso de recursos, lo que es recomendable, por ejemplo en ambientes de Desarrollo. Garantiza y refuerza reglas de Seguridad a nivel de cuentas.
Ejemplos, cuando se crea el usuario o asignar un perfil existente:
SQL> CREATE USER jperez IDENTIFIED BY jpz DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp PROFILE resource_profile;
SQL> ALTER USER jperez PROFILE perfil_desa;
2. Modificar cuentas de Usuarios
Para modificar un usuario creado, por ejemplo cambiar su clave, tenemos la sintxis:
SQL> ALTER USER NOMBRE_USUARIO IDENTIFIED BY CLAVE_ACCESO [DEFAULT TABLESPACE ESPACIO_TABLA] [TEMPORARY TABLESPACE ESPACIO_TABLA] [QUOTA {ENTERO {K | M } | UNLIMITED } ON ESPACIO_TABLA [PROFILE PERFIL];
3. Privilegios de Sistema y de Objetos
En Oracle existen dos tipos de privilegios de usuario.
3.1 System: Que permite al usuario hacer ciertas tareas sobre la BD, como por ejemplo crear un Tablespace. Estos permisos son otorgados por el administrador o por alguien que haya recibido el permiso para administrar ese tipo de privilegio. Existen como 100 tipos distintos de privilegios de este tipo.
En general los permisos de sistema, permiten ejecutar comandos del tipo DDL (Data definition Language), como CREATE, ALTER y DROP o del tipo DML (Data Manipulation Language). Oracle 10g tiene mas de 170 privilegios de sistema los cuales pueden ser vistos consultando la vista: SYSTEM_PRIVILEGE_MAP
Entre todos los privilegios de sistema que existen, hay dos que son los importantes: SYSDBA y SYSOPER. Estos son dados a otros usuarios que sern administradores de base de datos.
Para otorgar varios permisos a la vez, se hace de la siguiente manera:
SQL> GRANT CREATE USER, ALTER USER, DROP USER TO ahernandez;
3.2 Object: Este tipo de permiso le permite al usuario realizar ciertas acciones en objetos de la BD, como una Tabla, Vista, un Procedure o Funcin, etc. Si a un usuario no se le dan estos permisos slo puede acceder a sus propios objetos (vase USER_OBJECTS). Este tipo de permisos los da el owner o dueo del objeto, el administrador o alguien que haya recibido este permiso explcitamente (con Grant Option).
Por ejemplo, para otorgar permisos a una tabla Ventas para un usuario particular:
SQL> GRANT SELECT,INSERT,UPDATE, ON analista.venta TO jperez;
Adicionalmente, podemos restringir los DML a una columna de la tabla mencionada. Si quisieramos que este usuario pueda dar permisos sobre la tabla Factura a otros usuarios, utilizamos la clusula WITH GRANT OPTION. Ejemplo:
SQL> GRANT SELECT,INSERT,UPDATE,DELETE ON venta TO mgarcia WITH GRANT OPTION;
4. Asignar cuotas a Usuarios
Por defecto ningun usuario tiene cuota en los Tablespaces y se tienen tres opciones para poder proveer a un usuario de una quota:
4.1 Sin limite, que permite al usuario usar todo el espacio disponible de un Tablespace.
4.2 Por medio de un valor, que puede ser en kilobytes o megabytes que el usuario puede usar. Este valor puede ser mayor o nenor que el tamao del Tablespace asignado a l.
4.3 Por medio del privilegio UNLIMITED TABLESPACE, se tiene prioridad sobre cualquier cuota dada en un Tablespace por lo que tienen disponibilidad de todo el espacio incluyendo en SYSTEM y SYSAUX.
No se recomienda dar cuotas a los usuarios en los Tablespaces SYSTEM y SYSAUX, pues tipicamente slo los usuarios SYS y SYSTEM pueden crear objetos en stos. Tampoco dar cuotas en los Tablespaces Temporal o del tipo Undo.
5. Roles
Finalmente los Roles, que 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 comn de los roles es asignarles privilegios a nivel de Objetos, por ejemplo en una Tabla de Facturas en donde slo 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 mayora 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 travs de ellos, utilize las vistas:
SQL> select * from DBA_ROLES; SQL> select * from DBA_ROLE_PRIVS order by GRANTEE; 1 comentarios Enviar por correo electrnicoEscribe un blogCompartir con TwitterCompartir con FacebookCompartir en Pinterest Conceptos de Almacenamiento en Oracle Conceptos de Almacenamiento en Oracle
Concepto de Tablespace (espacio de tablas) Una base de datos se divide en unidades lgicas denominadas TABLESPACES. Un tablespace no es un fichero fsico en el disco, simplemente es el nombre que tiene un conjunto de propiedades de almacenamiento que se aplican a los objetos (tablas, secuencias) que se van a crear en la base de datos bajo el tablespace indicado (tablas, secuencias).
Un objeto en base de datos debe estar almacenado obligatoriamente dentro de un tablespace.
Las propiedades que se asocian a un tablespace son: Localizacin de los ficheros de datos. Especificacin de mximas cuotas de consumo de disco. Control de la disponibilidad de los datos (en lnea o fuera de lnea). Backup de datos.
Cuando un objeto se crea dentro de un cierto tablespace, este objeto adquiere todas las propiedades antes descritas del tablespace utilizado.
En este esquema podemos ver que, por ejemplo, la tabla ARTICULO se almacena dentro del tablespace A, y que por lo tanto tendr todas las propiedades del tablespace A que pueden ser: Sus ficheros de datos estn en $ORACLE_HOME/datos/datos_tablespace_A Los objetos no pueden ocupar ms de 10Mb de espacio de base de datos. En cualquier momento se puede poner fuera de lnea todos los objeto de un cierto tablespace. -Se pueden hacer copiar de seguridad slo de ciertos tablespaces. Si nos fijamos, se puede apreciar que es posible tener una tabla en un tablespace, y los ndices de esa tabla en otro. Esto es debido a que los ndices no son ms que objetos independientes dentro de la base de datos, como lo son las tablas. Y al ser objetos independientes, pueden ir en tablespaces independientes. El tablespace SYSTEM es uno de los que se crear por defecto en todas las bases de datos Oracle. En l se almacenan todos los datos de sistema, el catlogo y todo el cdigo fuente y compilado de procedimientos PL/SQL. Tambin es posible utilizar el mismo tablespace para guardar datos de usuario. En el esquema tambin vemos que hay un tablespace Temporal (en gris oscuro). Este representa las propiedades que tendrn los objetos que la base de datos cree temporalmente para sus clculos internos (normalmente para ordenaciones y agrupaciones). Su creacin difiere en una de sus clusulas de creacin. El tablespace RO (en gris claro) difiere de los dems en que es de solo lectura (Read Only), y que por lo tanto todos los objetos en l contenidos pueden recibir rdenes de consulta de datos, pero no de modificacin de datos. Estos puede residir en soportes de slo lectura, como pueden ser CDROMs, DVDs, etc. Cuando se crea un tablespace, ste se crea de lectura/escritura. Despus se puede modificar para que sea de solo lectura. Un tablespace puede estar en lnea o fuera de ella (Online o OffLine), esto es que todos los objetos contenidos en l estn a disposicin de los usuarios o estn inhabilitados para restringir su uso. Cualquier objeto almacenado dentro de un tablespace no podr ser accedido si este est fuera de lnea.
Concepto de Datafile (fichero de datos)
Un datafile es la representacin fsica de un tablespace. Son los "ficheros de datos" donde se almacena la informacin fsicamente. Un datafile puede tener cualquier nombre y extensin (siempre dentro de las limitaciones del sistema operativo), y puede estar localizado en cualquier directorio del disco duro, aunque su localizacin tpica suele ser $ORACLE_HOME/Database. Un datafile tiene un tamao predefinido en su creacin (por ejemplo 100Mb) y este puede ser alterado en cualquier momento. Cuando creemos un datafile, este ocupar tanto espacio en disco como hayamos indicado en su creacin, aunque internamente est vaco. Oracle hace esto para reservar espacio continuo en disco y evitar as la fragmentacin. Conforme se vayan creando objetos en ese tablespace, se ir ocupando el espacio que cre inicialmente.
Un datafile est asociado a un solo tablespace y, a su vez, un tablespace est asociado a uno o varios datafiles. Es decir, la relacin lgica entre tablespaces y datafiles es de 1-N, maestro-detalle.
En el esquema podemos ver como el Tablespace A est compuesto (fsicamente) por tres datafiles (DATOS_1.ORA, DATOS_2.ORA y DATOS_3.ORA). Estos tres datafiles son los ficheros fsicos que soportan los objetos contenidos dentro del tablespace A. Aunque siempre se dice que los objetos estn dentro del tablespace, en realidad las tablas estn dentro del datafile, pero tienen la propiedades asociadas al tablespace.
Cada uno de los datafiles utilizados est ocupando su tamao en disco (50 Mb los dos primeros y 25 Mb el ltimo) aunque en realidad slo contengan dos objetos y estos objetos no llenen el espacio que est asignado para los datafiles.
Los datafiles tienen una propiedad llamada AUTOEXTEND, que se si est activa, se encarga de que el datafile crezca automticamente (segn un tamao indicado) cada vez que se necesite espacio y no exista. Al igual que los tablespaces, los datafiles tambin puede estar en lnea o fuera de ella.
Concepto de Segment (segmento, trozo, seccin)
Un segment es aquel espacio reservado por la base de datos, dentro de un datafile, para ser utilizado por un solo objeto. As una tabla (o cualquier otro objeto) est dentro de su segmento, y nunca podr salir de l, ya que si la tabla crece, el segmento tambin crece con ella. Fsicamente, todo objeto en base de datos no es ms que un segmento (segmento, trozo, seccin) dentro de un datafile. Se puede decir que, un segmento es a un objeto de base de datos, lo que un datafile a un tablespace: el segmento es la representacin fsica del objeto en base de datos (el objeto no es ms que una definicin lgica).
Podemos ver cmo el espacio que realmente se ocupa dentro del datafile es el segment y que cada segmento pertenece a un objeto.
Existen cuatro tipos de segmentos (principalmente): Segmentos de TABLE: aquellos que contienen tablas Segmentos de INDEX: aquellos que contienen ndices Segmentos de ROLLBACK: aquellos se usan para almacenar informacin de la transaccin activa. Segmentos TEMPORALES: aquellos que se usan para realizar operaciones temporales que no pueden realizarse en memoria, tales como ordenaciones o agrupaciones de conjuntos grandes de datos. Concepto de Extent (extensin)
Para cualquier objeto de base de datos que tenga cierta ocupacin en disco, es decir, cualquier objeto que tenga un segment relacionado, existe el concepto de extent. Extent es un espacio de disco que se reserva de una sola vez, un segmento que se reserva en un momento determinado de tiempo. El concepto de extent es un concepto fsico, unos estn separados de otros dentro del disco. Ya dijimos que todo objeto tiene su segmento asociado, pero lo que no dijimos es que este segmento, a su vez, se compone de distintas extensiones. Un segmento, puede ser reservado de una sola vez (10 Mb de golpe), o de varias veces (5 Mb hoy y 5 Mb maana). Cada una de las veces que se reserva espacio se denomina extensin.
En el esquema vemos como el objeto (tabla) FACTURA tiene un segmento en el datafile A-1, y este segmento est compuesto de 3 extensiones. Una de estas extensiones tiene un color distinto. Esto es porque existen dos tipos de extensiones: INITIAL (extensiones iniciales): estas son las extensiones que se reservan durante la creacin del objeto. Una vez que un objeto est creado, no se puede modificar su extensin inicial.
NEXT (siguientes o subsiguientes extensiones): toda extensin reservada despus de la creacin del objeto. Si el INITIAL EXTENT de una tabla est llena y se est intentando insertar ms filas, se intentar crear un NEXT EXTENT (siempre y cuando el datafile tenga espacio libre y tengamos cuota de ocupacin suficiente). Sabiendo que las extensiones se crean en momentos distintos de tiempo, es lgico pensar que unas extensiones pueden estar fragmentadas de otras. Un objeto de base de datos no reside todo junto dentro del bloque, sino que residir en tantos bloque como extensiones tenga. Por eso es crtico definir un buen tamao de extensin inicial, ya que, si es lo suficientemente grande, el objeto nunca estar fragmentado.
Si el objeto tiene muchas extensiones y stas estn muy separadas en disco, las consultas pueden retardarse considerablemente, ya que las cabezas lectoras tienes que dar saltos constantemente.
El tamao de las extensiones (tanto las INITIAL como las NEXT), se definen durante la creacin del objeto y no puede ser modificado despus de la creacin. Oracle recomienda que el tamao del INITIAL EXTENT sea igual al tamao del NEXT EXTENT.
La mejor solucin es calcular el tamao que tendr el objeto (tabla o ndice), multiplicando el tamao de cada fila por una estimacin del nmero de filas. Cuando hemos hecho este clculo, debemos utilizar este tamao como extensin INITIAL y NEXT, y tendremos prcticamente la certeza de que no se va a producir fragmentacin en ese objeto. En caso de detectar ms de 10 extensiones en un objeto (consultando el catlogo de Oracle, como veremos), debemos recrear el objeto desde cero (aplicando el clculo anterior) e importar de nuevo los datos.
Ciertas operaciones, necesitan de espacio en disco para poder realizarse. El espacio reservado se denomina segmentos temporales. Se pueden crear segmentos temporales cuando: Se crea un ndice Se utiliza ORDER BY, DISTINTC o GROUP BY en un SELECT. Se utilizan los operadores UNION, INTERSECT o MINUS. Se utilizan joins entre tablas. Se utilizan subconsultas. Concepto de Data block (bloque de datos)
Un data block es el ltimo eslabn dentro de la cadena de almacenamiento. El concepto de Data block es un concepto fsico, ya que representa la mnima unidad de almacenamiento que es capaz de manejar Oracle. Igual que la mnima unidad de almacenamiento de un disco duro es la unidad de asignacin, la mnima unidad de almacenamiento de Oracle es el data block. En un disco duro no es posible que un fichero pequeo ocupe menos de lo que indique la unidad de asignacin, as si la unidad de asignacin es de 4 Kb, un fichero que ocupe 1 Kb, en realidad ocupa 4 Kb.
Siguiendo con la cadena, cada segmento (o cada extensin) se almacena en uno o varios bloques de datos, dependiendo del tamao definido para el extensin, y del tamao definido para el data block.
(*) Espacio ocupado en el data block por la primera NEXT EXTENSION. (#) Espacio ocupado en unidades de asignacin del sistema operativo por los data blocks anteriores.
El esquema muestra toda la cadena de almacenamiento de Oracle.
Desde el nivel ms fsico al ms lgico: Unidades de asignacin del sistema operativo (El ms fsico. No depende de Oracle) Data blocks de Oracle Extents Segments DataFiles Tablespaces (El ms lgico) El tamao de las unidades de asignacin del sistema operativo se define durante el particionado del disco duro (FDISK, FIPS), y el espacio de los data blocks de Oracle se define durante la instalacin y no puede ser cambiado.
Como es lgico, el tamao de un data block tiene que ser mltiplo del tamao de una unidad de asignacin, es decir, si cada unidad de asignacin ocupa 4 K, los data blocks pueden ser de 4K, 8K, 12K para que en el sistema operativo ocupen 1, 2, 3 unidades de asignacin.
Esquema extrado del Oracle8 Concepts
Estructuras de memoria
Todas las estructura que hemos visto se refieren a cmo se almacenan los datos en el disco. Sin embargo, y como es lgico, Oracle tambin utiliza la memoria del servidor para su funcionamiento. Oracle utiliza dos tipos de memoria
Memoria local y privada para cada uno de los procesos: PGA (Process Global Area o Program Global Area).
Memoria comn y compartida por todos los procesos SGA (System Global Area o Shared Global Area). Cada vez que se conecta un cliente al servidor, se ejecuta un subproceso que atender sus peticiones (a travs del fork en Unix o con CreateThread en el mundo Windows), y este subproceso crear un nuevo bloque de memoria de tipo PGA. El tamao de este bloque de memoria depender del sistema operativo, y permanece invariable, aunque se puede configurar cambiando el valor de la variable SORT_AREA_SIZE del archivo de inicializacin INIT.ORA.
Por cada instancia de base de datos, tendremos una zona de memoria global, el SGA, donde se almacenan aquellos datos y estructuras que deben se compartidos entre distintos procesos de la base de datos, como los procesos propios de Oracle y cada uno de los subprocesos que gestionan la conexin. El tamao del SGA es uno de los puntos ms crticos a la hora de mejorar el rendimiento de una base de datos, ya que, cuanto mayor memoria se reserve (mientras no sea memoria virtual), ms rpidas se realizarn ciertas operaciones. Por ejemplo, las ordenaciones (una de las operaciones que ms rpido deben hacerse) se realizan en el SGA si hay espacio suficiente. En caso contrario, se realizarn directamente en el disco, utilizando segmentos temporales.
El SGA se divide en cuatro grandes zonas:
Database buffer cache: almacena los bloques que se han ledo de los datafiles. Cada vez que es necesario acceder a un bloque, se busca el bloque en esta zona, y en caso de no existir, se lee de nuevo del datafile correspondiente. Cuantos ms bloques quepan en esta zona de memoria, mejor ser el rendimiento. SQL Area: es la zona de memoria se almacenan compiladas las ltimas sentencias SQL (y bloques PL/SQL) ejecutadas. Adems se almacenan las variables acopladas (bind), el rbol de parsing, los buffer de ejecucin y el plan de ejecucin. Es importante que siempre que se utilice la misma sentencia, sea exactamente igual, para poder aprovechar sentencias previas almacenadas en el SQL Area. Es decir, las siguientes sentencias: SELECT * FROM TABLA
select * from tabla SELECT * FROM TABLA SELECT * FROM tabla
Se consideran distintas y no se aprovecha el SQL Area. Debe coincidir el texto exactamente, considerando maysculas y minsculas, espacios, retornos de carro, nombre de parmetros, etc. Esto es debido a que se buscan dentro del SQL Area utilizando un hash de la sentencia, y un simple espacio (o cambiar una letra a maysculas) hace que el hash resultante sea distinto, por lo que no encontrar la sentencia dentro del SQL Area. Cuanto mayor sea el espacio del SQL Area, se realizarn menos compilaciones, planes de ejecucin y anlisis lxicos, por lo que la ejecucin de las consultas ser ms rpida.
Redo cache: almacena los registros de redo de las ltimas operaciones realizadas. Estos registros se almacenan en los archivos de redo, que sirven para recomponer la base de datos en caso de error. Dictionary cache: almacena datos del diccionario de Oracle, para utilizarlos en los planes de ejecucin, optimizacin de consultas, etc. Cuantos ms datos quepan en esta zona, mayor probabilidad habr de que el dato que necesitamos ya est en memoria, y no sea necesario acceder a las tablas del diccionario para leerlo. Archivos de inicializacin
Adems de estructuras de disco y de memoria, un servidor Oracle necesita ciertos archivos para poder ejecutarse. Estos archivos se establecen durante la creacin de la base de datos, y se consultarn cada vez que se arranque la base de datos, por lo que deben estar disponibles. Bsicamente podemos diferencias los tipos de archivos: Control files: son archivos de control que se consultan cada vez que se arranca la base de datos. Indica datos como la localizacin de los datafiles, nombre de la base de datos. Init file: es el archivo que contiene los parmetro de inicio de la base de datos (tamao del bloque, tamao del SGA, etc.). Normalmente tiene el nombre INIT.ORA Redo logs: estos archivos contienen un historial de todas las instrucciones que han sido lanzadas a la base de datos, para poder recuperarla en caso de fallo. No se utilizan durante la inicializacin, sino durante toda la ejecucin de la base de datos. 0 comentarios Enviar por correo electrnicoEscribe un blogCompartir con TwitterCompartir con FacebookCompartir en Pinterest Componentes de una Base de Datos Componentes de las Bases de Datos
Una base de datos consta de varios componentes:
a) Motor: el programa ejecutable que debe estar en memoria para manejar la base de datos. Cuando este programa est ejecutndose se dice que la base de datos est levantada (//startup//), en caso contrario se dice que la base de datos est bajada (//shutdown//).
b) Servicio de red: Es un programa que se encarga de establecer las conexiones y transmitir datos entre cliente y servidor o entre servidores.
c) //Listener// (escuchador): Es un programa residente en memoria que se encarga de recibir las llamadas que llegan a la base de datos desde la red, y de pasrselas a esta. Una base de datos que no tenga un //listener// cargado, no podr recibir llamadas remotas. El //listener// se comunica con el servicio de red.
d) Utilidades: Programas de utilidad como pueden ser: Intrpretes de consultas. Programas de administracin de base de datos. Programas de copia de seguridad. Monitores de rendimiento.
A todo el conjunto de la base de datos se le denomina RDBMS: Relational DataBase Manager System, decir: Sistema de gestin de bases de datos relacionales.
El primer fabricante en disear un RDBMS fue IBM, aunque fue Oracle, en 1979, la primera empresa hacer una implementacin comercial de un sistema de bases de datos relacionales. 0 comentarios Enviar por correo electrnicoEscribe un blogCompartir con TwitterCompartir con FacebookCompartir en Pinterest Administracin de Usuarios en Oracle Administracin de Usuarios en Oracle 1. Creacion de Usuarios
Una de las ms bsicas tareas de un administrador de base de datos es identificar los usuarios. Cada usuario que conecta en la base de datos debe de tener una cuenta. En las cuentas compartidas son difciles de aplicar una auditoria. Para crear un usuario utilizamos la sentencia CREATE USER. Cuando creas una cuenta como mnimo tienes que asignar un nico nombre (username) y una contrasea para poder autenticarse. Para cambiar alguno de los atributos que se le ha aadido al usuario creado se utiliza la sentenciaALTER USER.
2. Autenticacin Oracle
Cuando uno se conecta con una instancia de una base de datos la cuenta de usuario debe de estar autenticada. ORACLE provee tres mtodos de autenticacin para nuestra cuenta de usuario.
AUTENTICACIN MEDIANTE PASSWORD
Cuando un usuario conecta con una base de datos verifica que este usuario y la contrasea introducida almacenada en la base de datos, sea correcta. Las contraseas se guardan encriptadas en la base de datos (en el data dictionary).
SQL > CREATE USER david IDENTIFIED BY tititus;
En este caso tititus es la contrasea de david que ser guardada encriptada en la base de datos.
2.1 Autenticacin Externa
Cuando un usuario conecta con la base de datos se verifica que el nombre de usuario es el mismo que el nombre de usuario del sistema operativo para permitir la validacin.
No se almacenan las cuentas en la base de datos de ninguna forma. Estas cuentas estn siempre referidas con OPS$ .A partir de la versin 10g puedes configurar OS_AUTHENT_PREFIX en el spfile
SQL > CREATE USER ops$david IDENTIFIED BY tititus;
Mediante IDENTIFIED EXTERNALLY decimos a la base de datos que nuestra cuenta es externa y tiene que ser validada con el sistema operativo.
2.2 Autenticacin Global
Cuando un usuario se conecta con la base de datos se verifica globalmente cuando la informacin pasa por una opcin avanzada de seguridad ( ADVANCED SECURITY OPTION ) para la autenticacin tal como Kerberos, RADIUS. Para las cuentas globales no se almacena tampoco nada en la base de datos.
SQL > CREATE USER david IDENTIFIED GLOBALLY AS CN=alumnos,OU=campus .
Mediante IDENTIFIED GLOBALLY decimos a la base de datos que nuestra cuenta se autentica globalmente, mediante otra opcin de seguridad avanzada.
3. Asignaciones a los Usuarios
3.1 ASIGNACIN DE UN USUARIO A UN TABLESPACE ( DEFAULT TABLESPACE )
Mediante esta sentencia asignamos un usuario a un tablespace, este ser su tablespace por defecto cuando creamos un usuario.
SQL > CREATE USER david IDENTIFIED BY tititus DEFAULT TABLESPACE users;
Mediante esta sentencia, en caso de tener creado ya el usuario le asignamos un tablespace.
SQL > ALTER USER david DEFAULT TABLESPACE users;
La base de datos toma un tablespace por defecto, en caso de querer cambiar este tablespace utilizamos la siguiente sentencia
SQL > ALTER DATABASE DEFAULT TABLESPACE users;
3.2 ASIGNACIN DE UN USUARIO A UN TABLESPACE TEMPORAL
Un tablespace temporal se utiliza para almacenar segmentos temporales que son creados durante operaciones como ORDER BY,SELECT DISTINCT, MERGE JOIN o CREATE INDEX.A veces a los usuarios se les asocia un tablespace temporal para realizar este tipo de operaciones, cuando estas operaciones finalizan este segmento temporal que se ha creado exclusivamente para la operacin desaparece.
SQL > CREATE USER david IDENTIFIED BY tititus DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
Mediante TEMPORARY TABLESPACE asignamos como tablespace temporal temp al usuario david. En caso de que el usuario est creado si queremos asignarle un tablespace temporal utilizamosALTER USER
SQL > ALTER USER david TEMPORARY TABLESPACE Temp;
3.3 ASIGNACIN DE UN PERFIL A UN USUARIO
Al igual que podemos asignar un tablespace a un usuario, tambin podemos asignarle un perfil (profile). El principal perfil ( profile ) por defecto se denomina default. Si el usuario no est lo podemos crear de la siguiente forma:
SQL > CREATE USER david IDENTIFIED BY tititus DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp PROFILE resource_profile;
En caso de que el usuario ya est creado al igual que en los anteriores casos utilizamos la sentencia ALTER USER.
SQL > ALTER USER david PROFILE resource_profile;
3.4 BORRADO DE UN USUARIO
Para borrar un usuario utilizamos la sentencia DROP USER, podemos opcionalmente incluir la opcin CASCADE, se utiliza para borrar recursivamente los objetos del usuario que se pretende borrar.
SQL > DROP USER david CASCADE
3.5 OTORGANDO PRIVILEGIOS (GRANTING)
A un usuario podemos otorgarle una serie de privilegios. Un privilegio permite a un usuario acceder a ciertos objetos o realizar ciertas acciones: Privilegios sobre Objetos ( Object privileges ) a permisos sobre vistas, tablas, secuencias, procedimientos, paquetes. Privilegios del Sistema ( System privileges ) a permisos sobre niveles de la base de datos como pueden ser conexin a la base de datos, creacin de usuarios, limitar cuentas. Privilegios sobre Roles ( Role privileges ) a muchos permisos son otorgados mediante roles agrupando un conjunto de privilegios. Para otorgar privilegios utilizamos la sentenciaGRANT, para quitar un privilegio o permiso a un usuario utilizamos la sentencia REVOKE EJEMPLOS
Privilegio sobre una tabla:
SQL > GRANT ALL ON tabla_alumnos TO david
Siendo tabla_alumnos una tabla de nuestra base de datos y david un usuario de esta, hemos asignado mediante GRANT ALL,todos los permisos al usuario david sobre esta tabla.
GRANT ALL = permisos SELECT, INSERT, UPDATE, DELETE
Si queremos asignar slo uno de estos permisos utilizamos la misma sentencia pero con el permiso que queramos otorgar.
SQL > GRANT SELECT ON tabla_alumnos TO david SQL > GRANT SELECT,INSERT ON tabla_alumnos TO david
Privilegio sobre una vista:
Para el caso de las vistas podemos a un usuario otorgar permisos SELECT, INSERT, UPDATE, DELETE, DEBUG, REFERENCES. Siendo vista_alumnos una vista de nuestra base de datos y david un usuario de esta: Otorgamos al usuario david todos los permisos sobre la vista vista_alumnos.
SQL > GRANT ALL ON vista_alumnos TO david
Otorgamos al usuario david algunos permisos sobre la vista_alumnos
SQL > GRANT SELECT ON vista_alumnos TO david SQL > GRANT SELECT,INSERT ON vista_alumnos TO david
Privilegio sobre una secuencia:
Con las secuencias pasa lo mismo que con los anteriores objetos vistos, para otorgar permisos se utiliza GRANT. Los permisos que podemos otorgar a una secuencia es SELECT o ALTER.
Privilegio sobre un paquete,funcin o procedimiento:
Los permisos que podemos otorgar a las funciones, paquetes o procedimientos almacenados en nuestra base de datos son los siguientes: EXECUTE, DEBUG.
3.6 QUITANDO PRIVILEGIOS
Si queremos quitar un privilegio a uno de estos objetos haremos lo mismo que con GRANT pero utilizando la sentencia REVOKE. 0 comentarios Enviar por correo electrnicoEscribe un blogCompartir con TwitterCompartir con FacebookCompartir en Pinterest Administracin Bsica y Seguridad en Oracle Administracin Bsica y Seguridad en Oracle
===== Concepto de usuario, privilegio y rol: =====
A la hora de establecer una conexin con un servidor Oracle, es necesario que utilicemos un modo de acceso, el cual describa de qu permisos dispondremos durante nuestra conexin. Estos permisos se definen sobre un nombre de usuario. Un usuario no es ms que un conjunto de permisos que se aplican a una conexin de base de datos. As mismo, el usuario tambin tiene otras funciones: Ser el propietario de ciertos objetos. Definicin del //tablespace //por defecto para los objetos de un usuario. Copias de seguridad. Cuotas de almacenamiento. Un privilegio no es ms que un permiso dado a un usuario para que realice cierta operacin. Estas operaciones pueden ser de dos tipos: Operacin de sistema: necesita el permiso de sistema correspondiente. Operacin sobre objeto: necesita el permiso sobre el objeto en cuestin. Y por ltimo un rol de base de datos no es ms que una agrupacin de permisos de sistema y de objeto.
===== Creacin de usuarios =====
La creacin de usuarios se hace a travs de la sentencia SQL CREATE USER Su sintaxis bsica es:
CREATE USER nombre_usuario IDENTIFIED [ BY clave | EXTERNALLY ] { DEFAULT TABLESPACE tablespace_por_defecto } { TEMPORARY TABLESPACE tablespace_temporal } { DEFAULT ROLE [ roles, ALL [EXCEPT roles], NONE ] };
La clusula IDENTIFIED BY permite indicar el tipo de autorizacin que se utilizar: Interna de Oracle: una clave para cada usuario de base de datos. Interna del SO: utilizando la seguridad del SO.
La clusula DEFAULT TABLESPACE ser el //tablespace //por defecto en la creacin de objetos del usuario que estamos creando. Si se omite se utilizar el //tablespace// SYSTEM.
La clusula TEMPORARY TABLESPACE indica el //tablespace //que se utilizar para la creacin de objetos temporales en la operaciones internas de Oracle. Si se omite se utilizar el //tablespace //SYSTEM.
La clusula DEFAULT ROLE permite asignar roles de permisos durante la creacin del usuario.
Ejemplos:
CREATE USER ADMINISTRADOR IDENTIFIED BY MANAGER DEFAULT TABLESPACE SYSTEM TEMPORARY TABLESPACE TEMPORARY_DATA DEFAULT ROLE DBA;
CREATE USER PEPOTE IDENTIFIED BY TORO;
CREATE USER JUANCITO IDENTIFIED BY PEREZ DEFAULT TABLESPACE DATOS_CONTABILIDAD TEMPORARY TABLESPACE TEMPORARY_DATA;
===== Creacin de roles =====
La creacin de roles permite asignar un grupo de permisos a un usuario, y poder modificar este grupo de permisos sin tener que ir modificando todos los usuarios. Si asignamos un rol con 10 permisos a 300 usuarios, y posteriormente aadimos un permiso nuevo al rol, no ser necesario ir aadiendo este nuevo permiso a los 300 usuarios, ya que el rol se encarga automticamente de propagarlo. La sintaxis bsica es:
Una vez que el rol ha sido creado ser necesario aadirle permisos a travs de instruccin GRANT.
Inicialmente Oracle tiene predefinidos los siguiente roles (entre otros):
|| Rol predefinido || Descripcin || || CONNECT || Todos los permisos necesarios para iniciar una sesin en Oracle || || RESOURCE || Todos los permisos necesarios para tener recursos para la creacin || || || de objetos || || DBA || Todos los permisos para un administrador de base de datos (DBA) || || EXP_FULL_DATABASE || Permisos para poder exportar toda la base de datos. || || IMP_FULL_DATABASE || Permisos para poder importar toda la base de datos. ||
Podemos decir que un usuarios normal, debe tener al menos los permisos de CONNECT (para conectarse) y de RESOURCE (para poder crear objetos).
Ejemplos:
CREATE ROL CONTROL_TOTAL; CREATE ROL BASICO; CREATE ROL ACCESO_CONTABILIDAD;
Privilegios de sistema
Ya hemos dicho que los privilegios de sistema son permisos para realizar ciertas operaciones en la base de datos. El modo de asignar un privilegio es a travs de la instruccin GRANT y el modo de cancelar un privilegio es a travs de la instruccin REVOKE. La sintaxis bsica de ambas instrucciones es:
===== Instruccin GRANT =====
GRANT [privilegios_de_sistema | roles] TO [usuarios | roles |PUBLIC] { WITH ADMIN OPTION };
Es posible dar ms de un privilegio de sistema o rol, separndolos por comas. Tambin es posible asignarle uno (o varios) privilegios a varios usuarios, separndolos por comas. Si se le asigna el privilegio a un rol, se asignar a todos los usuarios que tengan ese rol. Si se asigna el privilegio a PUBLIC, se asignar a todos los usuarios actuales y futuros de la base de datos. La clusula WITH ADMIN OPTION permite que el privilegio/rol que hemos concedido, pueda ser concedido a otros usuarios por el usuario al que estamos asignando. La lista de los privilegios de sistema existentes se puede encontrar en el //Oracle8 SQL Reference// en la seccin GRANT (System privileges and roles).
Ejemplos:
GRANT DBA TO ADMINISTRADOR;
GRANT CREATE USER TO PEPOTE WITH ADMIN OPTION;
GRANT DROP USER TO JUANCITO;
GRANT CONNECT, RESOURCE TO PEPOTE, JUANCITO;
GRANT CONNECT, RESOURCE, DBA, EXP_FULL_DATABASE, IMP_FULL_DATABASE TO CONTROL_TOTAL;
GRANT CONTROL_TOTAL TO ADMINISTRADOR;
===== Instruccin REVOKE =====
REVOKE [privilegios_de_sistema | roles] FROM [usuarios | roles |PUBLIC];
Es posible eliminar ms de un privilegio de sistema o rol, separndolos por comas. Tambin es posible eliminar uno (o varios) privilegios a varios usuarios, separndolos por comas. Si se le elimina el privilegio de un rol, se eliminar de todos los usuarios que tengan ese rol. Si se elimina el privilegio de PUBLIC, se eliminar de todos los usuarios actuales y futuros de la base de datos. La lista de los privilegios de sistema existentes se puede encontrar en el //Oracle8 SQL Reference// en la seccin GRANT (System privileges and roles). Como es lgico, slo se podr eliminar un privilegio/rol, si previamente ha sido concedido a travs de la instruccin GRANT.
Ejemplos:
REVOKE DBA FROM ADMINISTRADOR;
REVOKE CREATE USER FROM PEPOTE;
REVOKE DROP USER FROM JUANCITO;
RECOKE CONNECT, RESOURCE FROM PEPOTE, JUANCITO;
REVOKE CONNECT, RESOURCE, DBA, EXP_FULL_DATABASE, IMP_FULL_DATABASE FROM CONTROL_TOTAL;
REVOKE CONTROL_TOTAL FROM ADMINISTRADOR;
===== Privilegios sobre objetos =====
Los privilegios sobre objetos permiten que cierto objeto (creado por un usuario) pueda ser accedido por otros usuarios. El nivel de acceso depende del permiso que le demos: podemos darle permiso de SELECT, de UPDATE, de DELETE, de INSERT o de todos ellos. La sintaxis bsica es:
GRANT [ALL {PRIVILEGES} | SELECT | INSERT | UPDATE | DELETE] ON objeto TO [usuario | rol | PUBLIC] {WITH ADMIN OPTION};
Al igual que con los permisos de sistema, es posible asignar un permiso de objeto sobre uno o varios (separados por comas) usuario y/o roles. Si se asigna a PUBLIC ser accesible en toda la base de datos.
Si se incluye la clusula WITH ADMIN OPTION, este permiso podr ser concedido por el usuario al que se le ha asignado.
Ejemplos:
GRANT ALL ON FACTURA TO CONTROL_TOTAL;
GRANT SELECT, UPDATE ON ALUMNO TO PEPOTE, JUANCITO WITH ADMIN OPTION;
GRANT SELECT ON PROFESOR TO PUBLIC;
GRANT SELECT ON APUNTE TO ACCESO_CONTABILIDAD;
El modo de eliminar permisos de objeto es con la instruccin REVOKE:
REVOKE [ALL {PRIVILEGES} | SELECT | INSERT | UPDATE | DELETE] ON objeto FROM [usuario | rol | PUBLIC] {WITH ADMIN OPTION};
Al igual que con los permisos de sistema, es posible asignar un permiso de objeto sobre uno o varios (separados por comas) usuario y/o roles. Si se asigna a PUBLIC ser accesible en toda la base de datos.
Si se incluye la clusula WITH ADMIN OPTION, este permiso podr ser concedido por el usuario al que se le ha asignado.
Ejemplos:
GRANT ALL ON FACTURA TO CONTROL_TOTAL;
GRANT SELECT, UPDATE ON ALUMNO TO PEPOTE, JUANCITO
WITH ADMIN OPTION;
GRANT SELECT ON PROFESOR TO PUBLIC;
GRANT SELECT ON APUNTE TO ACCESO_CONTABILIDAD;
===== Eliminacin de usuarios =====
La eliminacin de usuarios se hace a travs de la instruccin DROP USER. Su sintaxis es:
DROP USER usuario {CASCADE};
La clusula CASCADE permite borrar el usuario y todos los objetos que posea.