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

miércoles, 13 de junio de 2012

Oracle - Privilegios


  • Los privilegios son permisos para ejecutar sentencias SQL en particular o acceso a los distintos objetos que posea otros usuarios. 
  • Los privilegios dan acceso a los usuarios a los datos que no poseen. Los roles con grupos de privilegios que facilitan la administración de los privilegios. Pero los privilegios se pueden manejar de manera explícita en algunas circunstancias. 
  • Al crear un usuario, solo puede acceder a los objetos que el mismo a creado. 
  • Las sentencias para conceder o revocar privilegios son grant (conceder) y revoke (revocar) 

Los privilegios que pueden otorgarse sobre objetos son los siguientes:

Privilegio
Capacidades Otorgadas
select
Puede consultar a un objeto.
insert
Puede insertar filas en una tabla o vista. Puede especificarse las columnas donde se permite insertar dentro de la tabla o vista.
update
Puede actualizar filas en una tabla o vista. Puede especificarse las columnas donde se permite actualizar dentro de la tabla o vista.
delete
Puede borrar filas dentro de la tabla o vista.
alter
Puede alterar la tabla.
index
Puede crear índices de una tabla.
references
Puede crear claves ajenas que referencie a esta tabla.
execute
Puede ejecutar un procedimieto, paquete o función.
connect
Puede realizar la conexión a la base de datos
resource
Puede hacer lectura de recursos

La información de los privilegios otorgados se almacena en el diccionario de datos. Estos datos son accesibles a través de las siguientes vistas del diccionario de datos:

Vista
Contenidos
DBA_ROLES
Nombres de los roles y su estado del password.
DBA_ROLES_PRIVS
Usuarios a los que han sido otorgados roles.
DBA_SYS_PRIVS
Usuarios a los que han sido otorgados privilegios del sistema.
DBA_TAB_PRIVS
Usuarios a los que han sido otorgados privilegios sobre objetos.
DBA_COL_PRIVS
Usuarios a los que han sido otorgados privilegios sobre columnas de tablas.
ROLE_ROLE_PRIVS
Roles que han sido otorgados a otros roles.
ROLE_SYS_PRIVS
Privilegios de sistema que han sido otorgados a roles.
ROLE_TAB_PRIVS
Privilegios de tabla que han sido otorgados a roles.

Ejemplos de privilegios

Sintaxis
Acción
grant connect to 'nicolas':
Permite que el usuario nicolas conectarse a la base de datos.
grant resource to 'nicolas':
Perte al usuario nicolas hacer lectura de los recursos.
grant select on otratabla to nicolas;
Permite al usuario nicolas realizar un select en la tabla otratabla.
grant insert on otratabla to nicolas;
Permite al usuario nicolas realizar un insert en la tabla otratabla.
grant update on otratabla to nicolas;
Permite al usuario nicolas realizar un update en la tabla otratabla.
grant delete on otratabla to nicolas;
Permite al usuario nicolas realizar un delete en la tabla otratabla.
grant execute on mifuncion to nicolas;
Permite al usuario nicolas ejecutar la función mifuncion.
select *
from dba_tab_privs
where grantee = 'nicolas';
Lista los privilegios que el usuario nicolas tiene en el sistema.

Puede ser que en algún momento nos arroje algún error o excepción, de ser así podríamos intentar con <otro-usuario>.<tabla>, por ejemplo:
grant select on pedro.usuarios to nicolas;
Lo que permite al usuario nicolas hacer un select de la tabla usuarios perteneciente al usuario pedro.

Es importante tener en cuenta que normalmente no se ocupan los privilegios a un usuario específico, si no que a roles, producto que por ejemplo tenemos 10 usuarios, perteneciente al rol vendedor, y nosotros aplicamos el privilegio al rol vendedor. Ejemplo:
create role ROLE_VENDEDOR;
grant insert on ventas to ROLE_VENDEDOR;

martes, 10 de abril de 2012

Oracle - Instalación Oracle 10g XE

Oracle 10g es un sistema de gestión de base de datos objeto-relacional (o ORDBMS por el acrónimo en inglés de Object-Relational Data Base Management System), desarrollado por Oracle Corporation. Se considera a Oracle como uno de los sistemas de bases de datos más completos, destacando:

  • soporte de transacciones,
  • estabilidad,
  • escalabilidad y
  • Soporte multiplataforma.
Si por alguna razón debemos instalar la base de datos de Oracle, existe una forma bastante sencilla para hacer esto.

Lo primero es instalar las dependencias:
$sudo aptitude install binutils autoconf automake bzip2 doxygen gcc less libc6-dev make libstdc++5 unzip zlibc build-essential libaio1
Despues de esto agregamos lo siguiente a /etc/apt/source.list
#Oracle
deb http://oss.oracle.com/debian unstable main non-free
Ahora debemos instalar su llave, escribiendo en consola.
$sudo wget http://oss.oracle.com/el4/RPM-GPG-KEY-oracle -O- | apt-key add -
Despues de agregar esto, debemos actualizar el sistema
#aptitude update
Con el sistema actualizado, instalamos Oracle
$sudo aptitude install oracle-xe-universal
Ahora configuramos oracle (tarda un poco)
$sudo /etc/init.d/oracle-xe configure
Finalmente agregamos nuestro usuario al grupo dba
$sudo gpasswd -a usuario dba
Donde usuario lo cambiamos por el nombre de nuestro usuario

Con esto ya tenemos todo listo, luego nos podremos dar cuenta, si hacemos clic en aplicaciones veremos la sección de Oracle.