Вы находитесь на странице: 1из 24

Privilegios y Usuarios en Oracle

1. Crear Usuarios y asignar privilegios en Oracle



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:

CREATE ROLE nombre_rol { [NOT IDENTIFIED | IDENTIFIED [BY clave |
EXTERNALLY };

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.

Вам также может понравиться